Converted site from CMS to Hugo
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..03acc85
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+# Hugo generated
+/resources
+/target
+
+# IntelliJ generated
+*.iml
+.idea
+.java-version
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..767dc6e
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,7 @@
+ Apache Directory
+ Copyright 2020 The Apache Software Foundation
+
+================================================================================
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6ed5828
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# Apache Directory website
+
+This is the source code for the website of [Apache Directory](https://directory.apache.org/), hosted at:
+
+ https://directory.apache.org/
+
+## Repository structure
+
+This repository uses 2 branches for serving the website.
+- The `master` branch, which contains all the sources for the website.
+- The `asf-site` branch, which contains the generated website being used for the actual website.
+
+When contributing patches, apply them to the `master` branch. Jenkins will then regenerate the website
+and commit the changes to the `asf-site` branch.
+
+## Content Management System
+
+The website uses Hugo as static website generator.
+See [Hugo](https://gohugo.io/) for more info and for details how to install Hugo.
+
+## Generate the website
+
+To generate the static website, execute `hugo` to generate and serve the website on `localhost:1313`.
+
+During development, it may be useful to run an incremental build. For this to work, execute `hugo server -D` to
+continuously generate and serve the website on `localhost:1313`.
+
+## Publish the website
+
+Jenkins is used for generating the website and committing the generated site to the `asf-site` branch.
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..00e77bd
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..7e8e0d0
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,44 @@
+baseURL = "https://directory.apache.org"
+title = "Apache Directory"
+languageCode = "en"
+
+contentDir = "source"
+publishDir = "target/content"
+
+disablePathToLower = true
+uglyURLs = true
+enableRobotsTXT = true
+disableBrowserError = true
+timeout = 3000
+
+disableKinds = ["taxonomy", "taxonomyTerm"]
+ignoreFiles = [ ] # No files to ignore
+
+# Highlighting config. See https://help.farbox.com/pygments.html
+pygmentsCodeFences = true
+pygmentsUseClasses = false
+pygmentsStyle = "emacs"
+
+# Enable Git variables like commit, lastmod
+enableGitInfo = true
+
+[markup.goldmark.renderer]
+unsafe= true
+
+[blackfriday]
+# hrefTargetBlank = true # We don't want everything opened in a new window
+fractions = false
+
+[frontmatter]
+date = ["date", ":filename", "publishDate", "lastmod"]
+
+[params]
+version_apacheds = "2.0.0.AM26"
+version_api = "1.0.3"
+version_api2 = "2.0.1"
+version_fortress = "2.0.5"
+version_kerby = "2.0.1"
+version_mavibot = "1.0.0-M8"
+version_scimple = "1.0.0"
+version_studio = "2.0.0.v20180908-M14"
+version_studio_name = "2.0.0-M14"
diff --git a/content/apacheds/advanced-ug/0-community.mdtext b/content/apacheds/advanced-ug/0-community.mdtext
deleted file mode 100644
index e9fff18..0000000
--- a/content/apacheds/advanced-ug/0-community.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 0 - Community
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 0.1-reporting-bugs.html
-NavNextText: 0.1. Reporting Bugs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 0 - Community
-This chapter explains how to work with the community around the project. The ASF is a community of volunteers, most of them working out of their working time to get the best possible software available to the users, for free.
-
-As a community, we appreciate feedbacks, bug reports, even criticisms, but we value contributions as the best way to make this collaborative work a better software.
-
-
-# Table of content
-
-* [0.1. Reporting Bugs](0.1-reporting-bugs.html)
-* [0.2. Building trunks](0.2-building-trunks.html)
-* [0.3. Contributing](0.3-contributing.html)
diff --git a/content/apacheds/advanced-ug/0.1-reporting-bugs.mdtext b/content/apacheds/advanced-ug/0.1-reporting-bugs.mdtext
deleted file mode 100644
index e761b97..0000000
--- a/content/apacheds/advanced-ug/0.1-reporting-bugs.mdtext
+++ /dev/null
@@ -1,129 +0,0 @@
-Title: 0.1 - Reporting Bugs
-NavPrev: 0-community.html
-NavPrevText: 0 - Community
-NavUp: 0-community.html
-NavUpText: 0 - Community
-NavNext: 0.2-building-trunks.html
-NavNextText: 0.2 - Building Trunks
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 0.1 - Reporting Bugs
-
-So you found a bug in ApacheDS. Don't worry this is a good thing! We can fix it but need your help. There are different degrees to your ability to help out. Some of you have developer skills so you might be able to write a test case that pin points that bug.
-
-This wiki page shows you how you can help us to help you.
-
-## Creating a testcase project: using the apacheds-archetype-testcase.
-
-We've created a simple archetype for you to rapidly create a Maven project that fires up ApacheDS in embedded mode within a JUnit testcase. This test case will start up ApacheDS as a server on any available port above 1024 on your machine. You can then use JNDI or the Apache LDAP API going over the wire on that port above 1024. You can also use the ApacheDS core API to access the data directly.
-
-So you can write client code in your test case immediately. Just add your code, tar gzip the project, and attach it to your JIRA issue on the ApacheDS JIRA here:
-
- [https://issues.apache.org/jira/browse/DIRSERVER]
-
-We'll prioritize your bug higher than others and probably fix it rapidly because the problem is isolated thanks to your testcase submission. We will in fact strip out your testcase and add it to our suite of test cases to make sure ApacheDS always passes this integration test you've provided.
-
-### Installing the apacheds-archetype-testcase
-
-To use the archetype you'll need to check it out and install it. Here's how you can do that for the leading edge of 2.0.0:
-
-
- svn co http://svn.apache.org/repos/asf/directory/documentation/samples/trunk/apacheds-archetype-testcase
- cd apacheds-archetype-testcase
- mvn install
-
-This will install the archetype onto your local repository. Now you can invoke the archetype.
-
-h3. Invoking (running) the archetype: generating the testcase project
-
-Once you checkout the archetype plugin and install it you can use it like so to generate a foo-test project:
-{noformat}
-mvn archetype:generate -DarchetypeGroupId=org.apache.directory.samples \
- -DarchetypeArtifactId=apacheds-archetype-testcase \
- -DarchetypeVersion=1.5.5-SNAPSHOT \
- -DgroupId=com.acme -DartifactId=foo-test -Dpackage=com.acme
-{noformat}
-This will generate the default test case project with the following tree structure:
-{noformat}
-~/foo-test$ tree
-.
-|-- pom.xml
-`-- src
- |-- main
- | `-- java
- | `-- com
- | `-- acme
- | `-- Dummy.java
- `-- test
- |-- java
- | `-- com
- | `-- acme
- | |-- AdvancedTest.java
- | |-- AdvancedTestApacheDsFactory.java
- | `-- MinimalTest.java
- `-- resources
- |-- log4j.properties
- |-- sevenSeas_data.ldif
- `-- sevenSeas_schema.ldif
-
-10 directories, 8 files
-{noformat}
-* Dummy.java - this is just a placeholder file to make sure that Maven works properly.
-* MinimalTest - a minimal ApacheDS Integration Test. It contains two test methods to demonstrate usage of JNDI and the ApacheDS core API. Add your own test method here.
-* AdvancedTest - an advanced ApacheDS Integration Test in case you need a special configuration for your test. It demonstrates how to add a new partition, how to enable LDAPS, how to enable a disabled schema, how to inject a custom schema, and how to inject custom test data.
-* AdvancedTestApacheDsFactory - configures ApacheDS for the advanced test
-* pom.xml - the Maven Project Object Model (POM) for your new testcase project (can remain as is).
-* log4j.properties - Log4j configuration file that controls ApacheDS logging for your convenience; edit this file to control logging output.
-* sevenSeas_data.ldif - sample custom test data used by the advanced test.
-* sevenSeas_schema.ldif - sample custom schema used by the advanced test.
-
-Once you do this you can cd into foo-test and just build and test it for fun to see what happens. This will build, and test the sample test cases (they should pass) that comes packaged with the project you just created. CD into foo-test and run the following command:
-{noformat}
-mvn test
-{noformat}
-Now you can customize the MinimalTest.java or AdvancedTest.java file to isolate your bug. Open the classes with your favorite editor and goto town. However if you want to pull this project into your IDE and edit it there you can use Maven's IDEA, Eclipse and Netbeans integration to create IDE project descriptors for them. Then you can import this project into your IDE. Here's how:
-
-h4. For IDEA
-
-{noformat}
-mvn idea:idea
-{noformat}
-
-h4. For Eclipse
-
-{noformat}
-mvn eclipse:eclipse
-{noformat}
-
-h4. For Netbeans
-
-See this page: [http://maven.apache.org/guides/mini/guide-ide-netbeans/guide-ide-netbeans.html].
-
-h3. Note about version
-
-Note that this archetype is specific for ApacheDS 1.5.5.
-
-h2. Why a Maven Archetype for Testing?
-
-# Easy and fast to start integration testing ApacheDS.
-# We (developers of ApacheDS) can use it ourselves.
-# We want users of ApacheDS to help us help them.
-# Users need to customize a project with perhaps additional dependencies.
-# Users can add many test cases to the project.
-# Tests isolating custom bugs can be incorporated into our community test suite for ApacheDS.
-
diff --git a/content/apacheds/advanced-ug/0.2-building-trunks.mdtext b/content/apacheds/advanced-ug/0.2-building-trunks.mdtext
deleted file mode 100644
index 6e60d01..0000000
--- a/content/apacheds/advanced-ug/0.2-building-trunks.mdtext
+++ /dev/null
@@ -1,331 +0,0 @@
-Title: 0.2 - Building Trunks
-NavPrev: 0.1-reporting-bugs.html
-NavPrevText: 0.1 - Reporting Bugs
-NavUp: 0-community.html
-NavUpText: 0 - Community
-NavNext: 0.3-contributing.html
-NavNextText: 0.3 - Contributing
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 0.2 - Building Trunks
-This page give some information about the layout of *Apache DS 2.0* trunks, and try to explain how it is built.
-
-[TOC]
-
-## Project Hierarchy
-
-The server is a composition of many projects, which should be built in a given order, assuming you want to build the trunk. This order is enforced by a top level pom, so you don't need to take care of this at all.
-
-We will expose the projects hierarchy, just for information.
-
-### Project project
-
-We first have a meta-project, which contains mainly information about the maven plugins we use. This meta-project is used by all the real projects. This project has one single module :
-
-* project
-
-### Checkstyle-Configuration project
-
-This project is used to define the checkstyle configuration we use when we generate the reports.
-
-It has one single module :
-
-* checkstyle-configuration
-
-_Dependencies_ : project
-
-## Junit-Addons project
-
-This project is used to add concurrent tests in the server. It's a fork of [Mycila](ref needed).
-
-It has one single module :
-
-* junit-addons
-
-_Dependencies_ : project
-
-### Apache Directory LDAP API project (formerly known as "Shared")
-
-This project contains all the common LDAP structures that are used by ApacheDS, Apache Studio and the Apache LDAP API. In fact, this is the Apache LDAP API (even if we do have slightly more than necessary for an LDAP API).
-
-This project depends on 'project'.
-
-Here is its hierarchy :
-
-* api-parent
- * api-i18n
- * api-util
- * api-asn1-parent
- * api-asn1-api
- * api-asn1-ber
- * api-ldap-parent
- * api-ldap-model
- * api-ldap-codec-parent
- * api-ldap-codec-core
- * api-ldap-net-parent
- * api-ldap-net-mina
- * api-ldap-codec-standalone
- * api-dsml-parent
- * api-dsml-parser
- * api-ldap-extras-parent
- * api-ldap-extras-aci
- * api-ldap-schema-parent
- * api-ldap-schema-data
- * api-ldap-client-parent
- * api-ldap-client-api
- * api-dsml-engine
- * api-ldap-extras-codec-api
- * api-ldap-extras-codec
- * api-ldap-extras-util
- * api-ldap-extras-sp
- * api-ldap-extras-trigger
- * api-ldap-schema-converter
- * api-all
- * api-ldap-client-all
- * api-integ
- * apache-ldap-api
-
-_Dependencies_ : project, junit-addons
-
-
-### JDBM project
-
-This project covers the JDBM code. It's a fork of the [JDBM 1.0 project](ref needed).
-
-The current project hierarchy is the following :
-
-* apacheds-jdbm-parent
- * apacheds-jdbm
- * apacheds-jdbm2
-
-_Dependencies_ : project, junit-addons
-
-### ApacheDS project
-This project is the server itself. It depends on 'project', 'shared' and 'jdbm'.
-
-The current project hierarchy is the following (as of 2.0.0-M9-SNAPSHOT) :
-
-* apacheds-parent
- * apacheds-i18n
- * apacheds-core-constants
- * apacheds-core-api
- * apacheds-core-shared
- * apacheds-interceptors
- * apacheds-interceptors-admin
- * apacheds-interceptors-authn
- * apacheds-interceptors-authz
- * apacheds-interceptors-changelog
- * apacheds-interceptors-collective
- * apacheds-interceptors-event
- * apacheds-interceptors-exception
- * apacheds-interceptors-journal
- * apacheds-interceptors-normalization
- * apacheds-interceptors-operational
- * apacheds-interceptors-referral
- * apacheds-interceptors-schema
- * apacheds-interceptors-subtree
- * apacheds-interceptors-triggers
- * apacheds-core
- * apacheds-core-avl
- * apacheds-xdbm-partition
- * apacheds-ldif-partition
- * apacheds-jdbm-partition
- * apacheds-core-annotations
- * apacheds-core-jndi
- * apacheds-protocol-shared
- * apacheds-kerberos-codec
- * apacheds-interceptor-kerberos
- * apacheds-protocol-dhcp
- * apacheds-protocol-dns
- * apacheds-protocol-kerberos
- * apacheds-protocol-ldap
- * apacheds-protocol-ntp
- * apacheds-server-annotations
- * apacheds-server-config
- * apacheds-server-jndi
- * apacheds-server-replication
- * apacheds-test-framework
- * apacheds-xdbm-tools
- * apacheds-all
- * apacheds-interceptors-logger
- * apacheds-interceptors-hash
- * apacheds-core-integ
- * apacheds-server-integ
- * apacheds-http-directory-bridge
- * apacheds-http-integration
- * apacheds-service-builder
- * apacheds-kerberos-test
- * ldap-client-test
- * apacheds-service
- * apacheds-wrapper
- * apacheds-installers-maven-plugin
- * apacheds-installers
-
-_Dependencies_ : project, junit-addons jdbm, shared,
-
-## Prerequisites for building
-
-You must have installed **Maven 3.0.4** and have a **JDK 5** (or a more recent one) installed on your computer. A working internet connection is also mandatory, unless you have all the needed dependences and plugins loaded locally.
-
-<DIV class="note" markdown="1">
-If the build hangs or you get an out of memory exception please increase the heap space:
-
-* For Linux:
-
- MAVEN_OPTS="-Xmx256m" mvn clean install
-
-* For Windows:
-
- SET MAVEN_OPTS="-Xmx256m"
- mvn clean install
-</DIV>
-
-### Maven
-
-[Download](http://maven.apache.org/download.html) and install Maven 3.0.4.
-
-Add a MAVEN_HOME environment variable and add MAVEN_HOME/bin to your system path:
-
-On a Linux box you could add the following to the .bashrc file (.bashrc is a file you'll find in your home directory)
-
-
- ...
- export MAVEN_HOME=/opt/maven-3.0.4
- export PATH=$JAVA_HOME:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
- ...
-
-Windows users, use Control Panel -> System -> Advanced -> Environment Variables
-
-### JDK 5
-
-<DIV class="note" markdown="1">
-There may be some issues with older JDK versions and Kerberos, therefore we recommend using a version >=1.5.0_09
-</DIV>
-
-Any newer version should also work.
-
-
-## Getting the code
-
-To download the sources from trunk, you must have installed a **Subversion** client.
-
-With readonly access :
-
- svn co http://svn.apache.org/repos/asf/directory/apacheds/trunk-with-dependencies apacheds-trunk
-
-With read/write access (for committers only) :
-
- svn co https://svn.apache.org/repos/asf/directory/apacheds/trunk-with-dependencies apacheds-trunk
-
-## Building the trunks
-
-You may either specify the profile at the command-line, each time you use 'mvn', or you may configure the profile to always be active.
-
-To use a profile at the command-line:
-
- # mvn -Papache [options] [<goal(s)>] [<phase(s)>]
-
-
-### Building the trunks
-
-Now, we can compile the projects.
-
-The command is simple :
-
- cd apacheds-trunk
- mvn clean install
-
-A lot of plugins will be downloaded. If you are curious, you can then look at .m2/repository to see what has been downloaded on this step.
-Building should finish with these lines:
-
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESSFUL
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 8 minutes 30 seconds
- [INFO] Finished at: Mon Oct 30 23:32:41 CET 2006
- [INFO] Final Memory: 18M/32M
- [INFO] ------------------------------------------------------------------------
-
-<DIV class="info" markdown="1">
-If you want to do really safe build, run the following commands in trunks:
-
- resources/superclean.sh
- mvn install -Dintegration
-</DIV>
-
-## Running the server without building installers
-
-The server can be run without building any installers. This is helpful during development
-(and also can be run for regular purpose as well)
-
- cd apacheds-trunk/apacheds/service
- ./apacheds.sh
-
-To start the server in remote debug mode pass -debug flag. The JDWP socket will be listening
-on port 8008.
-
-## Building the installers
-
-Building the installers is a two phase process :
-
- cd apacheds-trunk
- mvn -Pinstallers install
-
-That's it, the jars will be find in target/images/apacheds-2.0.0-M?-SNAPSHOT-<XXXXXX>-setup.jar where XXXXXX is your local system and M? is the milestone release number for the 2.0 branch.
-
-## Starting the server without installation
-
-The directory apacheds-trunk/installers/apacheds-noarch contains a script for Linux (apacheds.sh) and one for Windows (apacheds.bat) which can be used for starting the server without the need to install it first (as non-root-user on Linux and non-Windows-service on Windows).
-
-Linux:
-
- cd apacheds-trunk/installers/apacheds-noarch
- ./apacheds.sh
-
-## Eclipse
-
-As Apache Studio is an Eclipse plugin/RCP application, we use extensively this IDE. Of course, you can use another IDE.
-
-### Building eclipse files
-
-To build the .project and .classpath files for eclipse, type the following commands :
-
- cd apacheds-trunk
- mvn eclipse:eclipse
-
-### Maven settings
-
-Don't forget to declare a classpath variable named M2_REPO, pointing to ~/.m2/repository, otherwise many links to existing jars will be broken.
-
-You can declare new variables in Eclipse in _Windows -> Preferences..._ and selecting _Java -> Build Path -> Classpath Variables_
-
-### Eclipse hints
-
-Add an eclipse-apacheDS.sh file in your eclipse root directory, to allow eclipse to get more memory (e.g. 750MB)
-You may also declare a specific workspace when launching eclipse. I have created a workspace-apacheDS directory in my HOME directory, where all the ApacheDS project is built when I use Eclipse.
-
- <eclipse_root>/eclipse -data $HOME/workspace-apacheDS -vm java -vmargs -Xmx750M
-
-Launch eclipse :
-
- <eclipse_root>/eclipse-apacheDS.sh
-
-### Coding standards
-
-The coding standards including an eclipse code formatting profile is available [here](../coding-standards.html)
-
diff --git a/content/apacheds/advanced-ug/0.3-contributing.mdtext b/content/apacheds/advanced-ug/0.3-contributing.mdtext
deleted file mode 100644
index e88bf3a..0000000
--- a/content/apacheds/advanced-ug/0.3-contributing.mdtext
+++ /dev/null
@@ -1,53 +0,0 @@
-Title: 0.3 - Contributing
-NavPrev: 0.2-building-trunks.html
-NavPrevText: 0.2 - Building Trunks
-NavUp: 0-community.html
-NavUpText: 0 - Community
-NavNext: 1-architecture.html
-NavNextText: 1 - Architecture
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 0.3 - Contributing
-
-# Join the Apache Directory Community
-
-The Apache Directory Project is an [Open Source](http://www.opensource.org) volunteer project under the auspices of [The Apache Software Foundation (ASF)](http://www.apache.org). We welcome your input and contributions - either with direct participation (coding, documenting, answering questions, proposing ideas, reporting bugs, suggesting bug-fixes, etc..). You can also contribute to [The Apache Software Foundation (ASF)](http://www.apache.org) by [resource donations](http://apache.org/foundation/contributing.html) (money, time, publicity, hardware, software, conference presentations, speeches, etc...) of through [the sponsorship program](http://apache.org/foundation/sponsorship.html) .
-
-To begin with, we suggest you to subscribe to the [Directory Mailing Lists & IRC](https://directory.apache.org/mailing-lists-and-irc.html) (follow the link for information on how to subscribe and to access the mail list archives). Listen-in for a while, to see how others make contributions.
-
-Then you can :
-
-* Answer questions posted to the mailing lists.
-* Contribute to the FAQ or Wiki.
-* Contribute other documentation patches, either for the website or for the Apache Directory user documentation.
-* Investigate bugs that have been reported and provide patches where appropriate.
-* Help with development for the next release of the Directory project and subprojects.
-
-## What we are looking for
-
-* Source code and fixes contributions
-* Documentation assistance
-* Product and feature suggestions
-* Detailed and constructive feedback
-* Articles and white papers
-
-## How do I contribute
-
-* To discuss Apache Directory topics check out the [mailing lists](https://directory.apache.org/mailing-lists-and-irc.html).
-* Informal discussion also occurs on the [#apache-directory](irc://irc.freenode.net/apache-directory) Users IRC channel or on the [#apache-directory-dev](irc://irc.freenode.net/apache-directory-dev) Developers IRC channel on [freenode.net](http://freenode.net).
-* Bugs and other issues can be posted on the project [issue tracking system](https://directory.apache.org/issue-tracking.html).
diff --git a/content/apacheds/advanced-ug/1-architecture.mdtext b/content/apacheds/advanced-ug/1-architecture.mdtext
deleted file mode 100644
index 273b152..0000000
--- a/content/apacheds/advanced-ug/1-architecture.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 1 - Architecture
-NavPrev: 0.3-contributing.html
-NavPrevText: 0.3 - Contributing
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 1.1-architecture-overview.html
-NavNextText: 1.1 - Architectural Overview
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - Architecture
-
-We will now describe the server architecture, in order to give you a more deeper understanding of the way the server works.
-
-## Chapter content
-
-* [1.1 - Architectural Overview](1.1-architecture-overview.html)
-* [1.2 - Network Layer](1.2-network.html)
-* [1.3 - Directory-Service](1.3-directory-service.html)
-* [1.4 - Interceptors](1.4-interceptors.html)
-* [1.5 - Backend](1.5-backend.html)
diff --git a/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext b/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext
deleted file mode 100644
index d1bac49..0000000
--- a/content/apacheds/advanced-ug/1.1-architecture-overview.mdtext
+++ /dev/null
@@ -1,38 +0,0 @@
-Title: 1.1 - Architecture Overview
-NavPrev: 1-architecture.html
-NavPrevText: 1 - Architecture
-NavUp: 1-architecture.html
-NavUpText: 1 - Architecture
-NavNext: 1.2-network.html
-NavNextText: 1.2 - Network Layer
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1 - Architecture Overview
-
-The Apache Directory Server (aka *ApacheDS*) architecture has many different layers. The following schema expose the most important ones :
-
-![ApacheDS architecture](images/architecture.png)
-
-As we can see, we distinguish four different layers :
-
-* the network
-* the Session
-* the PartitionNexus
-* the Backends
-
-We will describe in detail those layers in the following chapters.
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/1.2-network.mdtext b/content/apacheds/advanced-ug/1.2-network.mdtext
deleted file mode 100644
index 72660f1..0000000
--- a/content/apacheds/advanced-ug/1.2-network.mdtext
+++ /dev/null
@@ -1,71 +0,0 @@
-Title: 1.2 - Newtork Layer
-NavPrev: 1.1-architecture-overview.html
-NavPrevText: 1.1 - Architecture Overview
-NavUp: 1-architecture.html
-NavUpText: 1 - Architecture
-NavNext: 1.3-directory-service.html
-NavNextText: 1.3 - DirectoryService
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2 - Network Layer
-
-This layer is the part the user connects to when he wants to obtain some data from the server. This is not a mandatory part of the server : we don't need to use it when the server is embedded.
-
-We offer more than just LDAP protocol, the server also include various protocols :
-
-* Kerberos
-* NTP
-* DHCP
-* DNS
-* ChangePassword
-
-Not all of them are implemented in the current version, but at least the Kerberos server is available. The other protocols have been developed as a proof of concept : as they are all depending upon a storage database, we have used the LDAP server as a storage.
-
-It's perfectly possible to imagine more protocols being implemented in the near future...
-
-## Server startup
-
-This chapter title is a bit misleading. We don't start a server, we start a _DirectoryService_, then we start various servers on top of it.
-The _DirectoryService_ is the part responsible for the management of data (retrieval, storage, etc). All the servers can access this storage if needed.
-
-So when the _DirectoryService_ has been started and is operational, we can start the various servers, which will accept incoming requests from remote peers.
-
-### Transports
-
-We allow connection through the definition of _transports_. A _Transport_ is a **TCP** or an **UDP** socket capable of absorbing a request and to send a response. Depending on the type of server, we may declare one or more **TCP** _Transports_, or a **TCP** and a **UDP** _Transports_, or an **UDP** _Transport_ only.
-
-### Ldap Server
-
-The LDAP server needs one or two **TCP** _Transport_. We have the standard *LDAP* port (defaulting to *10389* for _ApacheDS_, but the well know port is usually 389), and one can also declare the *LDAPS* port (defaulting to *10636* for _ApacheDS_, but the well know port is usually 636).
-
-<DIV class="warning" markdown="1">
-Note that *LDAPS* is considered as deprecated.
-</DIV>
-
-### Kerberos Server
-
-The Kerberos Server uses one **TCP** _Transport_ (defaulting to *60088*, but the well know port is 88 ) and one **UDP** _transport (same value for both ports). The idea is that the communication starts on **TCP** and continues on **UDP**.
-
-### ChangePassword Server
-
-The ChangePassword Server uses one **TCP** _Transport_ and one **UDP** transport, too. The default value is *60464*, but the well known port is *464*.
-
-### Http Server
-
-We have a HttpServer running too, it's used for management. The declared ports are both **TCP** port, one is for HTTP and its default value is *8080*, the other one is for HTTPS and its default value is *8443*.
-
diff --git a/content/apacheds/advanced-ug/1.3-directory-service.mdtext b/content/apacheds/advanced-ug/1.3-directory-service.mdtext
deleted file mode 100644
index d380b11..0000000
--- a/content/apacheds/advanced-ug/1.3-directory-service.mdtext
+++ /dev/null
@@ -1,42 +0,0 @@
-Title: 1.3 - DirectoryService
-NavPrev: 1.2-network.html
-NavPrevText: 1.2 - Network Layer
-NavUp: 1-architecture.html
-NavUpText: 1 - Architecture
-NavNext: 1.4-interceptors.html
-NavNextText: 1.4 - Interceptors
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.3 - DirectoryService
-
-The _DirectoryService_ is the core of the server. This is where we process incoming requests and ask the backend for data.
-
-It has an entry point, the _OperationManager_, which is in charge of pushing the requests into the _Interceptors_ chain, and to protect the server against concurrent modifications.
-
-Then the request is going through every _Interceptor_ being registered for this operation. When we have gone through all the _Interceptors_, we have reached the _PartitionNexus_, which is the connection with the backends.
-
-We now just have to determinate which type of _Backend_ we should address, and this is done using the _Dn_. The request is then transmitted to the _Backend_, which returns the result.
-
-The result bubbles up through the _Interceptors_ as we unfold the stack stack, up to the _OperationManager_ and to the caller.
-
-## Environment
-
-The _DirectoryService_ knows about its execution environment : it has a _schemaManager_ instance, it knows about the _Interceptors_ chain, it stores a map of all the pending requests (it's necessary as one may abandon some request), it holds the existing _Sessions_.
-
-In other word, the _DirectoryService_ is not only the part of the server executing the logic, it also holds the current state of every clients.
-
diff --git a/content/apacheds/advanced-ug/1.4-interceptors.mdtext b/content/apacheds/advanced-ug/1.4-interceptors.mdtext
deleted file mode 100644
index 7398b21..0000000
--- a/content/apacheds/advanced-ug/1.4-interceptors.mdtext
+++ /dev/null
@@ -1,145 +0,0 @@
-Title: 1.4 - Interceptors
-NavPrev: 1.3-directory-service.html
-NavPrevText: 1.3 - DirectoryService
-NavUp: 1-architecture.html
-NavUpText: 1 - Architecture
-NavNext: 1.5-backend.html
-NavNextText: 1.5 - Backend
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4 - Interceptors
-
-_Interceptors_ are functional layers inside the _DirectoryService_. Each one of them are responsible for a specific task. They are ordered, and this order is not to be changed.
-
-Each operation received by the _DirectoryService_ will be processed by various interceptors, one after the other, down to the backend, and again when the result comes back to the caller. An _interceptor_ can call the next _interceptor_, whcih will be determinated by the position it has in the chain of _interceptors_, or simply return. Note that calling the next _interceptor_ does not require that you know which one will be called.
-
-Some _Interceptors_ can be disabled, some other can be enabled. It's also possible to add some new one.
-
-All in all, they will handle operations from a specific functional aspect.
-
-## Handled operations
-
-Each _Interceptor_ handles a subset of the possible operations, among those listed in the following table :
-
-| Operation | Description |
-|---|---|
-| add | Adds an entry in the backend |
-| bind | Binds on the DirectoryService |
-| compare | Compares the elements with the associated entry in the backend |
-| delete | Deletes the entry |
-| getRooDSE | Gets back the RootDSE entry |
-| hasEntry | Tells if an entry exists |
-| lookup | Fetches an entry |
-| modify | Modifies an entry |
-| move | Moves an entry |
-| moveAndRename | Moves and renames an entry |
-| rename | Renames an entry |
-| search | Searches for entries |
-| unbind | Unbinds from the DirectoryService |
-
-It is important to understand that each operation will go through each _Interceptor_ declared to handle the operation, down to the backend.
-
-## Existing interceptors
-
-The following interceptors are already present in the server, even if they are not enabled.
-In this table, we list all the operations each interceptor is handling, and if the _interceptor_ is enabled by default or not :
-
-| Interceptor | Enabled |add|bnd|cmp|del|DSE|has|lkp|mod|mov|m&r|ren|sea|ubd|
-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-| AciAuthorizationInterceptor | yes | X | - | X | X | - | X | X | X | X | X | X | X | - |
-| AdministrativePointInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | ? | - |
-| AuthenticationInterceptor | yes | X | X | X | X | X | X | X | X | X | X | X | X | X |
-| ChangeLogInterceptor | yes || X | - | - | X | - | - | - | X | X | X | X | - | - |
-| CollectiveAttributeInterceptor | yes | X | - | - | - | - | - | X | X | - | - | - | X | - |
-| DefaultAuthorizationInterceptor | yes | - | - | - | X | - | - | X | X | X | X | X | X | - |
-| DelayInducingInterceptor | no | - | - | - | - | - | - | - | - | - | - | - | X | - |
-| EventInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
-| ExceptionInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
-| JournalInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
-| KeyDerivationInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| NormalizationInterceptor | yes | X | X | X | X | - | X | X | X | X | X | X | X | - |
-| NumberIncrementInterceptor | yes | X | - | - | - | - | - | - | - | - | - | - | - | - |
-| OperationalAttributeInterceptor | yes | X | - | - | X | - | - | X | X | X | X | X | X | - |
-| PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| CryptPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Md5PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Pkcs5s2PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Sha256PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Sha384PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Sha512PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| ShaPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Smd5PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Ssha256PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Ssha384PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| Ssha512PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| SshaPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
-| ReferralInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
-| SchemaInterceptor | yes | X | - | X | - | - | - | X | X | - | ? | X | X | - |
-| SubentryInterceptor | yes | X | - | - | X | - | - | ? | X | X | X | X | X | - |
-| TimerInterceptor | no | X | X | X | X | X | X | X | X | X | X | X | X | X |
-| TriggerInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
-
-The operations that are available are the operations for which we have some implementation in the interceptor class. For instance, the _JournalInterceptor_ class implement the _add_, _delete_, _modify_, _move_, _moveAndRename_ and _rename_ methods.
-
-## Interceptors order
-
-As we already said, the _Interceptors_ order is significant : why would we proceed an _Add_ operation through all the _Interceptors_ if the user is simply denied the right to add an entry by the _AciAuthorizationInterceptor_ ?
-
-Currently, the following order is enforced :
-
-| Order | Interceptor |
-|---|---|
-| 1 | NormalizationInterceptor |
-| 2 | AuthenticationInterceptor |
-| 3 | ReferralInterceptor |
-| 4 | AciAuthorizationInterceptor |
-| 5 | DefaultAuthorizationInterceptor |
-| 6 | AdministrativePointInterceptor |
-| 7 | ExceptionInterceptor |
-| 8 | SchemaInterceptor |
-| 9 | OperationalAttributeInterceptor |
-| 10 | SubentryInterceptor |
-| 11 | EventInterceptor |
-| 12 | TriggerInterceptor |
-| 13 | ChangeLogInterceptor |
-| 14 | JournalInterceptor |
-
-## Example
-
-Let's consider the _search_ operation. It will be processed successively by the following _Interceptors_, as it can be deduced by the two previous tables :
-
-* NormalizationInterceptor
-* AuthenticationInterceptor
-* AciAuthorizationInterceptor
-* DefaultAuthorizationInterceptor
-* SchemaInterceptor
-* OperationalAttributeInterceptor
-* SubentryInterceptor
-
-
-We can do the same exercise for each operation.
-
-## Processing
-
-Basically, an _Interceptor_ receives a request for an operation, does some pre-processing, calls the next _Interceptor_ in the chain, does some post-processing, and returns a result.
-
-Calling the next _Interceptor_ is as simple as calling the _next(OperationContext)_ method, which will compute the right _Interceptor_.
-
-The pre-processing and post-processing are standard Java code, there is nothing special there.
-
-Each operation is passed into an instance of a specific _OperationContext_, which contains all what is needed about the operation and the environment.
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/1.5-backend.mdtext b/content/apacheds/advanced-ug/1.5-backend.mdtext
deleted file mode 100644
index e0d0716..0000000
--- a/content/apacheds/advanced-ug/1.5-backend.mdtext
+++ /dev/null
@@ -1,99 +0,0 @@
-Title: 1.5 - Backend
-NavPrev: 1.4-interceptors.html
-NavPrevText: 1.4 - Interceptors
-NavUp: 1-architecture.html
-NavUpText: 1 - Architecture
-NavNext: 2-server-config.html
-NavNextText: 2 - Server Configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.5 - Backend
-
-The _Backend_ is the part of the server responsible for storing data in a way we can easily retrieve them. This storage does not necessarily have to be remanent : we can have a in-memory _backend_.
-
-## Existing Backends
-
-We currently have 3 different backends :
-
-* JDBM
-* LDIF
-* In-Memory
-
-### JDBM Backend
-
-The **JDBM** backend is storing data on disk, using **BTrees**. It's fast when it comes to retrieve data, slow when you have to add them.
-
-### In-Memory Backend
-
-This Backend loads in memory a full set of entries. ALl of them must be hold by the existig memory, we don't write on disk anything nor we read anything from disk. If the server is stopped, everything is lost.
-
-### LDIF Backend
-
-It comes in two forms : one single file, or many fles (one per entry). It's always backed by a in-memory _Backend_, otherwise it would not be possible to retrieve the entries.
-
-As we depend on a in-memory backend, which handles the indexes, we have to create those indexes when this _Backend_ is read, which can be a costly operation.
-
-### Future Backends
-
-We intend to add another in-memory backend, based on _Mavibot_, a **MVCC BTREE**. The biggest advantage over the other systems is that it's fast, it allows concurrent reads without locks when the other _Backend_ block the reads when some write operation is being processed. Also it saves on disk it contents periodically, and has a Journal so that we can recover from a crash.
-
-The only drawback is that all the entries and indexes must hold in memory. On the other hand, we don't anymore need a cache.
-
-## How it works
-
-Basically, each _Backend_ instance inherit from the _AbstractBTreePartition_ class. We can see that a _Backend_ **must** be a **Btree**.
-
-Data are stored into various tables. In fact, we have one table containing all the entries - the **MasterTable** - and many indexes.
-
-### MasterTable
-
-The _MasterTable_ contains all the entries, serialized.
-
-This table is a <Key, Value> **BTree**, where the key is the entry's **UUID**, and the value the serialized entry.
-
-<DIV class="note" markdown="1">
-Theoretically, we could be able to read it, and restore the whole database, indexes included, assuming that we know which index we have to create. Sadly, it's not enough, as the entries are stored without any information about their position in the **DIT**.
-</DIV>
-
-### Indexes
-
-Each index is also a <key, value> **BTree**, with some exceptions : as we may store multi-valued elements, it's perfectly possible that the value will grow up to a point it's extremely costly to store it serialized. For instance, the _ObjectClass_ index may have thousands of entries for the _Person_ key.
-
-In this case, we use a sub-btree, which is a <key,key> **BTree** (as strange as it sounds, it's an easy way to add a new key without having to rewrite the full value).
-
-The key can be a _String_, or a _ParentIdAndRdn_.
-
-We have 7 system indexes, which are created when the server is started :
-
-* ObjectClass : to easily find any entry associated with a give _ObjectClass_
-* EntryCsn : The Change Sequence Number index
-* Rdn : A special index containing a RDN and its parent
-* Presence : An index used when searching for the presence of an attributeType in an entry
-* Alias : An index used for aliases
-* OneAlias : An index used for children aliases
-* SubAlias : An index used of descendant aliases
-
-The user may define many different indexes, depending on his or her needs.
-
-### The ParentIdAndRdn index
-
-This index is special, as it's used to associate an entry to a position in the **DIT**. Assuming that each entry has a _Dn_, and that this _Dn_ describes a hierarchy, the _ParentIdAndRdn_ index depicts this hierarchy.
-
-The _ParentId_ part refers to the _UUID_ of the parent for the current entry. The _Rdn_ part is the entry _Rdn_. In order to rebuild the full _Dn_ for a given entry, we must get all the _ParentIdAndRdn_ up to the root to grab all the needed _Rdn_.
-
-This index is also used to process one level and sub level indexes.
diff --git a/content/apacheds/advanced-ug/2-server-config.mdtext b/content/apacheds/advanced-ug/2-server-config.mdtext
deleted file mode 100644
index 716c70b..0000000
--- a/content/apacheds/advanced-ug/2-server-config.mdtext
+++ /dev/null
@@ -1,42 +0,0 @@
-Title: 2 - Server Configuration
-NavPrev: 1.5-backend.html
-NavPrevText: 1.5 - Backend
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 2.1-config-description.html
-NavNextText: 2.1 - Configuration Description
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - Server Configuraion
-
-We will now describe the server configuration. Usually, all the configuration changes
-are done using Apache Directory Studio, which offers a pretty GUI. One can also update
-server configuration using LDAP operations, as the configuration is stored in the **DIT**.
-Note that the server must be restarted after modifying the configuration.
-
-We will then describe the installation layout (ie, how the various files are stored on the disk).
-
-## Chapter content
-
-* [2.1 - Configuration Description](2.1-config-description.html)
-* [2.2 - Instance Layout](2.2-instance-layout.html)
- * ![debian](images/debian.png)[2.2.1 - Debian instance Layout](2.2.1-debian-instance-layout.html)
- * ![RPM](images/rpm.png)[2.2.2 - RPM instance Layout](2.2.2-rpm-instance-layout.html)
- * ![MacOSX](images/mac.png)[2.2.3 - MacOSX instance Layout](2.2.3-macosx-instance-layout.html)
- * ![Windows](images/windows.png)[2.2.4 - Windows instance Layout](2.2.4-windows-instance-layout.html)
- * [2.2.5 - Generic instance Layout](2.2.5-generic-instance-layout.html)
diff --git a/content/apacheds/advanced-ug/2.1-config-description.mdtext b/content/apacheds/advanced-ug/2.1-config-description.mdtext
deleted file mode 100644
index c2e780b..0000000
--- a/content/apacheds/advanced-ug/2.1-config-description.mdtext
+++ /dev/null
@@ -1,466 +0,0 @@
-Title: 2.1 - Configuration Description
-NavPrev: 2-server-config.html
-NavPrevText: 2 - Server Configuration
-NavUp: 2-server-config.html
-NavUpText: 2 - Server Configuration
-NavNext: 2.2-instance-layout.html
-NavNextText: 2.2 - Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - Configuration Description
-
-It's a good practice to not modify the configuration LDIF file by hand, instead use the Studio Configuration plugin to modify the server configuration.
-
-# Overall structure
-
-The configuration is stored in a hierarchical order, where sub-elements are related to their parent. For instance, the _Transports_ are associated to the corresponding _Server_ that uses them. Each server may contain one or more transports.
-
-The following hierarchy describe the different kind of elements that one can configure, and their relationship :
-
-* ou=config
- * [ads-directoryServiceId=XXXXX (Directory Service)](#directory-service)
- * [ads-changeLogId=XXXXX (ChangeLog)](#change-log)
- * [ads-journalId=XXXXX (Journal)](#journal)
- * [ou=interceptors (Interceptors)](#interceptors)
- * [ads-interceptorId=authenticationInterceptor (Authentication Interceptor)](#authentication-Interceptor)
- * [ou=authenticators (Authenticators)](#authenticators)
- * [ou=passwordPolicies (Password Policies)](#password-policies)
- * [ou=partitions (Partitions)](#partitions)
- * [ads-partitionId=system (JDBM Partition)](#jdbm-partition)
- * [ou=indexes (Indexes)](#indexes)
- * [ads-indexAttributeId=XXXXX (Indexed Attribute)](#indexed-attribute)
- * [ou=servers (Servers)](#servers)
- * [ads-serverId=ldapServer (Ldap Server)](#ldap-server)
- * [ou=transports (Transports)](#transports)
- * [ou=replConsumers (ReplConsumers)](#repl-consumers)
- * [ou=extendedOpHandlers (Extended Operation Handlers)](#extended-op-handlers)
- * [ou=saslMechHandlers (SASL Mechanisms)](#sasl-mechanisms)
- * [ads-serverId=kerberosServer (Kerberos Server)](#kerberos-server)
- * [ou=transports (Transports)](#transports)
- * [ads-serverId=httpServer (Http Server)](#http-server)
- * [ou=transports (Transports)](#transports)
- * [ou=httpWebApps (HttpWebApps)](#http-web-apps)
- * [ads-serverId=changePasswordServer (ChangePassword Server)](#change-password-server)
- * [ou=transports (Transports)](#transports)
-
-Note that in order to modify one element, you have to go down the tree up to the entry containing the elements you want to modify. For instance, to modify the TCP port for LDAP server, you have to modify the following entry :
-
- **ads-transportid=ldap, ou=transports, ads-serverId=ldapServer, ou=servers, ads-directoryServiceId=XXXXX, ou=config**
-
-We will now explain each one of those elements.
-
-<DIV class="note" markdown="1">
-Note that bold attributes are mandatory in the following tables.
-</DIV>
-
-# Directory Service
-
-This is the heart of the entire system : the place where we store the data. Most of the servers are depending on this component. You may have more than one server(e.g LDAP, Kerberos, ChangePassword etc), but only one _DirectoryService_.
-
-Configuration options:
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-directoryServiceId** | _String_ | | The unique identifier for the service |
-| ads-enabled | _boolean_ | true | Tells if the DirectoryService is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-dsReplicaId** | _int_ | 1 | The replication identifier |
-| **ads-dsAccessControlEnabled** | _boolean_ | true | Tells if the Access Control interceptor is active |
-| **ads-dsAllowAnonymousAccess** | _boolean_ | false | Tells if the service allow anonymous access |
-| **ads-dsDenormalizeOpAttrsEnabled** | _boolean_ | true | Tells if the service should denormalize operational attributes |
-| **ads-dsPasswordHidden** | _boolean_ | true | Tells if the passwords should be encrypted (not used) |
-| **ads-dsSyncPeriodMillis** | _long_ | 15000 | The delay in milliseconds before we flush data on disk |
-| ads-dsTestEntries | _String_ | N/A | Not used |
-
-
-## Change Log
-
-The _ChangeLog_ is an optional system that logs every change made on the server, and also records the revert operation, allowing the system to rollback the changes if needed. This is extremely useful when running tests.
-
-Note that at the moment, changelog has in-memory support only.
-
-It's disabled by default.
-
-Configuration options:
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-changeLogId** | _String_ | | The unique identifier for the system |
-| ads-enabled | _boolean_ | false | Tells if the ChangeLog system is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-changeLogExposed** | _boolean_ | false | Tells if the ChangeLog is exposed to the users |
-
-## Journal
-
-The _Journal_ logs every modification on the file system. It's intended to be used if the _DirectoryService_ crashes, as we can re-apply the journal starting from a date in the past where we know that the underlying database is correct.
-
-Configuration options:
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-journalId** | _String_ | N/A | The unique identifier for the Journal |
-| ads-enabled | _boolean_ | false | Tells if the Journal system is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-journalWorkingDir** | _String_ | N/A | The working directory the Journal will be stored in |
-| **ads-journalRotation** | _String_ | N/A | The number of operation stored befoe the journal is rotated |
-| **ads-journalFileName** | _String_ | journal.txt | The file contaning the Journal |
-
-## Interceptors
-
-The default _Interceptors_ are generally not configurable. You don't want to change their order, or remove anyone from the default interceptors unless you are very familiar with the
-internals of ApacheDS and/or including a custom interceptor.
-
-However, at least one default _Interceptor_ can be configured : the _authenticationInterceptor_.
-
-In the case where one would like to add an interceptor, it's enough to add the associated entry containing the interceptor identifier, under the _ou=interceptors_ entry. It must have an order. Here are the elements that can be configured in such a case :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-interceptorid** | _String_ | N/A | The unique identifier for this Interceptor |
-| ads-enabled | _boolean_ | false | Tells if the Interceptor is enabled |
-| description | _String_ | N/A | A short optional description |
-| ads-interceptororder | _int_ | N/A | The position in the chain for this interceptor |
-| ads-interceptorclassname | _String_ | N/A | The class implementing this interceptor |
-
-
-### Authentication Interceptor
-
-This _Interceptor_ is in charge of managing the users authentication. It is associated with _[Authenticators](#authenticators)_, and with _[Password Policies](#password-policies)_.
-
-#### Authenticators
-
-We may have various _Authenticator_ declared for a given server. The default server has three different _Authenticators_, which are :
-
-* anonymousAuthenticator : used for anonymous requests
-* simpleAuthenticator : handle simple authentication, based on a password
-* strongAuthenticator : handle SASL authentication.
-
-One can add a new _Authenticator_, if needed. It's just a matter of creating a new entry under the _ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors_ entry, containing the two following elements :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-authenticatorId** | _String_ | N/A | The unique identifier for this Authenticator |
-| ads-enabled | _boolean_ | false | Tells if the Partition is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-authenticatorClass** | _String_ | N/A | The FQCN for the class implementing the AUthenticator |
-
-
-### Password Policies
-
-There are many possible configurable options for the _PasswordPolicy_ system. Here is a list of all the options. See the [password policy draft](http://tools.ietf.org/id/draft-behera-ldap-password-policy-10.txt) for an indept explanation of the respective attributes :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-pwdId** | _String_ | N/A | The unique ID of the _PasswordPolicy_ system |
-| **ads-pwdAttribute** | _String_ | userPassword | The name of the attribute to which the password policy is applied |
-| ads-pwdMinAge | _int_ | 0 | Holds the number of seconds that must elapse between modifications to the password |
-| ads-pwdMaxAge | _int_ | 0 | Holds the number of seconds after which a modified password will expire. If 0, never expires |
-| ads-pwdInHistory | _boolean_ | 0 | Specifies the maximum number of used passwords stored in the pwdHistory attribute (0 means no storage) |
-| ads-pwdCheckQuality | _boolean_ | 0 | Indicates how the password quality will be verified while being modified or added (0 means no check) |
-| ads-pwdMinLength | _int_ | 0 | The minimum number of characters that must be used in a password (0 means no limit) |
-| ads-pwdMaxLength | _int_ | 0 | The maximum number of characters that may be used in a password (0 means no limit) |
-| ads-pwdExpireWarning | _boolean_ | 0 | The maximum number of seconds before a password is due to expire, and that expiration warning messages will be returned to an authenticating user (0 means no message wil be sent to user) |
-| ads-pwdGraceAuthNLimit | _int_ | 0 | The number of times an expired password can be used to authenticate (0 means do not allow a expired password for authentication) |
-| ads-pwdGraceExpire | _boolean_ | 0 | Specifies the number of seconds the grace authentications are valid (0 means no limit) |
-| ads-pwdLockout | _boolean_ | false | Flag to indicate if the account needs to be locked after a specified number of
- consecutive failed bind attempts. The maximum number of consecutive failed bind attempts is specified in ads-pwdMaxFailure |
-| ads-pwdLockoutDuration | _int_ | 300 | The number of seconds that the password cannot be used to authenticate due to too many failed bind attempts |
-| ads-pwdMaxFailure | _int_ | 0 | The number of consecutive failed bind attempts after which the password may not be used to authenticate (0 means no limit) |
-| ads-pwdFailureCountInterval | _int_ | 0 | The number of seconds after which the password failures are purged from the failure counter (0 means reset all the pwdFailureTimes after a successful authentication) |
-| ads-pwdMustChange | _boolean_ | false | Flag to indicate if the password must be changed by the user after they bind to the directory after a password is set or reset by a password administrator |
-| ads-pwdAllowUserChange | _boolean_ | true | Indicates whether users can change their own passwords |
-| ads-pwdSafeModify | _boolean_ | false | Flag to specify whether or not the existing password must be sent along with the new password when being changed |
-| ads-pwdMinDelay | _int_ | 0 | The number of seconds to delay responding to the first failed authentication attempt (0 means no delay) |
-| ads-pwdMaxDelay | _int_ | 0 | The maximum number of seconds to delay when responding to a failed authentication attempt (no delay) 0 means|
-| ads-pwdMaxIdle | _int_ | 0 | The number of seconds an account may remain unused before it becomes locked (0 means infinite) |
-| ads-pwdValidator | _String_ | N/A | The PasswordValidator FQCN (will use DefaultPasswordValidator if not provided) |
-
-
-## Partitions
-
-The _Partition_ is where the server stores your data. There are many parts that need to be configured in order to obtain the best performances out of the server. It's also the part of the configuration you are more likely to modify, adding new _Partitions_ or adding new _Indexes_.
-
-You may have more than one _Partition_ in your _DirectoryService_. There are at least three default _Partition_s, _ou=system_, _ou=config_ and _ou=schema_ _Partition_. ou=system is a _JDBM_ _Partition_ and the two others are _LDIF_ partitions.
-
-### JDBM Partition
-
-A _JDBM Partition_ has the following configurable options :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-partitionid** | _String_ | N/A | The unique identifier for this Partition |
-| ads-enabled | _boolean_ | false | Tells if the Partition is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-partitionsuffix** | _String_ | N/A | The partition DN |
-| ads-contextEntry | _String_ | N/A | The entry associated with the suffix (in LDIF format) |
-| ads-partitionSyncOnWrite | _boolean_ | true | Tells the server to flush on disk on each write |
-
-Once the above elements have been added, the _Partition_ is available. You still have to create some mandatory indexes though.
-
-#### Indexes
-
-Each _Partition_ have indexes, some are mandatory, and others are user provided. Here are the mandatory indexes :
-
-| Index | role |
-|---|---|
-| apacheRdn | Stores the RDN for the entry, and the relation to its parent's RDN |
-| apachePresence | Used to index the attributeTypes used in the entry |
-| apacheOneAlias | Stores the aliases one level below the current entry |
-| apacheSubAlias | Stores the aliases below the current entry |
-| apacheAlias | Stores the aliases |
-| objectClass | Stores the relation between an ObjectClass an the entry using it |
-| entryCSN | Stores the CSN for each entry |
-| administrativeRole | Stores the entries that are AdminstrativePoints |
-
-
-##### Indexed Attribute
-
-Indexed attributes have a type, depending on the _Partition_ type they are associated with. Currently, we have only one type, _JdbmIndex_. They have specific configurable elements.
-
-Each index attribute has four basic elements that can be configured :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-indexAttributeId** | _String_ | N/A | The unique identifier for this indexedAttribute |
-| ads-enabled | _boolean_ | false | Tells if the IntexedAttribute is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-indexHasReverse** | _boolean_ | false | Tells if the IndexedAttribute has a reverse index |
-
-The _JdbmIndex_ type of index has some more configurable elements, all optional :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-indexFileName | _String_ | N/A | The index file name (default to the associated attributeType name) |
-| ads-indexWorkingDir | _String_ | N/A | The index working directory |
-| ads-indexNumDupLimit | _int_ | 512 | The maximum number of values for a single key before we use a sub-tree |
-| ads-indexCacheSize | _int_ | 100 | The number of cached pages for this index |
-
-
-# Servers
-
-As we can see, we can start more than one server (a.k.a service). We have :
-
-* a LDAP server
-* a Kerberos server
-* a changePassword server
-* an HTTP Server
-* a NTP Server
-* a DHCP server
-* a DNS server
-
-There is a distinction though between the servers backed by a _DirectoryService_, and those that aren't (like the HTTP and NTP servers).
-
-All the _DirectoryService_ backed servers share some common parameters, which are exposed in the following table :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-searchBaseDN | _Dn_ | N/A | The place were to start looking for authentication informations |
-| ads-serverId | _String_ | N/A | The server unique name |
-| ads-enabled | _boolean_ | N/A | Tells if the Server is enabled |
-| description | _String_ | N/A | A short optional description |
-
-A server can define more than one transports : for instance, the Kerberos server uses UDP and TCP transports.
-
-## Transports
-
-Here are the parameters for the Transport structure :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-transportId** | _String_ | N/A | The identification |
-| **ads-transportAddress** | _String_ | localhost | The IP Address |
-| **ads-systemPort** | _int_ | -1 | The port |
-| ads-enabled | _boolean_ | N/A | Tells if the Transport system is enabled |
-| description | _String_ | N/A | A short optional description |
-| ads-transportEnableSsl | _boolean_ | false | Tells if SSL is activated (not used for UDP) |
-| ads-transportNbThreads | _int_ | 3 | he number of dedicated threads to process the messages |
-| ads-transportBackLog | _int_ | 50 | The number of messages on hold if the server is overloaded (not used for UDP) |
-
-## Ldap Server
-
-Let's start with the main server : the LDAP server.
-
-The list of attributes that can be modified is exposed in the following table.
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the LdapServer system is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-confidentialityRequired** | _boolean_ | false | Whether or not confidentiality (TLS secured connection) is required |
-| **ads-maxSizeLimit** | _int_ | 1000 | The maximum number of entries the server will return |
-| **ads-maxTimeLimit** | _int_ | 1000 | The maximum number of seconds the server will use to process a search request |
-| **ads-maxPDUSize** | _int_ | 2048 | The maximal size for a PDU. This is currently not leveraged |
-| **ads-saslHost** | _int_ | N/A | The name of this host, validated during SASL negotiation |
-| **ads-saslPrincipal** | _String_ | N/A | The service principal, used by GSSAPI. |
-| **sads-saslRealms** | _List<String>_ | N/A | The list of realms serviced by this host. |
-| ads-keystoreFile | _String_ | N/A | The place on the filesystem where the Keystore is stored |
-| ads-certificatePassword | _String_ | N/A | The certificate's password |
-| ads-replReqHandler | _String_ | (*) | The replication request handler FQCN |
-| ads-replEnabled | _boolean_ | FALSE | Tells if the replication system is enabled |
-
-(*) org.apache.directory.server.ldap.replication.provider.SyncReplRequestHandler
-
-### Repl Consumers
-
-This part of the configuration deals with the replication. It provides all the information for a server to become a consumer. A server can have many different consumers set.
-
-All the consumers are stored under the _ou=replConsumers_ entry, under the respective server entry.
-
-Here are the configurable elements :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| **ads-replConsumerId** | _String_ | N/A | The replica unique identifier |
-| **ads-searchBaseDN** | _String_ | N/A | The base DN for replication |
-| **ads-replProvHostName** | _String_ | N/A | The provider host name |
-| **ads-replProvPort** | _int_ | 389 | The port of the remote server |
-| **ads-replAliasDerefMode** | _String_ | NEVER_DEREF_ALIASES | The alias dereferencing mode to use |
-| **ads-replAttributes** | _String_ | * | The list of attributes to get back |
-| **ads-replRefreshInterval** | _int_ | 60000 | The delay between refreshes (60 seconds) |
-| **ads-replRefreshNPersist** | _boolean_ | true | Sets the replication mode |
-| **ads-replSearchScope** | _String_ | SUBTREE | The scope to use while searching for entries |
-| **ads-replSearchFilter** | _String_ | (objectClass=*) | The filter to use |
-| **ads-replSearchSizeLimit** | _int_ | 0 | The maximum number of entries to get back |
-| **ads-replSearchTimeOut** | _int_ | 0 | The maximum time to wait while fetching the entries |
-| **ads-replUserDn** | _String_ | N/A | The user DN used to bind on the provider |
-| **ads-replUserPassword** | _String_ | N/A | The password of the user |
-| ads-replUseTls | _boolean_ | true | Tells the server to use startTLS during replication |
-| ads-replStrictCertValidation | _boolean_ | true | Tells the provider to check the certificate if provided |
-| ads-replPeerCertificate | _byte[]_ | N/A | The certificate to use for replication |
-| ads-replConsumerImpl | _String_ | ReplicationConsumerImpl | The implementation |
-| ads-replCookie | _byte[]_ | N/A | The last received cookie |
-
-
-### Extended Op Handlers
-
-An LDAP server can handle _ExtendedOperations_, assuming it has the code to do so. In **ApacheDS**, we do that by associating a _Java_ class with each _ExtendedOperation_. We may provide more _ExtendedOperations_ in the future. The list of supported _ExtendedOperations_ is given below :
-
-* CertGenerationRequest : Generate a certificate on demand
-* GracefulShutdownRequest : Requires the server to shutdown gracefully
-* StartTLSExtendedOperation : Process the StartTLS request
-* StoredProcedureExtendedOperation : Execute a Stored procedure
-
-Adding a new _ExntedeOperatonHandler_ is just a matter of adding a new entry under the _ou=extendedOpHandlers_ entry, with the given elements :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the ExtendedOpHandler system is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-extendedOpId** | _String_ | N/A | The ExtendedOpHandler unique identifier |
-| **ads-extendedOpHandlerClass** | _String_ | N/A | The class FQCN that implements the handler |
-
-
-### SASL Mechanisms
-
-We have various SASL mechanisms, which can be configured. the list of supported SASL mechanisms is :
-
-* CRAM-MD5
-* DIGEST-MD5
-* GSS-SPNEGO
-* GSSAPI
-* NTLM
-* SIMPLE
-
-This list is stored in the configuration. It's possible to add new mechanisms if needed, simply by adding an entry containing those elements, under the _ou=saslMechHandlers_
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the Transport system is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-saslMechName** | _String_ | <one the above list> | The mechanism name|
-| **ads-saslMechClassName** | _String_ | N/A | The mechanism class name|
-| ads-ntlmMechProvider | _String_ | N/A | The NTLM provider |
-
-## Kerberos Server
-
-The _KerberosServer_ configuration is an important part of the configuration. It depends on a _DirectoryService_ too, as most of the informations managed by a _KerberosServer_ are store there.
-
-The list of attributes that can be modified is exposed in the following table.
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the KerberosServer is enabled |
-| description | _String_ | N/A | A short optional description |
-| ads-krbAllowableClockSkew | _int_ | 300000 | The allowable clock skew in milliseconds (5 minutes) |
-| ads-krbEncryptionTypes | _List<String>_ | | The encryption types |
-| ads-krbEmptyAddressesAllowed | _boolean_ | true | Whether empty addresses are allowed |
-| ads-krbForwardableAllowed | _boolean_ | true | Whether forwardable addresses are allowed |
-| ads-krbPaEncTimestampRequired | _boolean_ | true | Whether pre-authentication by encrypted timestamp is required |
-| ads-krbPostdatedAllowed | _boolean_ | true | Whether postdated tickets are allowed |
-| ads-krbProxiableAllowed | _boolean_ | true | Whether proxiable addresses are allowed |
-| ads-krbRenewableAllowed | _boolean_ | true | Whether renewable tickets are allowed |
-| ads-krbKdcPrincipal | _String_ | krbtgt/EXAMPLE.COM@EXAMPLE.COM | The service principal name |
-| ads-krbMaximumRenewableLifetime | _long_ | 1000 * 60 * 60 * 24 * 7 | The maximum renewable lifetime in millisconds (7 days) |
-| ads-krbMaximumTicketLifetime | _long_ | 1000 * 60 * 60 * 24 | he maximum ticket lifetime in milliseconds (24 h) |
-| ads-krbPrimaryRealm | _String_ | EXAMPLE.COM | The primary realm |
-| ads-krbBodyChecksumVerified | _boolean_ | true | Whether to verify the body checksum |
-
-
-Of course, a _Transport_ has to be defined under the _KerberosServer_ entry (see [Transports](#transports)).
-
-## Http Server
-
-We have a Http Server embedded, which is used to manage some parts of the server. One can inject a web application, which has direct access to the embedded LdapServer, for instance. It can be useful for sending LDAP requests using DSML, for instance.
-
-There is one single element that can be configured :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the HttpServer is enabled |
-| description | _String_ | N/A | A short optional description |
-| ads-httpConfFile | _String_ | N/A | The configuration file for this server |
-
-An _HttpServer_ without webApps is pretty useless, we now have to configure the underlying web applications
-
-
-### Http Web Apps
-
-Each _WebApp_ configuration must be added under the _ou=webapps_ entry. Here are the configurable elements :
-
-| AttributeType | type | default value | Description |
-|---|---|---|---|
-| ads-enabled | _boolean_ | true | Tells if the HttpServer is enabled |
-| description | _String_ | N/A | A short optional description |
-| **ads-httpWarFile** | _String_ | N/A | The WAR file to use |
-| **ads-id** | _String_ | N/A | The unique ID for this WebApp |
-| **ads-httpAppCtxPath** | _String_ | N/A | The context |
-
-Here is an example of configuration :
-
- :::Text
- dn: ads-id=webApp1,ou=httpWebApps,ads-serverId=httpServer,ou=servers,ads-directoryServiceId=default,ou=config
- objectclass: top
- objectclass: ads-base
- objectclass: ads-httpWebApp
- ads-Id: webApp1
- ads-httpWarFile: war file 1
- ads-httpAppCtxPath: /home/app1
-
-
-## Change Password Server
-To be added...
-
-# Bean graph
-
-The following picture represent the structure of the container used to store the configuration inside the server. The yellow beans are abstract beans, extended by specific beans.
-
-The bold links mean we can have more than one instance of a bean.
-
-![ApacheDS configuration beans](images/configBeans.png)
-
-
diff --git a/content/apacheds/advanced-ug/2.2-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2-instance-layout.mdtext
deleted file mode 100644
index 0070e4d..0000000
--- a/content/apacheds/advanced-ug/2.2-instance-layout.mdtext
+++ /dev/null
@@ -1,94 +0,0 @@
-Title: 2.3 - Instance Layout
-NavPrev: 2.1-config-description.html
-NavPrevText: 2.1 - Configuration Description
-NavUp: 2-server-config.html
-NavUpText: 2 - Server Configuration
-NavNext: 2.2.1-debian-instance-layout.html
-NavNextText: 2.2.1 - Debian Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - Instance Layout
-
-Note that the installation will differ with the target OS. We currently support :
-
-* ![debian](images/debian.png)[2.2.1 - Debian instance Layout](2.2.1-debian-instance-layout.html)
-* ![RPM](images/rpm.png)[2.2.2 - RPM instance Layout](2.2.2-rpm-instance-layout.html)
-* ![MacOSX](images/mac.png)[2.2.3 - MacOSX instance Layout](2.2.3-macosx-instance-layout.html)
-* ![Windows](images/windows.png)[2.2.4 - Windows instance Layout](2.2.4-windows-instance-layout.html)
-* [2.2.5 - Generic instance Layout](2.2.5-generic-instance-layout.html)
-
-When we start a server, after having installed it, it creates some other directories where the data will be stored. Here is a list of those data :
-
-* the partitions data
-* the logs
-* the cache files
-* the replication data (if setup)
-* the run files
-
-
-## Created directories
-
-The following directories are created on your disk :
-
-<PRE>
-installation directory/
- |
- +-- conf/
- | |
- | +-- config.ldif
- | |
- | +-- wrapper.conf
- | |
- | +-- log4j.properties
- |
- +-- log/
- | |
- | [+-- journal.ldif]
- | |
- | +-- <log file>
- |
- +-- partitions/
- | |
- | +-- system/
- | | |
- | | +-- master.db
- | | |
- | | +-- objectclass.db
- | | |
- | | +-- objectclass.lg
- | | |
- | | +-- <index XXX lg and db files>
- | |
- | +-- schema/
- | | |
- | | :
- | |
- | +-- <partition XXX>
- | | |
- | : :
- |
- +-- run/
- |
- +-- cache/
- |
- +-- syncrepl-data/
- |
- +-- NOTICE
- |
- +-- LICENSE
-</PRE>
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/2.2.1-debian-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2.1-debian-instance-layout.mdtext
deleted file mode 100644
index 0cf6616..0000000
--- a/content/apacheds/advanced-ug/2.2.1-debian-instance-layout.mdtext
+++ /dev/null
@@ -1,266 +0,0 @@
-Title: 2.2.1 - Debian Instance Layout
-NavPrev: 2.2-instance-layout.html
-NavPrevText: 2.2 - Instance Layout
-NavUp: 2.2-instance-layout.html
-NavUpText: 2.2 Instance Layout
-NavNext: 2.2.2-rpm-instance-layout.html
-NavNextText: 2.2.2 - RPM Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.1 - ![debian](images/debian.png) Debian Instance Layout
-
-When you run the installer ( <em>sudo dpkg -i apacheds-<version>-<arch>.deb</em> ) on your debian system, it will install the server on your disk, using this layout :
-
- /
- |
- +-- etc/
- | |
- | +-- init.d/
- | |
- | +-- apacheds-<version>-<instance> The daemon used to start the server
- +-- opt/
- | |
- | +-- apacheds-<version>
- | |
- | +-- conf/
- | | |
- | | +-- wrapper.conf The wrapper default configuration
- | |
- | +-- bin/
- | | |
- | | +-- apacheds* The script that starts the server
- | | |
- | | +-- wrapper* The binary that starts the server
- | |
- | +-- lib
- | | |
- | | +-- wrapper-3.2.3.jar
- | | |
- | | +-- libwrapper.so
- | | |
- | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
- | | |
- | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
- | |
- | +-- NOTICE
- | |
- | +-- LICENSE
- |
- +-- var/
- |
- +--lib/
- |
- +-- apacheds-<version>/
- |
- +-- <instance>/
- |
- +-- run/
- | |
- | +-- apacheds-default.pid The PID of the running process
- |
- +-- partitions/ This is were your data will be stored
- | |
- | +-- schema/
- | |
- | +-- system/
- | |
- | +-- example/
- |
- +-- log/ This is were the logs are stored
- | |
- | +-- apacheds.log
- | |
- | +-- wrapper.log
- |
- +-- cache/ This is where the various caches are stored
- | |
- | +-- changePwdReplayCache.data
- | |
- | +-- ou=system.data
- | |
- | +-- groupCache.data
- | |
- | +-- kdcReplayCache.data
- |
- +-- conf/
- | |
- | +-- wrapper-instance.conf The specific instance wrapper configuration
- | |
- | +-- log4j.properties The log configuration file
- | |
- | +-- config.ldif The server configuration. Don't manipulate this file with a text editor !
- |
- +-- syncrepl-data/
-
-## Defining an instance
-
-The default installation comes with a default instance (aka <em>'default'</em>). It's possible to define more instances, it's just enough to copy the directory <em>/var/lib/apacheds-<version>/<instances>/default</em> and give it the name of the new instance. Then, be sure to remove everything under the <em>run/</em>, <em>partitions/</em>, <em>log/</em>, <em>syncrepl-data</em> and <em>cache/</em> directories to create a blank new instance. Here, we have created a blank <em>test</em> instance :
-
- /
- |
- +-- var/
- |
- +--lib/
- |
- +-- apacheds-<version>/
- |
- +-- test/
- |
- +-- run/
- |
- +-- partitions/
- |
- +-- log/
- |
- +-- cache/
- |
- +-- conf/
- |
- +-- wrapper-instance.conf
- |
- +-- log4j.properties
- |
- +-- config.ldif
-
-The next step is to be sure that the config.ldif file is modified to not conflict with any other instance of the server : it's just a mater to change the port used by the server.
-
-When the newly created instance will be created, the partitions will be created.
-
-## Starting the server
-
-As we can have more than one instance, we have more than one instance in <em>/var/lib/apacheds<version>/<instances></em> that can be installed. Each one of these instance can be started using the <em>/etc/init.d/apacheds</em> daemon, passing the instance as a parameter :
-
- $ sudo /etc/init.d/apacheds-<version> start [<instance>]
-
-The default instance name is 'default'.
-
-All the data for a given instance are stored into this <em>/var/lib/apacheds-<version>/instances/<instance-name></em> directory.
-
-## Stopping the server
-
-Stopping the server is done using the same command, with a different parameter :
-
- $ sudo /etc/init.d/apacheds-<version> stop [<instance>]
-
-Again, you must provide the instance name if it's not the default one
-
-## Repairing the indexes
-
-Sometime, the database get corrupted. Hopefully, this is not frequent, but when it happens, it left you in a position where there is nothing you can do but re-injecting a backup.
-
-That is more than annoying, and the latest version (2.0.0-M23) as an added feature that allows you to repair the indexes (this is a best effort, it might not work in all cases). Here is the step to follow in order to run the tool :
-
- $ sudo /etc/init.d/apacheds-<version> repair /var/lib/apacheds-<version>/<instance>
-
-All the indexes will be recreated, based on the content of the master table (which contains all the entries). You can also remove all the database files but the master.db and master.lg files from each user partitions in /var/lib/apacheds-<version>/<instance>/partitions, before running the command.
-
-The server should restart with a working database (it might take a bit of time, but not that much : rebuilding indexes is orders of magnitude faster than injcting entries in the server).
-
-## Logs
-
-You can check what's going on in the <em>apacheds-<version>instances/<instance-name>/log/apacheds.log</em> file, which is created using the configuration set in <em>apacheds-<version>instances/<instance-name>/conf/log4j.properties</em>.
-
-Typically, when you start the server, you will get such log :
-
- $ more apacheds.log
- [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
- directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
- security breach.
-
-and from the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.out</em> file, which contains everything the server writes on the console, you will read :
-
- $ more apacheds.out
- [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
- directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
- security breach.
- _ _ ____ ____
- / \ _ __ ___ ___| |__ ___| _ \/ ___|
- / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
- / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
- /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
- |_|
-
-### Log configuration
-
-You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
-
-The default configuration is given below :
-
- log4j.rootCategory=WARN, R, stdout
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
-
- log4j.appender.R.MaxFileSize=1024KB
- # Keep some backup files
- log4j.appender.R.MaxBackupIndex=5
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # with these we'll not get innundated when switching to DEBUG
- log4j.logger.jdbm.recman.BaseRecordManager=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
- log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
- log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
-
- # Replication logs
- log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
- log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
-
- # Search log
- log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
-
- # Other logs
- log4j.logger.org.apache.directory.api=FATAL
- log4j.logger.org.apache.directory.server=FATAL
- log4j.logger.net.sf.ehcache=FATAL
- log4j.logger.org.apache.mina=FATAL
-
-
-### JVM setting
-
-Were you to change the memory you want to use for a given instance, you will have to modify the <em>/var/lib/apacheds-<version>/<instances>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
-
- ##
- ## In this file you can override parameters specified in the default
- ## Apache Directory Server config file which is usually at
- ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
- ##
- ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
- ## For a list of properties that can be set.
- ##
-
- ## Override the JRE used
- # wrapper.java.command=<path-to-java-executable>
-
- ## Override the JVM memory settings
- ## Initial Java Heap Size (in MB)
- # wrapper.java.initmemory=1024
-
- ## Maximum Java Heap Size (in MB)
- # wrapper.java.maxmemory=2048
-
-You mainly want to change the memory used by the JVM.
-
diff --git a/content/apacheds/advanced-ug/2.2.2-rpm-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2.2-rpm-instance-layout.mdtext
deleted file mode 100644
index 8db0fbc..0000000
--- a/content/apacheds/advanced-ug/2.2.2-rpm-instance-layout.mdtext
+++ /dev/null
@@ -1,188 +0,0 @@
-Title: 2.2.2 - ![RPM](images/rpm.png) RPM Instance Layout
-NavPrev: 2.2.1-debian-instance-layout.html
-NavPrevText: 2.2.1 - Debian Instance Layout
-NavUp: 2.2-instance-layout.html
-NavUpText: 2.2 Instance Layout
-NavNext: 2.2.3-macosx-instance-layout.html
-NavNextText: 2.2.3 - MacOSX Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.2 - ![RPM](images/rpm.png) RPM Instance Layout
-
-When you run the installer on your RPM based system, it will install the server on your disk, using this layout :
-
- /
- |
- +-- etc/
- | |
- | +-- init.d/
- | |
- | +-- apacheds-<version>-<instance> The daemon used to start the server
- +-- opt/
- | |
- | +-- apacheds-<version>
- | |
- | +-- conf/
- | | |
- | | +-- wrapper.conf The wrapper default configuration
- | |
- | +-- bin/
- | | |
- | | +-- apacheds* The script that starts the server
- | | |
- | | +-- wrapper* The binary that starts the server
- | |
- | +-- lib
- | | |
- | | +-- wrapper-3.2.3.jar
- | | |
- | | +-- libwrapper.so
- | | |
- | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
- | | |
- | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
- | |
- | +-- NOTICE
- | |
- | +-- LICENSE
- |
- +-- var/
- |
- +--lib/
- |
- +-- apacheds-<version>/
- |
- +-- <instance>/
- |
- +-- run/
- | |
- | +-- apacheds-default.pid The PID of the running process
- |
- +-- partitions/ This is were your data will be stored
- | |
- | +-- schema/
- | |
- | +-- system/
- | |
- | +-- example/
- |
- +-- log/ This is were the logs are stored
- | |
- | +-- apacheds.log
- | |
- | +-- wrapper.log
- |
- +-- cache/ This is where the various caches are stored
- | |
- | +-- changePwdReplayCache.data
- | |
- | +-- ou=system.data
- | |
- | +-- groupCache.data
- | |
- | +-- kdcReplayCache.data
- |
- +-- conf/
- |
- +-- wrapper-instance.conf The specific instance wrapper configuration
- |
- +-- log4j.properties The log configuration file
- |
- +-- config.ldif The server configuration. Don't manipulate this file with a text editr !
-
-
-As we can have more than one instance, we have more than one directory in <em>/var/lib/apacheds</em> that can be installed. Each one of these instance can be started using the <em>/etc/init.d/apacheds</em> daemon, passing the instancz as a parameter :
-
- $ sudo /etc/init.d/apacheds-<version> start <instance>
-
-The default instance name is 'default'.
-
-All the data for a given instance are stored into this <em>/var/lib/apacheds-<version><em> directory.
-
-## Configuring each instance
-
-You can configure a specific settings. This is done by modifying the configuration files in <em>/var/lib/apacheds-<version>/<instance></em>.
-
-### JVM setting
-Were you to change the memory you want to use for a given instance, you will have to modify the <em>/var/lib/apacheds-<version>/<instance>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
-
- ##
- ## In this file you can override parameters specified in the default
- ## Apache Directory Server config file which is usually at
- ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
- ##
- ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
- ## For a list of properties that can be set.
- ##
-
- ## Override the JRE used
- # wrapper.java.command=<path-to-java-executable>
-
- ## Override the JVM memory settings
- ## Initial Java Heap Size (in MB)
- # wrapper.java.initmemory=1024
-
- ## Maximum Java Heap Size (in MB)
- # wrapper.java.maxmemory=2048
-
-You mainly want to change the memory used by the JVM.
-
-### Log configuration
-
-You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
-
-The default configuration is given below :
-
- log4j.rootCategory=WARN, R, stdout
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
-
- log4j.appender.R.MaxFileSize=1024KB
- # Keep some backup files
- log4j.appender.R.MaxBackupIndex=5
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # with these we'll not get innundated when switching to DEBUG
- log4j.logger.jdbm.recman.BaseRecordManager=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
- log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
- log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
-
- # Replication logs
- log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
- log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
-
- # Search log
- log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
-
- # Other logs
- log4j.logger.org.apache.directory.api=FATAL
- log4j.logger.org.apache.directory.server=FATAL
- log4j.logger.net.sf.ehcache=FATAL
- log4j.logger.org.apache.mina=FATAL
-
-
diff --git a/content/apacheds/advanced-ug/2.2.3-macosx-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2.3-macosx-instance-layout.mdtext
deleted file mode 100644
index d6e4ad9..0000000
--- a/content/apacheds/advanced-ug/2.2.3-macosx-instance-layout.mdtext
+++ /dev/null
@@ -1,293 +0,0 @@
-Title: 2.2.3 - MacOSX Instance Layout
-NavPrev: 2.2.2-rpm-instance-layout.html
-NavPrevText: 2.2.2 - RPM Instance Layout
-NavUp: 2.2-instance-layout.html
-NavUpText: 2.2 Instance Layout
-NavNext: 2.2.4-windows-instance-layout.html
-NavNextText: 2.2.4 - Windows Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.3 - ![MacOSX](images/mac.png) MacOSX Instance Layout
-
-
-The Mac OS X installer creates the following layout on yout disk :
-
- /
- |
- +-- usr/
- | |
- | +-- bin/
- | | |
- | | +-- apacheds The script that starts the server
- | |
- | +-- local/
- | |
- | +-- apacheds-<version>
- | |
- | +-- bin/
- | | |
- | | +-- wrapper* The wrapper
- | | |
- | | +-- apacheds* The ApacheDS server starter
- | |
- | +-- conf/
- | | |
- | | +-- wrapper.conf
- | |
- | +-- instances/
- | | |
- | | +-- default/
- | | |
- | | +-- run/
- | | |
- | | +-- partitions/
- | | |
- | | +-- log/
- | | |
- | | +-- conf/
- | | | |
- | | | +-- wrapper-instance.conf
- | | | |
- | | | +-- log4j.properties
- | | | |
- | | | +-- config.ldif
- | | |
- | | +-- cache/
- | | |
- | | +-- syncrepl-data/
- | |
- | +-- lib/
- | | |
- | | +-- wrapper-3.2.3.jar
- | | |
- | | +-- libwrapper.jnilib
- | | |
- | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
- | | |
- | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
- | |
- | +-- LICENSE
- | |
- | +-- NOTICE
- +-- Library/
- |
- +-- LaunchDaemons/
- |
- +-- org.apache.directory.server.plist The daemon plist
-
-## Defining an instance
-
-The default installation comes with a default instance (aka <em>'default'</em>). It's possible to define more instances, you will have to copy the directory <em>/usr/local/apacheds-<version>/<instances>/default</em> and give it the name of the new instance. Then, be sure to remove everything under the <em>run/</em>, <em>partitions/</em>, <em>log/</em>, <em>syncrepl-data</em> and <em>cache/</em> directories to create a blank new instance. Here, we have created a blank <em>test</em> instance :
-
- /
- |
- +-- usr/
- |
- +--local/
- |
- +-- apacheds-<version>/
- |
- +-- test/
- |
- +-- run/
- |
- +-- partitions/
- |
- +-- log/
- |
- +-- cache/
- |
- +-- conf/
- |
- +-- wrapper-instance.conf
- |
- +-- log4j.properties
- |
- +-- config.ldif
-
-The next step is to be sure that the config.ldif file is modified to not conflict with any other instance of the server : it's just a mater to change the port used by the server.
-
-You will also have to define a new daemon starter. This is done by copying the <em>Library/LaunchDaemons/org.apache.directory.server.plist</em> file and modifying it :
-
- $ sudo cp /Library/LaunchDaemons/org.apache.directory.server.plist /Library/LaunchDaemons/org.apache.directory.server.test.plist
-
-Now, update the folliwing lines in this file :
-
- <plist version="1.0">
- <dict>
- <key>Disabled</key>
- <false/>
-
- <key>Label</key>
- <string>org.apache.directory.server</string> /// Change the name
-
- <key>ProgramArguments</key>
- <array>
- <string>/usr/local/apacheds-2.0.0-M20-SNAPSHOT/bin/apacheds</string>
- <string>console</string>
- <string>default</string> /// change the name to 'test'
- </array>
-
- <key>RunAtLoad</key>
- <false/>
- </dict>
- </plist>
-
-to something like :
-
- <plist version="1.0">
- <dict>
- <key>Disabled</key>
- <false/>
-
- <key>Label</key>
- <string>org.apache.directory.server.test</string> /// test
-
- <key>ProgramArguments</key>
- <array>
- <string>/usr/local/apacheds-2.0.0-M20-SNAPSHOT/bin/apacheds</string>
- <string>console</string>
- <string>test</string> /// test
- </array>
-
- <key>RunAtLoad</key>
- <false/>
- </dict>
- </plist>
-
-
-then load the daemon :
-
- $ sudo launchctl /Library/LaunchDaemons/org.apache.directory.server.test.plist
-
-and start it :
-
- $ sudo launchctl start org.apache.directory.server.test
-
-When the newly created instance will be created, the partitions will be created.
-
-## Starting the server
-
-As we can have more than one instance, we have more than one instance in <em>/usr/local/apacheds<version>/<instances></em> that can be installed. Each one of these instance can be started using the <em>launchctl</em> command applied on each loaded instance (which has a different name). Here, we will start the server which instances is the one we just defined, ie 'test' :
-
- $ sudo launchctl start org.apache.directory.server.test
-
-The default instance name is org.apache.directory.server, to start it just type :
-
- $ sudo launchctl start org.apache.directory.server.
-
-All the data for a given instance are stored into this <em>/usr/local/apacheds-<version>/instances/<instance-name></em> directory.
-
-## Stopping the server
-
-Stopping the server is done using the same command, with a different parameter :
-
- $ sudo launchctl stop org.apache.directory.server.test
-
-Again, you must provide the instance name
-
-## Logs
-
-You can check what's going on in the <em>apacheds-<version>instances/<instance-name>/log/wrapper.log</em> file, and <em>apacheds-<version>instances/<instance-name>/log/apacheds.log</em> file which is created using the configuration set in <em>apacheds-<version>instances/<instance-name>/conf/log4j.properties</em>.
-
-Typically, when you start the server, you will get such log :
-
- $ more wrapper.log
- STATUS | wrapper | 2015/01/04 07:26:14 | --> Wrapper Started as Console
- STATUS | wrapper | 2015/01/04 07:26:15 | Launching a JVM...
- INFO | jvm 1 | 2015/01/04 07:26:15 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
- INFO | jvm 1 | 2015/01/04 07:26:15 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
- INFO | jvm 1 | 2015/01/04 07:26:15 |
- INFO | jvm 1 | 2015/01/04 07:26:18 | _ _ ____ ____
- INFO | jvm 1 | 2015/01/04 07:26:18 | / \ _ __ ___ ___| |__ ___| _ \/ ___|
- INFO | jvm 1 | 2015/01/04 07:26:18 | / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
- INFO | jvm 1 | 2015/01/04 07:26:18 | / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
- INFO | jvm 1 | 2015/01/04 07:26:18 | /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
- INFO | jvm 1 | 2015/01/04 07:26:18 | |_|
- INFO | jvm 1 | 2015/01/04 07:26:18 |
-
-
-### Log configuration
-
-You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
-
-The default configuration is given below :
-
- log4j.rootCategory=WARN, R, stdout
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
-
- log4j.appender.R.MaxFileSize=1024KB
- # Keep some backup files
- log4j.appender.R.MaxBackupIndex=5
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # with these we'll not get innundated when switching to DEBUG
- log4j.logger.jdbm.recman.BaseRecordManager=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
- log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
- log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
-
- # Replication logs
- log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
- log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
-
- # Search log
- log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
-
- # Other logs
- log4j.logger.org.apache.directory.api=FATAL
- log4j.logger.org.apache.directory.server=FATAL
- log4j.logger.net.sf.ehcache=FATAL
- log4j.logger.org.apache.mina=FATAL
-
-
-### JVM setting
-
-Were you to change the memory you want to use for a given instance, you will have to modify the <em>/usr/local/apacheds-<version>/<instances>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
-
- ##
- ## In this file you can override parameters specified in the default
- ## Apache Directory Server config file which is usually at
- ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
- ##
- ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
- ## For a list of properties that can be set.
- ##
-
- ## Override the JRE used
- # wrapper.java.command=<path-to-java-executable>
-
- ## Override the JVM memory settings
- ## Initial Java Heap Size (in MB)
- # wrapper.java.initmemory=1024
-
- ## Maximum Java Heap Size (in MB)
- # wrapper.java.maxmemory=2048
-
-You mainly want to change the memory used by the JVM.
-
diff --git a/content/apacheds/advanced-ug/2.2.4-windows-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2.4-windows-instance-layout.mdtext
deleted file mode 100644
index d794098..0000000
--- a/content/apacheds/advanced-ug/2.2.4-windows-instance-layout.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 2.2.4 - Windows Instance Layout
-NavPrev: 2.2.3-macosx-instance-layout.html
-NavPrevText: 2.2.3 - MacOSX Instance Layout
-NavUp: 2.2-instance-layout.html
-NavUpText: 2.2 Instance Layout
-NavNext: 2.2.5-generic-instance-layout.html
-NavNextText: 2.2.5 - Generic Instance Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.4 - ![Windows](images/windows.png) Windows Instance Layout
-TODO...
diff --git a/content/apacheds/advanced-ug/2.2.5-generic-instance-layout.mdtext b/content/apacheds/advanced-ug/2.2.5-generic-instance-layout.mdtext
deleted file mode 100644
index a452879..0000000
--- a/content/apacheds/advanced-ug/2.2.5-generic-instance-layout.mdtext
+++ /dev/null
@@ -1,172 +0,0 @@
-Title: 2.2.5 - Generic Instance Layout
-NavPrev: 2.2.4-windows-instance-layout.html
-NavPrevText: 2.2.4 - Windows Instance Layout
-NavUp: 2.2-instance-layout.html
-NavUpText: 2.2 Instance Layout
-NavNext: 3-admin-model.html
-NavNextText: 3 - Administrative Model
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.5 - Generic Instance Layout
-This installer just contain everything needed to start *ApacheDS* but it will not create a daemon not a Windows Service. Would one like to start *ApacheDS*, it will have to start the <em>apacheds.sh</em> or <em>apacheds.bat</bat> script shell.
-
-The installer is just a raeball that needs to be oepend and deflated at the selected position :
-
- tar xzpf apacheds-<version>.tar.gz
-
-or
-
- gunzip apacheds-<version>.zip
-
-
-The layout is quite simple :
-
- apacheds-<version>
- |
- +-- lib/
- | |
- | +-- apacheds-service-<version>.jar
- |
- +-- instances/
- | |
- | +-- default/
- | |
- | +-- run/
- | |
- | +-- partitions/
- | |
- | +-- log/
- | |
- | +-- conf/
- | | |
- | | +-- log4j.properties
- | | |
- | | +-- config.ldif
- | |
- | +-- cache/
- |
- +-- bin/
- | |
- | +-- apacheds.bat
- | |
- | +-- apacheds.sh
- | |
- | +-- cpappend.bat
- |
- +-- NOTICE
- |
- +-- LICENSE
-
-In order to start the server, you will have to make the shell script executable (it is not by default):
-
- $ chmod u+x apacheds-<version>/bin/apacheds.sh
-
-## Starting the server
-
-Starting the server is as simple as starting the script :
-
- $ ./apacheds-<version>/bin/apacheds.sh start
- Using ADS_HOME: .../apacheds-<version>
- Using JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
-
- Starting ApacheDS instance 'default'...
- $
-
-## Stopping the server
-
-The server is now started. To stop it, you have to execute this command :
-
- $ ./apacheds-<version>/bin/apacheds.sh stop
- Using ADS_HOME: .../apacheds-<version>
- Using JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
-
- Stoping ApacheDS instance 'default' running as 23080
- ApacheDS instance 'default' stopped successfully
-
-## Selection a different instance
-
-You can start many instances of the server, assuming you have duplicated the content of teh <em>instances/default</em> directory, and modified the <em>instances/default/conf/config.ldif</em> file (cahnge the transports so that there is no collision between servers)
-
-## Logs
-
-You can check what's going on in the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.log</em> file, which is created using the configuration set in <em>apacheds-<version>/instances/<instance-name>/conf/log4j.properties</em>.
-
-Typically, when you start the server, you will get such log :
-
- $ more apacheds.log
- [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
- directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
- security breach.
-
-and from the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.out</em> file, which contains everything the server writes on the console, you will read :
-
- $ more apacheds.out
- [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
- directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
- security breach.
- _ _ ____ ____
- / \ _ __ ___ ___| |__ ___| _ \/ ___|
- / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
- / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
- /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
- |_|
-
-### Log configuration
-
-You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
-
-The default configuration is given below :
-
- log4j.rootCategory=WARN, R, stdout
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
-
- log4j.appender.R.MaxFileSize=1024KB
- # Keep some backup files
- log4j.appender.R.MaxBackupIndex=5
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # with these we'll not get innundated when switching to DEBUG
- log4j.logger.jdbm.recman.BaseRecordManager=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
- log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
- log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
- log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
-
- # Replication logs
- log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
- log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
-
- # Search log
- log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
-
- # Other logs
- log4j.logger.org.apache.directory.api=FATAL
- log4j.logger.org.apache.directory.server=FATAL
- log4j.logger.net.sf.ehcache=FATAL
- log4j.logger.org.apache.mina=FATAL
-
-
diff --git a/content/apacheds/advanced-ug/3-admin-model.mdtext b/content/apacheds/advanced-ug/3-admin-model.mdtext
deleted file mode 100644
index 31ccf9f..0000000
--- a/content/apacheds/advanced-ug/3-admin-model.mdtext
+++ /dev/null
@@ -1,98 +0,0 @@
-Title: 3 - Administrative Model
-NavPrev: 2.2.5-generic-instance-layout.html
-NavPrevText: 2.2.5 - Generic Instance Layout
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 3.1-administrative-points.html
-NavNextText: 3.1 - Administrative Points
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-
-## Chapter content
-
-* [3.1 - Administrative Points](3.1-administrative-points.html)
-* [3.2 - Operations on an Administrative Point](3.2-operations-on-an-administrativepoint.html)
-
-# 3 - Administrative Model
-
-The **Administrative Model** is a really critical notion that needs to be understood, because it drives many of ApacheDS roles.
-
-It's directly inherited by the **X.500** Administrative model (in fact, we do implement the full **X.500** specification related to **AAs**).
-
-## What is the Administrative Model ?
-
-The idea is to define the **DIT** as some areas which are administered.
-Each area can be defined, and covers a set of entries, and each area can manage one ore more roles we want to manage.
-Those roles can be related to authorization, schema, etc... Each of these areas can overlap, but in any case, if two areas are overlapping,
-then one area totally includes the other one.
-
-The Administrative Model is everything we need to implement in order to be able to manage roles on some defined areas.
-
-## Areas
-
-An Area describes a part of the **DIT** which will start from a specific entry, and spans across a part of the subtree starting at the base entry. An area is administered by an **AP** (Administrative Point) which holds all the needed information about the area and the roles.
-
-We have three kind of areas :
-
-* AAA : Autonomous Administrative Areas
-* SAA : Specific Administrative Areas
-* IAA : Inner Administrative Areas
-
-**AAAs** cover all the roles as if we had declared one **SAA** for each existing role. They overload any area in which they can be encapsulated, hiding them.
-
-**SAAs** cover one specific role, and overload any encapsulating area with the same role.
-
-**IAAs** cover one specific role, but don't not overload any encapsulating area with the same role.
-
-## Administration Point
-
-An **Administration Point** is the point in the **DIT** where an area starts. It defines the roles, and the scope that applies to this area.
-
-Once we know which area we need to define, and the associated roles, it's mandatory to store those information in the **DIT**. This is done by adding **subentries**, which just are entries storing all the administrative configuration.
-
-An Administrative Point is stored as a **subentry** (which is just a plain LDAP entry) just below the base of the defined area.
-
-<DIV class="info" markdown="1">
- A **Subentry** is just a plain normal entry except that it contains administrative model informations.
- They are stored below the entry they are managing, as a child entry.
-</DIV>
-
-<DIV class="note" markdown="1">
- We also use the term "subtree" to define areas. This is due to the fact that we define a subtree specification in the administration point to express the set of selected entries.
-</DIV>
-
-## Roles
-
-The roles are the various aspects which are managed by the administration points. Currently, we manage five different roles in ApacheDS :
-
-* Authorization : manage the access to entries
-* Schema : define the schema to be used by a subtree
-* Triggers : define the triggers that can be leveraged in a subtree
-* Collective Attributes : manage attributes that are valid ofr a set of entries
-* Replication : manage the replication of a set
-
-# ApacheDS 2.0 coverage
-
-Currently, in Apache 2.0, we don't implement all this model. What is supported is :
-
-* AAA and SAA : We don't currently support IAA
-* We don't have more than one schema
-* Replication is not managed with any administration point
-
-Those missing parts will be implemented in the forthcoming versions.
-
diff --git a/content/apacheds/advanced-ug/3.1-administrative-points.mdtext b/content/apacheds/advanced-ug/3.1-administrative-points.mdtext
deleted file mode 100644
index 7112f42..0000000
--- a/content/apacheds/advanced-ug/3.1-administrative-points.mdtext
+++ /dev/null
@@ -1,160 +0,0 @@
-Title: 3.1. Administrative points
-NavPrev: 3-admin-model.html
-NavPrevText: 3 - Administrative Model
-NavUp: 3-admin-model.html
-NavUpText: 3 - Administrative Model
-NavNext: 3.2-operations-on-an-administrativepoint.html
-NavNextText: 3.2 Operations on an a Administrative Point
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1. Administrative points
-
-An *Administrative Point* is an entry which is defining a starting point
-from which some of the four existing administrative roles will span. It's
-important to understand than an Administrative Point (or *AP*) comes hand
-in hand with the associated *Subentries*, otherwise it's useless.
-
-Any entry can be defined as an *AP*.
-
-In the following schema, we have depicted a DIT with three *AP*s, the big
-one being an *AAP*, the blue one is a *SAP* and the green one is an *IAP*.
-They all define an area on which they are active and the dashed lines for
-the *IAP* are used to express the fact that an entry within the *IAP* area
-still depends on the higher *AAP*.
-
-
-![APs-tree](images/APs-tree.png)
-
-
-Directly under an *AP*, we will find some *Subentries* defining the scopes
-on which they are active. These scopes (one per subentry) are called
-*SubtreeSpecification*, and define the entries that can be handled by the
-role the Subentry is defined for.
-
-The schema shows the relation between the *AP* and one *SubEntry* :
-
-
-![subentry](images/subentry.png)
-
-
-## Administrative Point
-We will describe the types of Administrative Points we are managing and the
-way they impact their associated Administrative Areas (*AA*)
-
-We have three different kind of *AP* :
-
-* Autonomous AP ( *AAP*)
-* Specific AP (*SAP*)
-* Inner AP (*IAP*)
-
-Those three different *APs* are related with each other in this way :
-
-* *AAPs* manage an *AA* as if all the possible type of *SAP* where declared
-for this area
-* *SAPs* manage an *AA* with respect to one specific kind of role (Access
-Control, Collective Attributes, SubSchema or Trigger Execution)
-* IAPs manage an *AA* inside another *AP*
-* An *AAP* or a *SAP* starts at some point in the tree, and all the entries
-below this *AAP*/*SAP* aren't related to any other *AAP*. That also means
-that if an *AAP*/*SAP* is created below an existing AP, then all the
-entries it covers are unlinked from the previous AP (except that for *SAP*,
-we just logically keep a link to the higher AP for all the other aspects
-but the one covered by the new *SAP*)
-* An *IAP* _must_ be included into another *AP*, being it an *AAP*, *SAP*
-or *IAP*. It controls a specific aspect too, as for the *SAP*, but it will
-be combined with any of the above *AP*.
-
-## Roles
-*AP* are managing some administrative aspect, defined by a role :
-
-* ACI : Manage the access control
-* CollectiveAttribute : Manage the collective attributes
-* SubSchema (not handled atm)
-* TriggrExecution : Manage the execution of stored procedures
-
-# Subentry
-
-Once we have defined an *AP*, we can add some *subentries* which contain
-the description of the administrative actions, including :
-
-* The area this *subentry* covers, defined by a *SubtreeSpecification*,
-named *subtree*.
-
-
-The *SubtreeSpecification* can be complex. Its grammar is given below :
-
-
- <subtreeSpecification> ::= '{' <sps-e> <subtreeSpecificationComponent-e>'}'
-
- <subtreeSpecificationComponent-e> ::= <subtreeSpecificationComponent> <sps-e> <subtreeSpecificationComponent-list> | e
-
- <subtreeSpecificationComponent-list> ::= ',' <sps-e>
- <subtreeSpecificationComponent> <sps-e>
- <subtreeSpecificationComponent-list> | e
-
- <subtreeSpecificationComponent> ::=
- 'base' <sps> DN
- | 'specificExclusions' <sps> '{' <sps-e> <specificExclusion-e> '}'
- | 'minimum' <sps> INTEGER
- | 'maximum' <sps> INTEGER
- | 'specificationFilter' <sps> <refinement-filter>
-
- <specificExclusion-e> ::= <specificExclusion> <sps-e>
- <specificExclusion-list> | e
-
- <specificExclusion-list> ::= ',' <sps-e> <specificExclusion> <sps-e>
- <specificExclusion-list> | e
-
- <specificExclusion> ::= 'chopBefore' <sps-e> ':' <sps-e> DN | 'chopAfter'
- <sps-e> ':' <sps-e> DN
-
- <refinement-filter> ::= <refinement> | FILTER
-
- <refinement> ::=
- 'item' <sps-e> ':' <sps-e> <oid>
- | 'and' <sps-e> ':' <sps-e> '{' <sps-e> <refinement-e> '}'
- | 'or' <sps-e> ':' <sps-e> '{' <sps-e> <refinement-e> '}'
- | 'not' <sps-e> ':' <sps-e> <refinement>
-
- <refinement-e> ::= <refinement> <sps-e> <refinement-list> | e
-
- <refinement-list> ::= ',' <sps-e> <refinement> <sps-e> <refinement-list> | e
-
- <oid> ::= DESCR | NUMERICOID
-
- <sps> ::= ' ' <sps-e>
-
- <sps-e> ::= ' ' <sps-e> | e
-
-
-Some exemple of such subtrees :
-
-**select all the entries below the AdministrativePoint entry :**
-
- {}
-
-
-**select all the entries below the ou=users branch
-starting from the AdministrativePoint entry :**
-
- { base "ou=users" }
-
-
-** exclude all the entries below the "ou=groups" branch : **
-
- { specificExclusions { chopBefore:"ou=groups" } }
diff --git a/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext b/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext
deleted file mode 100644
index 56ed580..0000000
--- a/content/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.mdtext
+++ /dev/null
@@ -1,185 +0,0 @@
-Title: 3.2 Operations on an Administrative Point
-NavPrev: 3.1-administrative-points.html
-NavPrevText: 3.1 - Administrative Points
-NavUp: 3-admin-model.html
-NavUpText: Administrative Model
-NavNext: 4-authentication-and-authorization.html
-NavNextText: 4 - Authentication and Authorization
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.2 Operations on an Administrative Point
-There are six kind of operations we can have on an AdministrativePoint :
-
-* creating a new AP
-* removing an existing AP
-* modifying an existing AP by adding or removing a role
-* renaming an AP
-* moving an AP
-* renaming or moving an AP
-
-Renaming an AP has no impact on the administrative model, as we don't point
-(internally) on the entry's DN, but on its UUID, so the last three
-operations can be gathered into one single Move operation.
-
-Also note that any modification made on an entry's AdminsitrativeRole may
-have an impact on all it's descendants and ascendants (this is true for the
-Modify and Move operation)
-
-## Adding an AP entry
-This seems to be a simple operation, however many checks have to be done in
-order to not break the existing Administrative model.
-
-First of all, we have to check that the added entry contains the
-AdministrativeRole attributeType, and that this role is not empty. As we
-don't have any semantic control for this AT (the attached syntax is just
-expecting the values to be Strings), we have to do those checks in the
-AdminInterceptor.
-
-Here are the checks we must provide :
-* the AdministrativeRole AT must have values
-* those values must be roles (ie one of the 4 possible specific area roles,
-or one of the 3 inner area roles, or the autonomous area role)
-* there should not be duplicated
-* we can't have an AAP with any other role
-* we can't have an IAP and an SAP for the same role
-
-Once those basic checks done, we also have to check that the roles
-hierarchy will remain consistent after the addition, ie :
-* if an IAP is added, it must have a parent AAP or at least a parent SAP
-for the same role
-
-If all those checks are ok, we can add the entry into the base, and update
-the AP cache
-
-## Deleting an AP entry
-This operation is way simpler, as we can't delete an entry if it has some
-children, so there is no need to check that the administrative model is
-consistent.
-
-We just have to remove the entry and update the AP cache
-
-## Modifying an AP entry
-This is way more complex. We can have five kind of modification here :
-* addition of roles
-* deletion of roles
-* replacement of roles
-* creation of a new AdministrativeRole attribute
-* removing of an existing AdministrativeRole attribute
-
-The three first modifications can imply more than one role. We have to deal
-with each of those modifications one by one.
-
-### Addition of roles
-For this modification, we will have to check for each of the roles the very
-same elements than for the Add operation above :
-
-* if the entry does not have an AdministrativeRole AT, we have to create it
-* we must have at least one value
-* the role must be syntaxicaly correct
-* it should not already exist into the attribute
-* we can't add it if we already have an AAP role
-* we can't add it if it's an IAP and a SAP with the same role exists
-* if it's an IAP, it must have a parent AAP or SAP with the same role
-
-If all of those checks are ok, we can update the AP cache, which must be
-cloned, otherwise we may have to rollback the operation if any of the
-following modification fails.
-
-### Removing of roles
-First, if there is no value for this modification, then that means we must
-delete the Attribute. This case will be analyzed later.
-For each of the roles to remove, we have to apply those checks :
-* the role must be syntaxicaly correct
-* it must already exist into the attribute
-* we can't remove an AAP or a SAP if there is a direct IAP in one of its
-direct descendant (ie, if we have a SAP or an AAP while descending into the
-tree, we can stop checking the branch)
-
-Now, if there are no values, we have to get the existing roles and apply he
-same checks
-
-If everything is fine, we can remove the roles from the attribute.
-
-### Replacing roles
-This kind of modifications are not currently supported
-
-## Moving an AP
-As we move the entry, we may induce some inconsistencies in the AP tree.
-
-The problem we might have is that if we move an entry having an IAP in a
-place where this role has no parent AAP or parent SAP with the same role,
-then the AdministrativeModel tree will be inconsistent. We have to check
-this.
-
-# Impact on the existing entries
-
-When we add or remove a role in a server, it may have a huge impact on the
-existing entries, as soon as those roles are associated with some
-subtreeSpecification which defines a set of contained entries. If we remove
-such a role, all the entries pertaining to the associated area have to be
-updated.
-
-It's the same thing if we add a SAP or a AAP, as all the children entries
-which were depending on a higher AP will be modified either.
-
-In any case, we don't even need to define a SubtreeSpecification, as soon
-as an AAP or SAP is created, it excludes all the children entries from any
-other higher AP areas.
-
-## Adding a Role
-Whatever the way we used to add a role (add an entry, modify an existing
-one), there are one thing we have to do depending on the kind of role we
-added. Of course, we stop modifying entries when another lower SAP or AAP
-is defined.
-
-### Adding an AAP
-All the children which were pointing to any higher IAP, SAP or AAP will be
-dereferenced. If a subtree specification is added under the newly added
-AAP, then all the associated entries will be updated.
-
-### Adding a SAP
-All the children which were pointing to any higher IAP or SAP with the same
-type of role, or an AAP, will be dereferenced (of course, only for the
-added type of role, the other references will remain). If a subtree
-specification is added under the newly added SAP, then all the associated
-entries will be updated.
-
-### Adding an IAP
-All the children which were pointing to any higher IAP with the same type
-of role will be dereferenced, and will now point to this newly added IAP.
-All the children which were pointing on a SAP with the same role, or an
-AAP, will be modified to also point on the newly added IAP.
-
-## Removing a role
-Depending on the kind of role we removed, we will have to update the
-entries accordingly.
-
-### Removing an AAP
-All the entries referencing the removed AAP will be updated, and will now
-reference the inherited AAP, SAP and IAP (if any). If there is some higher
-IAP, we will also reference it.
-
-### Removing a SAP
-All the entries referencing the removed SAP will be updated, and will now
-reference either the parent AAP or the parent SAP with the same role, if
-any. We will also reference an IAP with the same role if we have some
-higher in the hierarchy.
-
-### Removing an IAP
-All the entries referencing the removed IAP will be updated. There is
-nothing else to do.
diff --git a/content/apacheds/advanced-ug/4-authentication-and-authorization.mdtext b/content/apacheds/advanced-ug/4-authentication-and-authorization.mdtext
deleted file mode 100644
index bd0a404..0000000
--- a/content/apacheds/advanced-ug/4-authentication-and-authorization.mdtext
+++ /dev/null
@@ -1,68 +0,0 @@
-Title: 4 - Authentication & Authorization
-NavPrev: 3.2-operations-on-an-administrativepoint.html
-NavPrevText: 3.2 Operations on an a Administrative Point
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 4.1-authentication.html
-NavNextTest: 4.1 - Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - Authentication and Authorization
-
-## Chapter content
-
-* [4.1 - Authentication](4.1-authentication.html)
- * [4.1.1 - Simple authentication](4.1.1-simple-authn.html)
- * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
- * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
- * [4.1.1.2 - Unauthenticated Authentication](4.1.1.2-unauthenticated-authn.html)
- * [4.1.2 - SASL authentication](4.1.2-sasl-authn.html)
- * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
- * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
- * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
- * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
- * [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
- * [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
- * [4.1.3 - Kerberos authentication](4.1.3-kerberos-authn.html)
- * [4.1.4 - Client authentication through certificates](4.1.4-certificate-authn.html)
-* [4.2 - Authorization](4.2-authorization.html)
- * [4.2.1 - Introduction](4.2.1-introduction.html)
- * [4.2.2 - Definitions](4.2.2-definitions.html)
- * [4.2.3 - Enabling Access Control](4.2.3-enabling-access-control.html)
- * [4.2.4 - ACI Types](4.2.4-aci-types.html)
- * [4.2.4.1 - Entry ACI](4.2.4.1-entryaci.html)
- * [4.2.4.2 - Prescriptive ACI](4.2.4.2-prescriptiveaci.html)
- * [4.2.4.3 - Subentry ACI](4.2.4.3-subentryaci.html)
- * [4.2.5 - ACI Elements](4.2.5-aci-elements.html)
- * [4.2.5.1 - User Classes](4.2.5.1-userclasses.html)
- * [4.2.5.2 - Protected Items](4.2.5.2-protecteditems.html)
- * [4.2.5.3 - Permissions](4.2.5.3-permissions.html)
- * [4.2.5.4 - Subtrees](4.2.5.4-subtrees.html)
- * [4.2.6 - The ACDF Engine](4.2.6-the-acdf-engine.html)
- * [4.2.6.1 - How it works](4.2.6.1-how-it-works.html)
- * [4.2.6.2 - Selections](4.2.6.2-selections.html)
- * [4.2.6.3 - Constraints](4.2.6.3-constraints.html)
- * [4.2.6.4 - Priority](4.2.6.4-priority.html)
- * [4.2.7 - Using ACIs Trail](4.2.7-using-acis-trail.html)
- * [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
- * [4.2.8 - ACI Administration](4.2.8-aci-administration.html)
- * [4.2.9 - Migration from other LDAP Servers](4.2.9-migration-from-other-ldap-servers.html)
- * [4.2.10 - ACI grammar](4.2.10-aci-grammar.html)
- * [4.2.11 - Links and References](4.2.11-links-and-references.html)
-* [4.3 Password Policy](4.3-password-policy.html)
-
diff --git a/content/apacheds/advanced-ug/4.1-authentication.mdtext b/content/apacheds/advanced-ug/4.1-authentication.mdtext
deleted file mode 100644
index 7a44733..0000000
--- a/content/apacheds/advanced-ug/4.1-authentication.mdtext
+++ /dev/null
@@ -1,58 +0,0 @@
-Title: 4.1. Authentication
-NavPrev: 4-authentication-and-authorization.html
-NavPrevText: 4 - Authentication & Authorization
-NavUp: 4-authentication-and-authorization.html
-NavUpText: 4 - Authentication & Authorization
-NavNext: 4.1.1-simple-authn.html
-NavNextText: 4.1.1 - Simple authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1. Authentication
-
-## Chapter content
-
-* [4.1.1 - Simple authentication](4.1.1-simple-authn.html)
- * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
- * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
- * [4.1.1.3 - Unauthenticated Authentication](4.1.1.3-unauthenticated-authn.html)
-* [4.1.2 - SASL authentication](4.1.2-sasl-authn.html)
- * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
- * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
- * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
- * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
- * [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
- * [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
-* [4.1.3 - Kerberos authentication](4.1.3-kerberos-authn.html)
-* [4.1.4 - Client authentication through certificates](4.1.4-certificate-authn.html)
-
-**LDAP** is a connected protocol. That means you should create a session before being able to fetch some data from the server. This session is created through an authentication process.
-
-There are two different types of authentication on LDAP :
-* Simple
-* SASL
-
-We will describe those two kind of authentication, and will also describe how this can be leveraged by some specific authentication mechanisms, like Kerberos or based on certificates.
-
-Last, not least, the **Anonymous** authentication will be explain in a separate chapter, even if it's a part of the Simple authentication mechanism.
-
-## Authentication and LDAP Session
-
-An authentication will result in the creation of a LDAP session, which will exist as long as the authenticated user does not physically disconnect from the server.
-
-A Session can have his status changed all alog its life : we can switch from an Authenticated state to an Anonymous state, and back to a SASL authenticated state. The session is created the first time the user connects on the server, and its status changes when the user authenticates.
-
diff --git a/content/apacheds/advanced-ug/4.1.1-simple-authn.mdtext b/content/apacheds/advanced-ug/4.1.1-simple-authn.mdtext
deleted file mode 100644
index 6dbfe58..0000000
--- a/content/apacheds/advanced-ug/4.1.1-simple-authn.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: 4.1.1 Simple Authentication
-NavPrev: 4.1-authentication.html
-NavPrevText: 4.1 - Authentication
-NavUp: 4.1-authentication.html
-NavUpText: 4.1 - Authentication
-NavNext: 4.1.1.1-anonymous-authn.html
-NavNextText: 4.1.1.1 - Anonymous Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.1 - Simple Authentication
-
-This authentication mode uses a **Simple Bind Request**. It's just about sending a name and a password to the server, which will either create a session for the given credentials, or reject the request.
-
-As we said, we have to pass a name and a password. This leads to three different combinations of **Simple Bind** :
-
- * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
- * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
- * [4.1.1.3 - Unauthenticated Authentication](4.1.1.3-unauthenticated-authn.html)
-
- The second mechanism is a normal authentication. Not all the servers support the 2 following mechanisms.
-
diff --git a/content/apacheds/advanced-ug/4.1.1.1-anonymous-authn.mdtext b/content/apacheds/advanced-ug/4.1.1.1-anonymous-authn.mdtext
deleted file mode 100644
index bb0fef9..0000000
--- a/content/apacheds/advanced-ug/4.1.1.1-anonymous-authn.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: 4.1.1.1 Anonymous Authentication
-NavPrev: 4.1.1-simple-authn.html
-NavPrevText: 4.1.1 - Simple Authentication
-NavUp: 4.1.1-simple-authn.html
-NavUpText: 4.1.1 - Simple Authentication
-NavNext: 4.1.1.2-name-password-authn.html
-NavNextText: 4.1.1.2 - Name/Password Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.1.1 - Anonymous Authentication
-
-When we don't provide a name or password while proceeding to a Bind, we enter into an Anonymous mode. This is a mode that the server must allow, otherwise the user won't be authenticated.
-
-It worth noticing that one can do a search on a server without first authenticating : the search will be done with an anonymous status (in other words, an Anonymous session will be created in this case).
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.1.1.2-name-password-authn.mdtext b/content/apacheds/advanced-ug/4.1.1.2-name-password-authn.mdtext
deleted file mode 100644
index 1f21179..0000000
--- a/content/apacheds/advanced-ug/4.1.1.2-name-password-authn.mdtext
+++ /dev/null
@@ -1,150 +0,0 @@
-Title: 4.1.1.2 Name/Password Authentication
-NavPrev: 4.1.1.1-anonymous-authn.html
-NavPrevText: 4.1.1.1 Anonymous Authentication
-NavUp: 4.1.1-simple-authn.html
-NavUpText: 4.1.1 - Simple Authentication
-NavNext: 4.1.1.3-unauthenticated-authn.html
-NavNextText: 4.1.1.3 - Unauthenticated Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.1.2 - Name/Password Authentication
-
-This is the most common authentication system, though not the safest. The user provides his name and a password. Both are passed as clear text to the server, which checks that the user exists, and that its password is correct.
-
-## User's name retrieval
-
-The first thing the server does is to check that the user's name exists in the server. The provided name is always a full **DN**.
-
-Here is an example of simple authentication using Studio, where we authenticate the **uid=admin,ou=system** user :
-
-![Name/Password authentication](images/simple-name-password-authn.png)
-
-The password is not visible here, but this is just for security reasons.
-
-This request is sent to the server, which will check that the **uid=admin,ou=system** exists in its backend. If it doesn't, the authentication will fail.
-
-## Password check
-
-That's not enough : once the user is retrieved, we have to check the provided password against the stored password.
-
-The entry associated with the user should contain a **userPassword** AttributeType, otherwise the request will be rejected. Here is an example of such an entry :
-
- :::Text
- version: 1
-
- dn: uid=admin,ou=system
- objectClass: top
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- cn: system administrator
- sn: administrator
- displayName: Directory Superuser
- uid: admin
- userPassword:: c2VjcmV0
-
-As we can see, this entry has an **userPassword** which contains the base64 encoded password. If we decode the value, we get :
-
- :::Text
- userPassword: secret
-
-Not exactly safe...
-
-### Password storage
-
-As we have just seen, the password is stored in plain text in the server. This is not exactly safe ! As soon as someone gets access to your server, all the passwords are compromised. This is certainly not the way we want to protect our users !
-
-Hopefully, you can hash those passwords, instead of storing them as provided.
-
-<DIV class="note" markdown="1">
-A hashed password is not a password we can decrypt : when we hash a password, we lose some information. Also note that two different passwords might result in the exact same hash value, but it's unlikely.
-</DIV>
-
-**ApacheDS** let you select an encryption type when you inject a password :
-
-![Password hash method selection](images/password-hash-selection.png)
-
-The following hash method are available :
-
-| Hash method | Comment |
-|---|---|
-| PLAIN | no hashing |
-| MD5 | - |
-| SMD5 | Salted MD5 |
-| crypt | - |
-| SHA | SHA-1 |
-| SSHA | Salted SHA-1 |
-| SHA-256 | SHA-2 (Studio 2.0) |
-| SSHA-256 | Salted SHA-2 (Studio 2.0) |
-| SHA-384 | SHA-2 (Studio 2.0) |
-| SSHA-384 | Salted SHA-2 (Studio 2.0) |
-| SHA-512 | SHA-2 (Studio 2.0) |
-| SSHA-512 | Salted SHA-2 (Studio 2.0) |
-
-### How it works ?
-
-So the server receives a Name/Password authentication request. The password is _in clear text_ up to this point. Once the user is found in the server, and if it has a **userPassword** attributeType, the server extracts each values contained in this AttributeType (we may have more than one password per user) and check the provided password against those values.
-
-This is not as simple as it seems : as we may have hashed the values on the server, we first have to detect the selected hash method, and then hash the provided password, which result is compared to the stored hashed value.
-
-Hopefully, the hash method is stored within the hashed password in the server :
-
- :::Text
- version: 1
-
- dn: uid=admin,ou=system
- objectClass: top
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- cn: system administrator
- sn: administrator
- displayName: Directory Superuser
- uid: admin
- userPassword:: c2VjcmV0
- userPassword:: {CRYPT}FgGgCMynLfYGw
-
-Here, one of the **userPassword** value is hashed using the **crypt** algorithm. The following code is used to check the provided password :
-
- :::Text
- for each stored password
- if it has a hash method
- then
- extract the method
- hash the provided password using this method
- compare the result with the stored hash value
- if they are equal
- then
- return true
- else
- compare the provided password with the stored password
- if they are equal
- then
- return true
- done
-
- return false
-
-<DIV class="note" markdown="1">
- A few rules of thumb :<BR/>
- o Never store a password as plain text. <BR/>
- o Prefer salted methods over non salted ones, and prefer the strongest one (here, SSHA-512 on Studio 2.0, or SSHA)<BR/>
- o crypt is also a good choice<BR/>
- o Pick strong passwords, otherwise if someone gets access to the list of passwords, he or she can run a rainbow attack on it.<BR/>
- o Keep in mind that whatever you do, the password will be passed in clear text from the client to the server. Always use startTLS before any bind, or at least use SSL<BR/>
-</DIV>
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.mdtext b/content/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.mdtext
deleted file mode 100644
index e1c6b6a..0000000
--- a/content/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 4.1.1.3 Unauthenticated Authentication
-NavPrev: 4.1.1.2-name-password-authn.html
-NavPrevText: 4.1.1.2 - Name/Password Authentication
-NavUp: 4.1.1-simple-authn.html
-NavUpText: 4.1.1 - Simple Authentication
-NavNext: 4.1.2-sasl-authn.html
-NavNextText: 4.1.2 - SASL authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.1.3 - Unauthenticated Authentication
-
-The **Unauthenticated Authentication** mechanism is a bit specific. First of all, none all the **LDAP** servers support such a mechanism. In fact, the default behavior is for server to return a **unwillingToPerform** result code when someone tries to bind using a null password.
-
-We won't go any deeper into this 'feature', those interested in the rational behind it and the associated drawbacks can read the following links :
-
- [RFC 4513, Unauthenticated Authentication Mechanism of Simple Bind](http://tools.ietf.org/html/rfc4513#section-5.1.2)
-and
- [RFC 4513, Unauthenticated Mechanism Security Considerations](http://tools.ietf.org/html/rfc4513#section-6.3.1)
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.1.2-sasl-authn.mdtext b/content/apacheds/advanced-ug/4.1.2-sasl-authn.mdtext
deleted file mode 100644
index 897fa47..0000000
--- a/content/apacheds/advanced-ug/4.1.2-sasl-authn.mdtext
+++ /dev/null
@@ -1,101 +0,0 @@
-Title: 4.1.2 SASL Authentication
-navPrev: 4.1.1-simple-authn.html
-NavPrevText: 4.1.1 - Simple authentication
-NavUp: 4.1-authentication.html
-NavUpText: 4.1 - Authentication
-NavNext: 4.1.2.1-sasl-plain-text-authn.html
-NavNextText: 4.1.2.1 - SASL PLAIN text Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2 - SASL Authentication
-
-## Chapter content
-
-* [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
-* [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
-* [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
-* [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
-* [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
-* [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
-
-
-## Introduction
-
-**SASL** authentication is based on a standard described in [RFC 4422](http://www.ietf.org/rfc/rfc4422.txt). **SASL** means **S**imple **A**uthentication and **S**ecurity **L**ayer.
-
-It extends the Simple authentication, by allowing the LDAP server to authenticate the user by various mechanisms.
-
-The **SASL* Authentication is used when a simple user/password authentication is not enough, or when one want to delegate authentication to another system. Many other systems exist, and may take many parameters to authenticate a user. With **SASL**, a challenge/response system is used to get the needed information from the client, up to the point the authentication is either successful or fails.
-
-As **ApacheDS** is based on Java, we only support the **SASL** mechanisms the JDK supports :
-
- * PLAIN : cleartext user/password authentication
- * CRAM-MD5 : IMAP/POP authentication
- * DIGEST-MD5 : Http Digest authentication
- * GSSAPI : Kerberos authentication
- * EXTERNAL : External authentication
- * NTLM : NTLM authentication
- * GSS-SPNEGO : The SPNEGO authentication
-
-It's important to notice that some of those mechanisms are either useless (PLAIN) or obsolete (DIGEST-MD5).
-
-It's of course possible to modify the list of supported **SASL** mechanisms, by updating the server's configuration. The list of mechanisms is stored as entries under the following **DN** :
-
- :::Text
- ou=saslMechHandlers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
-
-One can also check the configured **SASL** mchanisms on the server by sending a _SeachRequest_ to the server, on the _RootDSE_, looking for the _supportedSASLMechanisms_. Here is the esult on ApacheDS 2.0.0 :
-
-![ApacheDS supported SASL mechanisms](images/supported-sasl-mechanisms.png)
-
-Configuring this list can also be done using **Studio ApacheDS Configuration** plugin :
-
-![ApacheDS SASL mechanisms configuration](images/sasl-mechanisms-config.png)
-
-## Usage and security
-
-Most of the existing **SASL** mechanisms are just either useless (**PLAIN**, **ANONYMOUS**) or too weak to be used in a secured environment (**DIGEST-MD5** or **CRAM-MD5**).
-
-A new **SASL** mechanism has been designed to replace the last two mechanisms : **SCRAM** ([RFC 5802](http://www.ietf.org/rfc/rfc5802.txt)).
-
-In any case, if you are using one of those mechanisms, be sure to activate **TLS**.
-
-
-## Specifications
-
-The SASL specifications are defined by an [IETF Working Group](http://datatracker.ietf.org/wg/sasl/) which has published the following proposed standards :
-
- * [RFC 4013](http://www.ietf.org/rfc/rfc4013.txt) : SASLprep: Stringprep Profile for User Names and Passwords
- * [RFC 4422](http://www.ietf.org/rfc/rfc4422.txt) : Simple Authentication and Security Layer (SASL)
- * [RFC 4505](http://www.ietf.org/rfc/rfc4505.txt) : Anonymous Simple Authentication and Security Layer (SASL) Mechanism
- * [RFC 4616](http://www.ietf.org/rfc/rfc4616.txt) : The PLAIN Simple Authentication and Security Layer (SASL) Mechanism
- * [RFC 4752](http://www.ietf.org/rfc/rfc4752.txt) : The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer
- (SASL) Mechanism
- * [RFC 5801](http://www.ietf.org/rfc/rfc5801.txt) : Using Generic Security Service Application Program Interface (GSS-API)
- Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family
- * [RFC 5802](http://www.ietf.org/rfc/rfc5802.txt) : Salted Challenge Response Authentication Mechanism (SCRAM) SASL
- and GSS-API Mechanisms
-
-Some other RFCs have been published, for each specific mechanisms, some of them are obsoleted by more recent RFCs :
-
- * [RFC 2595](http://www.ietf.org/rfc/rfc2595.txt) : Using TLS with IMAP, POP3 and ACAP (updated by RFC 4616)
- * [RFC 2195](http://www.ietf.org/rfc/rfc2195.txt) : IMAP/POP AUTHorize Extension for Simple Challenge/Response
- * [RFC 2831](http://www.ietf.org/rfc/rfc2831.txt) : Using Digest Authentication as a SASL Mechanism (obsoleted by RFC 6631)
- * [RFC 2222](http://www.ietf.org/rfc/rfc2222.txt) : Simple Authentication and Security Layer (SASL) (obsoleted by RFC 4422)
-
-
diff --git a/content/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.mdtext
deleted file mode 100644
index d308640..0000000
--- a/content/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: 4.1.2.1 SASL PLAIN Authentication
-NavPrev: 4.1.2-sasl-authn.html
-NavPrevText: 4.1.2 - SASL Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.2.2-sasl-cram-md5-authn.html
-NavNextText: 4.1.2.2 - SASL CRAM-MD5 Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.1 SASL PLAIN Authentication
-
-The **SASL PLAIN** authentication is most certainly useless, as one can already authenticate using the **Simple Bind**. However, it's still possible to issue a **SASL PLAIN** authentication on _ApacheDS_.
-
-The difference with a **Simple Bind** is that the user's name is not **DN**, but a meaningful value that is stored into one of the user's entry Attributes.
-
-When the server receives a **SASL PLAIN** bind request, it will look for the first entry which **uid** is equal to the provided value, starting from the server **searchBaseDN** position in the DIT.
-
-<DIV class="note" markdown="1">
-ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
-</DIV>
-
-<DIV class="note" markdown="1">
-ApacheDS does not yet support the authorization identity parameter.
-</DIV>
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext
deleted file mode 100644
index c712c32..0000000
--- a/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext
+++ /dev/null
@@ -1,83 +0,0 @@
-Title: 4.1.2.2 - SASL CRAM-MD5 Authentication
-NavPrev: 4.1.2.1-sasl-plain-text-authn.html
-NavPrevText: 4.1.2.1 - SASL PLAIN text Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.2.3-sasl-digest-md5-authn.html
-NavNextText: 4.1.2.3 - SASL DIGEST-MD5 Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.2 - SASL CRAM-MD5 Authentication
-
-The **CRAM-MD5** **SASL** mechanism is defined by [RFC 2195](http://www.ietf.org/rfc/rfc2195.txt).
-
-We will have an exchange between the client, which will send an empty _Bind request_ (i.e., the username and credentials won't be sent the first time), and the server will return a challenge.
-
-<DIV class="warning" markdown="1">
-It's not recommended to use this mechanism.
-</DIV>
-
-## Usage
-
-The client first send a _BindRequest_ with no credentials:
-
- :::Text
- MessageType : BIND_REQUEST
- Message ID : 1
- BindRequest
- Version : '3'
- Name : 'null'
- Sasl credentials
- Mechanism :'CRAM-MD5'
- Credentials : null
-
-The server will return a _BindResponse_ with a SASL_BIND_IN_PROGRESS status :
-
- :::Text
- MessageType : BIND_RESPONSE
- Message ID : 1
- BindResponse
- Ldap Result
- Result code : (SASL_BIND_IN_PROGRESS) saslBindInProgress -- new
- Matched Dn : ''
- Diagnostic message : ''
- Server sasl credentials : '0x3C 0x2D 0x37 0x38 0x30 0x39 0x37 0x35 0x33 0x32 0x33 0x38 0x35 0x32 0x31 0x37 0x37 0x37 0x37 0x35 0x30 0x2E 0x31 0x33 0x36 0x35 0x34 0x31 0x31 0x39 0x32 0x37 0x30 0x33 0x30 0x40 0x6C 0x6F 0x63 0x61 0x6C 0x68 0x6F 0x73 0x74 0x3E '
-
-and will accordingly send a new _BindRequest_ with the appropriate credentials which have been hashed with the server's provided challenge token :
-
- :::Text
- MessageType : BIND_REQUEST
- Message ID : 2
- BindRequest
- Version : '3'
- Name : 'null'
- Sasl credentials
- Mechanism :'CRAM-MD5'
- Credentials : (omitted-for-safety)
-
-In any case, the full exchange aims at transferring the user's credential encrypted instead of passing it in clear text. Once the server receives the password, it will check it against the stored password which must be stored in clear text.
-
-When the server receives a **SASL PLAIN** bind request, it will look for the first entry which **uid** is equal to the provided value, starting from the server **searchBaseDN** position in the DIT.
-
-<DIV class="note" markdown="1">
-ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
-</DIV>
-
-<DIV class="warning" markdown="1">
-The password must be stored in clear text on the server. This is a serious weakness...
-</DIV>
diff --git a/content/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.mdtext
deleted file mode 100644
index ebc85aa..0000000
--- a/content/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.mdtext
+++ /dev/null
@@ -1,114 +0,0 @@
-Title: 4.1.2.3 - SASL DIGEST-MD5 Authentication
-NavPrev: 4.1.2.2-sasl-cram-md5-authn.html
-NavPrevText: 4.1.2.2 - SASL CRAM-MD5 Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.2.4-sasl-gssapi-authn.html
-NavNextText: 4.1.2.4 - SASL GSSAPI Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.3 - SASL DIGEST-MD5 Authentication
-
-The **DIGEST-MD5** **SASL** mechanism is defined by [RFC 2829](http://www.ietf.org/rfc/rfc2829.txt), which has been moved to an _historic_ status by [RFC 6331](http://www.ietf.org/rfc/rfc6631.txt), due to its intrinsic weaknesses.
-
-<DIV class="warning" markdown="1">
-It's not recommended to use this mechanism.
-</DIV>
-
-## Usage
-
-As for **CRAM-MD5** mechanism, there is an exchange between the server and the client. First, the client sends a _BindRequest_ with no credentials :
-
- :::Text
- MessageType : BIND_REQUEST
- Message ID : 1
- BindRequest
- Version : '3'
- Name : 'null'
- Sasl credentials
- Mechanism :'DIGEST-MD5'
- Credentials : null
-
-The server responds with a _BindResponses_ containing a challenge :
-
- :::Text
- MessageType : BIND_RESPONSE
- Message ID : 2
- BindResponse
- Ldap Result
- Result code : (SUCCESS) success
- Matched Dn : ''
- Diagnostic message : ''
- Server sasl credentials : '0x72 0x73 0x70 0x61 0x75 0x74 0x68 0x3D 0x37 0x36 0x32 0x64 0x30 0x37 0x32 0x32 0x37 0x64 0x39 0x32 0x33 0x63 0x38 0x38 0x38 0x32 0x64 0x35 0x65 0x63 0x34 0x38 0x30 0x37 0x66 0x36 0x66 0x33 0x34 0x65 '
-
-
-The client then compute the credentials, which contains many informations, some of them being digested with the server's provided data :
-
- :::Text
- MessageType : BIND_REQUEST
- Message ID : 2
- BindRequest
- Version : '3'
- Name : 'null'
- Sasl credentials
- Mechanism :'DIGEST-MD5'
- Credentials : (omitted-for-safety)
-
-Here, the credentials content is encoded a a byte[], representing those data :
-
- :::Text
- charset = utf-8
- username = "hnelson"
- realm = "example.com"
- nonce = "XVss/yPp4ZToAItV2acf5jgCYU1ALDNoUzGSqJZA"
- nc = 00000001
- cnonce = "rQRG4H27HqvdjDVh1OhtrtYD88daWWdvfAj9XGl2"
- digest-uri = "ldap/localhost"
- maxbuf = 65536
- response = ef 63 c3 b9 c3 76 7e e6 c8 4b eb e7 7b 6e d4 56,
- qop = auth
-
-One of the big difference with **CRAM-MD5** is that we send a _realm_ (**example.com** here), which must be configured on the server and on the client.
-
-The authentication requires 3 pieces of information on the client side :
-
- * the userName
- * the realm
- * the user password
-
-## Server configuration
-
-There are a few parameters we need to configure on the server to allow this mechanism to work. First, we need to define the _searchBaseDn_, which describes where will the server look for entries having the **UID** attributeType. This is a part of the _ldapServer_ configuration :
-
-![ApacheDS SASL searchBaseDn Configuration](images/sasl-digest-md5-config.png)
-
-This parameter (_ads_searchBaseDn_ attributeType) can be found on the following entry :
-
- :::Text
- ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
-
-You also have to configure the **SaslRealms** which is also contained into the same entry (_ads_saslrealms_ attributeType)
-
-
-<DIV class="note" markdown="1">
-ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
-</DIV>
-
-<DIV class="warning" markdown="1">
-The password must be stored in clear text on the server. This is a serious weakness...
-</DIV>
diff --git a/content/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.mdtext
deleted file mode 100644
index d5b2f18..0000000
--- a/content/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.mdtext
+++ /dev/null
@@ -1,61 +0,0 @@
-Title: 4.1.2.4 - SASL GSSAPI Authentication
-NavPrev: 4.1.2.3-sasl-digest-md5-authn.html
-NavPrevText: 4.1.2.4 - SASL GSSAPI Authentication
-NavPrev: 4.1.2.3-sasl-digest-md5-authn.html
-NavPrevText: 4.1.2.3 - SASL DIGEST-MD5 Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.2.5-sasl-external-authn.html
-NavNextText: 4.1.2.5 - SASL EXTERNAL Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.4 - SASL GSSAPI Authentication
-
-This authentication mechanism is specified in the following RFCs :
-
- * [RFC 4752](http://tools.ietf.org/html/rfc4752)
-
-It's more specifically used for Kerberos V5 authentication. As **Apache Directory Server** is also a _Kerberos Server_, it comes as a natural extension of the server.
-
-It requires some configuration though.
-
-## Configuration
-
-The idea is for the **LDAP** server to delegate the authentication to the **Kerberos** Server.
-
-
-## Usage
-
-MessageType : BIND_REQUEST
-Message ID : 1
- BindRequest
- Version : '3'
- Name : ''
- Sasl credentials
- Mechanism :'GSSAPI'
- Credentials : (omitted-for-safety)
-
-
-MessageType : BIND_RESPONSE
-Message ID : 1
- BindResponse
- Ldap Result
- Result code : (SASL_BIND_IN_PROGRESS) saslBindInProgress -- new
- Matched Dn : 'null'
- Diagnostic message : 'null'
- Server sasl credentials : ''
diff --git a/content/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.mdtext
deleted file mode 100644
index 6b27a0b..0000000
--- a/content/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: 4.1.2.5 - SASL EXTERNAL Authentication
-NavPrev: 4.1.2.4-sasl-gssapi-authn.html
-NavPrevText: 4.1.2.4 - SASL GSSAPI Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.2.6-sasl-ntlm-authn.html
-NavNextText: 4.1.2.6 - SASL NTLM Authentication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.5 - SASL EXTERNAL Authentication
diff --git a/content/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.mdtext b/content/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.mdtext
deleted file mode 100644
index 8086eb2..0000000
--- a/content/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 4.1.2.6 - SASL NTLM Authentication
-NavPrev: 4.1.2.5-sasl-external-authn.html
-NavPrevText: 4.1.2.6 - SASL EXTERNAL Authentication
-NavUp: 4.1.2-sasl-authn.html
-NavUpText: 4.1.2 - SASL Authentication
-NavNext: 4.1.3-kerberos-authn.html
-NavNextText: 4.1.3 - Kerberos authentication
-
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.2.6 - SASL NTLM Authentication
diff --git a/content/apacheds/advanced-ug/4.1.3-kerberos-authn.mdtext b/content/apacheds/advanced-ug/4.1.3-kerberos-authn.mdtext
deleted file mode 100644
index 997abed..0000000
--- a/content/apacheds/advanced-ug/4.1.3-kerberos-authn.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: 4.1.3 - Kerberos authentication
-NavPrev: 4.1.2.6-sasl-ntlm-authn.html
-NavPrevText: 4.1.2.6 - SASL NTLM Authentication
-NavUp: 4.1-authentication.html
-NavUpText: 4.1 - Authentication
-NavNext: 4.1.4-certificate-authn.html
-NavNextText: 4.1.4 - Client authentication through certificates
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.3 - Kerberos authentication
diff --git a/content/apacheds/advanced-ug/4.1.4-certificate-authn.mdtext b/content/apacheds/advanced-ug/4.1.4-certificate-authn.mdtext
deleted file mode 100644
index 8537de3..0000000
--- a/content/apacheds/advanced-ug/4.1.4-certificate-authn.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: 4.1.4 - Client authentication through certificates
-NavPrev: 4.1.3-kerberos-authn.html
-NavPrevText: 4.1.3 - Kerberos authentication
-NavUp: 4.1-authentication.html
-NavUpText: 4.1 - Authentication
-NavNext: 4.2-authorization.html
-NavNextText: 4.2 - Authorization
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1.4 - Client authentication through certificates
-
-To be compoleted...
-
-At the moment, the server does not support this feature.
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.2-authorization.mdtext b/content/apacheds/advanced-ug/4.2-authorization.mdtext
deleted file mode 100644
index eda59ef..0000000
--- a/content/apacheds/advanced-ug/4.2-authorization.mdtext
+++ /dev/null
@@ -1,81 +0,0 @@
-Title: 4.2 - Authorization
-NavPrev: 4.1.4-certificate-authn.html
-NavPrevText: 4.1.4 - Client authentication through certificates
-NavUp: 4-authentication-and-authorization.html
-NavUpext: 4 - Authentication & Authorization
-NavNext: 4.3-password-policy.html
-NavNextText: 4.3 - Password Policy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2 - Authorization
-ApacheDS uses an adaptation of the X.500 basic access control scheme in
-combination with X.500 subentries to control access to entries and
-attributes within the DIT. This document will show you how to enable the
-basic access control mechanism and how to define access control information
-to manage access to protected resources.
-
-## Chapter content
-
-* [4.2.1 - Introduction](4.2.1-introduction.html)
-* [4.2.2 - Definitions](4.2.2-definitions.html)
-* [4.2.3 - Enabling access control](4.2.3-enabling-access-control.html)
-* [4.2.4 - Aci Types](4.2.4-aci-types.html)
-* [4.2.5 - Aci Elements](4.2.5-aci-elements.html)
-* [4.2.6 - The Acdf Engine](4.2.6-the-acdf-engine.html)
-* [4.2.7 - Using Acis Trail](4.2.7-using-acis-trail.html)
-* [4.2.8 - Acis Administration](4.2.8-acis-administration.html)
-* [4.2.9 - Migration from other Ldap Servers](4.2.9-migration-from-other-ldap-servers.html)
-* [4.2.10 - Aci Grammar](4.2.10-aci-grammar.html)
-* [4.2.11 - Links and References](4.2.11-links-and-references.html)
-
-
-## Some Simple Examples
-
-The ACIItem syntax is very expressive and that makes it extremely powerful
-for specifying complex access control policies. However the syntax is not
-very easy to grasp for beginners. For this reason we start with simple
-examples that focus on different protection mechanisms offered by the
-ACIItem syntax. We do this instead of specifying the grammar which is not
-the best way to learn a language.
-
-<DIV class="warning" markdown="1">
-<B>Before you go any further...</B>
-Please don't go any further until you have read up on the use of
-Subentries. Knowledge of subentries, subtreeSpecifications, administrative
-areas, and administrative roles are required to properly digest the
-following material.
-</DIV>
-
-Before going on to these trails you might want to set up an Administrative
-Area for managing access control via prescriptiveACI. Both subentryACI and
-prescriptiveACI require the presence of an Administrative Point entry. For
-more information and code examples see [ACAreas](acareas.html).
-
-### ACI Trails
-
-Here are some trails that resemble simple HOWTO guides. They're ordered
-with the most pragmatic usage first. We will add to these trails over
-time.
-
-| Trail | Description |
-|---|---|
-| DenySubentryAccess (TBW) | Protecting access to subentries themselves. || Enabling access to browse and read all entries and their attributes by authenticated users. |
-| [Allow Self Password Modify](4.2.7.2-allow-self-password-modify.html) | Granting users the rights needed to change their own passwords. |
-| GrantAddDelModToGroup (TBW) | Granting add, delete, and modify permissions to a group of users. |
-| GrantModToEntry (TBW) | Applying ACI to a single entry. |
-| [Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
diff --git a/content/apacheds/advanced-ug/4.2.1-introduction.mdtext b/content/apacheds/advanced-ug/4.2.1-introduction.mdtext
deleted file mode 100644
index 4f5a96f..0000000
--- a/content/apacheds/advanced-ug/4.2.1-introduction.mdtext
+++ /dev/null
@@ -1,60 +0,0 @@
-Title: 4.2.1 - Introduction
-NavPrev: 4.2-authorization.html
-NavPrevText: 4.2 - Authorization
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.2-definitions.html
-NavNextText: 4.2.2 - Definitions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1 - Introduction
-
-First of all, one has to understand that Authorization in this context
-involves four components. The principle is :
-
-<DIV class="info" markdown="1">
- grants <b>Users</b> authorization to proceed some <b>Action</b> on a set of
-<b>Items</b> in a defined <b>Area</b>
-</DIV>
-
-Let's define the four components.
-
-**Users** :
-
-> the set of entity being able to do some action. It can be every user,
-> the entry owner, a list of users, members of a group or a selection in the
-> DIT. Basically, a **user** is defined as an entry in the DIT.
-
-**Action** :
-
-> Generally speaking, a grant or denial to do something, depending on the
-> selected item (read, delete, etc).
-
-**Items** :
-> An **item** is an element of the DIT. It can be an Entry, an
-> AttributeType, some AttributeValues. It can also define some constraints
-> that will apply on the selected entries.
-
-**Area** :
-
-> It defines the set of entries on which the defined ACI applies. It can
-> be the whole DIT, a part of the DIT, a selection of entries, an Entry.
-
-We implement those elements using **ACI**s.
-
-The following chapters will present you the system inside out.
diff --git a/content/apacheds/advanced-ug/4.2.10-aci-grammar.mdtext b/content/apacheds/advanced-ug/4.2.10-aci-grammar.mdtext
deleted file mode 100644
index 6775798..0000000
--- a/content/apacheds/advanced-ug/4.2.10-aci-grammar.mdtext
+++ /dev/null
@@ -1,285 +0,0 @@
-Title: 4.2.10 - ACI grammar
-NavPrev: 4.2.9-migration-from-other-ldap-servers.html
-NavPrevText: 4.2.9 - Migration from other LDAP servers
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.11-links-and-references.html
-NavNextText: 4.2.11 - Links and references
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.10 - ACI grammar
-
-The ACI attributes store data following a specific structure, which is
-define by this grammar :
-
- :::text
- <wrapperEntryPoint> ::= <SP*> '{' <SP*> <mainACIItemComponent> <SP*>
- <mainACIItemComponents> '}' <SP*> EOF
-
- <mainACIItemComponents> ::= ',' <SP*> <mainACIItemComponent> <SP*>
- <mainACIItemComponents> | e
-
- ** Note : we have to allow only one of each option
- <mainACIItemComponent> ::=
- "identificationTag" <SP+> SAFEUTF8STRING
- | "precedence" <SP+> INTEGER
- | "authenticationLevel" <SP+> <authenticationLevel>
- | "itemOrUserFirst" <SP+> <itemOrUserFirst>
-
- <authenticationLevel> ::= "none" | "simple" | "strong"
-
- <itemOrUserFirst> ::=
- "itemFirst" <SP*> ':' <SP*> '{' <SP*> <itemType> <SP*>
- '}'
- |
- "userFirst" <SP*> ':' <SP*> '{' <SP*> <userType> <SP*>
- '}'
-
- <itemType> ::=
- "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}' <SP*>
- ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
- <anyItemPermission*> '}'
- |
- "itemPermissions" <SP+> '{' <SP*> <itemPermissions?> '}' <SP*>
- ',' <SP*> "protectedItems" <SP*> '{' <SP*>
- <protectedItem?> '}'
-
- <userType> ::=
- "userClasses" <SP+> '{' <SP*> <userClass?> '}' <SP*> ','
- <SP*> '{' <SP*> <anyUserPermission> <SP*>
- <anyUserPermission*> '}'
- |
- "userPermissions" <SP+> '{' <SP*> <userPermissions?> '}'
- <SP*> ','
- <SP*> "userClasses" <SP+> '{' <SP*>
- <userClass?> '}'
-
- <protectedItem?> ::= <protectedItem> <SP*> <protectedItem*> | e
-
- <protectedItem*> ::= ',' <SP*> <protectedItem> <SP*> <protectedItem*> | e
-
- <protectedItem> ::=
- "entry"
- | "allUserAttributeTypes"
- | "attributeType" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
- | "allAttributeValues" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
- | "allUserAttributeTypesAndValues"
- | ATTRIBUTE_VALUE_CANDIDATE
- | "selfValue" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
- | RANGE_OF_VALUES_CANDIDATE
- | "maxValueCount" <SP+> '{' <SP*> '{' <SP*> <valueCountType> <SP*> '}'
- <SP*> <maxValueCount*> '}'
- | "maxImmSub" <SP+> INTEGER
- | "restrictedBy" <SP+> '{' <SP*> '{' <SP*> <typeValueIn> <SP*> '}'
- <SP*> <restrictedValue*> '}'
- | "classes" <SP+> <refinement>
-
- <maxValueCount*> ::= ',' <SP*> '{' <SP*> <valueCountType> <SP*> '}' <SP*>
- <maxValueCount*> | e
-
- <valueCountType> ::=
- "type" <SP+> <oid> <SP*> ',' <SP*> "maxCount" <SP+>
- INTEGER
- |
- "maxCount" <SP+> INTEGER <SP*> ',' <SP*> "type" <SP+>
- <oid>
-
- <restrictedValue*> ::= ',' <SP*> '{' <SP*> <typeValueIn> <SP*> '}' <SP*>
- <restrictedValue*> | e
-
- <typeValueIn> ::=
- "type" <SP+> <oid> <SP*> ',' <SP*> "valuesIn" <SP+> <oid>
- |
- "valuesIn" <SP+> <oid> <SP*> ',' <SP*> "type" <SP+> <oid>
-
- <oids> ::= ',' <SP*> <oid> <SP*> <oids> | e
-
- <itemPermissions?> ::= '{' <SP*> <anyItemPermission> <SP*>
- <anyItemPermission*> '}' <SP*> <itemPermissions*> | e
-
- <itemPermissions*> ::=
- ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
- <anyItemPermission*> '}' <SP*> <itemPermissions*> | e
-
- <anyItemPermission*> ::= ',' <SP*> <anyItemPermission> <SP*>
- <anyItemPermission*> | e
-
- <anyItemPermission> :
- "precedence" <SP+> <INTEGER>
- | "userClasses" <SP+> '{' <SP*> <userClass?> '}'
- | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
-
- <grantAndDenial?> ::= <grantAndDenial> <SP*> <grantAndDenial*> | e
-
- <grantAndDenial*> ::= ',' <SP*> <grantAndDenial> <SP*> <grantAndDenial*>
-
- <grantAndDenial> :
- "grantAdd"
- | "denyAdd"
- | "grantDiscloseOnError"
- | "denyDiscloseOnError"
- | "grantRead"
- | "denyRead"
- | "grantRemove"
- | "denyRemove"
- | "grantBrowse"
- | "denyBrowse"
- | "grantExport"
- | "denyExport"
- | "grantImport"
- | "denyImport"
- | "grantModify"
- | "denyModify"
- | "grantRename"
- | "denyRename"
- | "grantReturnDN"
- | "denyReturnDN"
- | "grantCompare"
- | "denyCompare"
- | "grantFilterMatch"
- | "denyFilterMatch"
- | "grantInvoke"
- | "denyInvoke"
-
- <userClass?> ::= <userClass> <SP*> <userClass*> | e
-
- <userClass*> ::= ',' <SP*> <userClass> <SP*> <userClass*> | e
-
- <userClass> :
- "allUsers"
- | "thisEntry"
- | "parentOfEntry"
- | "name" <SP+> '{' <SP*> <distinguishedName> <SP*> <name*> '}'
- | "userGroup" <SP+> '{' <SP*> <distinguishedName> <SP*> <userGroup*>
- '}'
- | "subtree" <SP+> '{' <SP*> '{' <SP*> <subtreeSpecificationComponent?>
- '}' <SP*> <subTree*> '}'
-
- <name*> ::= ',' <SP*> <distinguishedName> <SP*> <name*> | e
-
- <userGroup*> ::= ',' <SP*> <distinguishedName> <SP*> <userGroup*> | e
-
- <subTree*> ::= ',' <SP*> '{' <SP*> <subtreeSpecificationComponent?> '}'
- <SP*> <subTree*> | e
-
- <userPermissions?> ::= '{' <SP*> <anyUserPermission> <SP*>
- <anyUserPermission*> '}' <SP*> <userPermissions*> | e
-
- <userPermissions*> ::=
- ',' <SP*> '{' <SP*> <anyUserPermission> <SP*>
- <anyUserPermission*> '}' <SP*> <userPermissions*> | e
-
- <anyUserPermission*> ::= ',' <SP*> <anyUserPermission> <SP*>
- <anyUserPermission*> | e
-
- <anyUserPermission> :
- "precedence" <SP+> <INTEGER>
- | "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}'
- | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
-
- <subtreeSpecificationComponent?> ::= <subtreeSpecificationComponent> <SP*>
- <subtreeSpecificationComponent*> | e
- <subtreeSpecificationComponent*> ::= ',' <SP*>
- <subtreeSpecificationComponent> <SP*> <subtreeSpecificationComponent*> | e
-
- <subtreeSpecificationComponent> :
- "base" <SP+> <distinguishedName>
- | "specificExclusions" <SP+> '{' <SP*> <specificExclusion?> '}'
- | "minimum" <SP+> INTEGER
- | "maximum" <SP+> INTEGER
-
- <specificExclusion?> ::= <specificExclusion> <SP*> <specificExclusion*> | e
-
- <specificExclusion*> ::= ',' <SP*> <specificExclusion> <SP*>
- <specificExclusion*> | e
-
- <specificExclusion> ::=
- "chopBefore" <SP*> ':' <SP*> <distinguishedName>
- |
- "chopAfter" <SP*> ':' <SP*> <distinguishedName>
-
- <refinement> ::=
- "item" <SP*> ':' <SP*> <oid>
- |
- "and" <SP*> ':' <SP*> '{' <refinements?> '}'
- |
- "or" <SP*> ':' <SP*> '{' <refinements?> '}'
- |
- "not" <SP*> ':' <SP*> '{' <refinements?> '}'
-
- <refinements?> ::= <SP*> <refinements?> <SP*> <refinement*> | e
-
- <refinement*> ::= ',' <SP*> <refinement> <SP*> <refinement*> | e
-
- <distinguishedName> ::= SAFEUTF8STRING
-
- <oid> ::= DESCR | NUMERICOID
-
- SAFEUTF8CHAR :
- '\u0001'..'\u0021' |
- '\u0023'..'\u007F' |
- '\u00c0'..'\u00d6' |
- '\u00d8'..'\u00f6' |
- '\u00f8'..'\u00ff' |
- '\u0100'..'\u1fff' |
- '\u3040'..'\u318f' |
- '\u3300'..'\u337f' |
- '\u3400'..'\u3d2d' |
- '\u4e00'..'\u9fff' |
- '\uf900'..'\ufaff' ;
-
- <SP+> ::= <SP> <SP*>
- <SP*> ::= <SP> <SP*> | e
- <SP> ::= ' ' | '\t' | '\n' | '\r' ;
-
-
- ALPHA : 'A'..'Z' | 'a'..'z' ;
-
- <INTEGER> ::= <DIGIT> | <LDIGIT> <DIGIT> <DIGIT*>
- <DIGIT> ::= '0' | <LDIGIT> ;
- <LDIGIT> ::= '1'..'9' ;
- <DIGIT*> ::= <DIGIT> <DIGIT*> | e
-
- HYPHEN : '-' ;
-
- NUMERICOID : INTEGER ( DOT INTEGER )+ ;
-
- DOT : '.' ;
-
- INTEGER_OR_NUMERICOID
- :
- ( INTEGER DOT ) => NUMERICOID
- |
- INTEGER
-
- SAFEUTF8STRING : '"'! ( SAFEUTF8CHAR )* '"'! ;
-
- DESCR
- :
- ( "attributeValue" ( SP! )+ '{' ) =>
- "attributeValue"! ( SP! )+ '{'! ( options : . )* '}'!
- | ( "rangeOfValues" ( SP! )+ '(' ) =>
- "rangeOfValues"! ( SP! )+ FILTER
- | ALPHA ( ALPHA | DIGIT | HYPHEN )*
- ;
-
- FILTER : '(' ( ( '&' (SP)* (FILTER)+ ) | ( '|' (SP)* (FILTER)+ ) | ( '!'
- (SP)* FILTER ) | FILTER_VALUE ) ')' (SP)* ;
-
- FILTER_VALUE : (options: ~( ')' | '(' | '&' | '|' | '!' ) ( ~(')') )* ) ;
-
diff --git a/content/apacheds/advanced-ug/4.2.11-links-and-references.mdtext b/content/apacheds/advanced-ug/4.2.11-links-and-references.mdtext
deleted file mode 100644
index 0592757..0000000
--- a/content/apacheds/advanced-ug/4.2.11-links-and-references.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: 4.2.11 - Links and References
-NavPrev: 4.2.10-aci-grammar.html
-NavPrevText: 4.2.10 - ACI grammar
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.3-password-policy.html
-NavNextText: 4.3 - Password Policy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.11 Links and references
-
-The **Apache Directory Server** authorization system is based on the **X.500**
-specifications. Those documents are available on [X.500 freely available specifications](http://www.x500standard.com/index.php?n=Ig.LatestAvail)
-, and more specifically [X.501](http://www.itu.int/rec/T-REC-X.501-200811-I!Cor2/dologin.asp?lang=e&id=T-REC-X.501-200811-I!Cor2!PDF-E&type=items)
-.
-
-Some more 'user friendly' documentation about Access Control can be found
-in **Chadwick**'s book, available at [X.500 book](http://sec.cs.kent.ac.uk/x500book/)
-, chapter 8.
diff --git a/content/apacheds/advanced-ug/4.2.2-definitions.mdtext b/content/apacheds/advanced-ug/4.2.2-definitions.mdtext
deleted file mode 100644
index 2e490a6..0000000
--- a/content/apacheds/advanced-ug/4.2.2-definitions.mdtext
+++ /dev/null
@@ -1,49 +0,0 @@
-Title: 4.2.2 - Definitions
-NavPrev: 4.2.1-introduction.html
-NavPrevText: 4.2.1 - Introduction
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.3-enabling-access-control.html
-NavNextText: 4.2.3 - Enabling Access Control
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.2 - Definitions
-
-**ACI** :
-
-> Access Control Information. The set of all the information which might
-> be relevant to an access control decision for a given subject.
-
-**ACDF** :
-
-> Access Control Decision Function. It is the function used to decide
-> whether a particular subject has a particular access right by virtue of
-> applicable ACI items.
-
-**protected item** :
-
-> A protected item is the element of directory information being
-> accessed. The protected items are entries, attributes, attribute values
-> and distinguished names. Access to each protected item can be separately
-> controlled through ACI.
-
-**subject** :
-
-> The entity acting on the server. It can be a person, a program, ... It
-> aggregates the identity and the security related attributes (passwords,
-> ceritifcates...) for this entity.
diff --git a/content/apacheds/advanced-ug/4.2.3-enabling-access-control.mdtext b/content/apacheds/advanced-ug/4.2.3-enabling-access-control.mdtext
deleted file mode 100644
index 1aa479d..0000000
--- a/content/apacheds/advanced-ug/4.2.3-enabling-access-control.mdtext
+++ /dev/null
@@ -1,52 +0,0 @@
-Title: 4.2.3 - Enabling Access Control
-NavPrev: 4.2.2-definitions.html
-NavPrevText: 4.2.2 - Definitions
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.4-aci-types.html
-NavNextText: 4.2.4 - Aci Types
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-
-# 4.2.3 - Enabling Access Control
-
-The Access Control Subsystem (ACI) is described in the Basic User Guide. The ACI is disabled by default and the simplest way to enable it is to [use Apache Directory Studio](apacheds/basic-ug/3.2-basic-authorization.html#enable-the-aci-subsystem).
-
-After the server has started, the relevant entry can be found in *config.ldif_migrated* :
-
- # default, config
- dn: ads-directoryServiceId=default,ou=config
- ads-directoryserviceid: default
- ads-dssyncperiodmillis: 15000
- ads-dsallowanonymousaccess: TRUE
- ads-dsreplicaid: 1
- ads-dsaccesscontrolenabled: FALSE
- ads-dspasswordhidden: FALSE
- ads-dsdenormalizeopattrsenabled: FALSE
- ads-enabled: TRUE
- objectclass: top
- objectclass: ads-base
- objectclass: ads-directoryService
-
-The following ldapmodify (by the admin user) will activate the ACI Subsystem when the server is next restarted :
-
- # turn on Access Control
- dn: ads-directoryServiceId=default,ou=config
- changetype: modify
- replace: ads-dsaccesscontrolenabled
- ads-dsaccesscontrolenabled: TRUE
diff --git a/content/apacheds/advanced-ug/4.2.4-aci-types.mdtext b/content/apacheds/advanced-ug/4.2.4-aci-types.mdtext
deleted file mode 100644
index ffd88a7..0000000
--- a/content/apacheds/advanced-ug/4.2.4-aci-types.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 4.2.4 - ACI types
-NavPrev: 4.2.3-enabling-access-control.html
-NavPrevText: 4.2.3 - Enabling Access Control
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.5-aci-elements.html
-NavNextText: 4.2.5 - ACI Elements
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.4 - ACI types
-
-Three different types of ACI exist. All types use the same specification
-syntax for an ACIITem. These types differ in their placement and manner of
-use within the directory.
-
-## Chapter content
-
-* [4.2.4.1 - Entry Aci](4.2.4.1-entryaci.html)
-* [4.2.4.2 - Prescriptive Aci](4.2.4.2-prescriptiveaci.html)
-* [4.2.4.3 - Subentry Aci](4.2.4.3-subentryaci.html)
diff --git a/content/apacheds/advanced-ug/4.2.4.1-entryaci.mdtext b/content/apacheds/advanced-ug/4.2.4.1-entryaci.mdtext
deleted file mode 100644
index b801403..0000000
--- a/content/apacheds/advanced-ug/4.2.4.1-entryaci.mdtext
+++ /dev/null
@@ -1,40 +0,0 @@
-Title: 4.2.4.1 - EntryACI
-NavPrev: 4.2.4-aci-types.html
-NavPrevText: 4.2.4 - Aci Types
-NavUp: 4.2.4-aci-types.html
-NavUpText: 4.2.4 - Aci Types
-NavNext: 4.2.4.2-prescriptiveaci.html
-NavNextText: 4.2.4.2 - Prescriptive Aci
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.4.1 - EntryACI
-
-
-Entry ACI are access controls added to entries to protect that entry
-specifically. Meaning the protected entry is the entry where the ACI
-resides. When performing an operation on an entry, ApacheDS checks for the
-presence of the multivalued operational attribute, *entryACI*. The values
-of the entryACI attribute contain ACIItems.
-
-<DIV class="info" markdown="1">
-There is one exception to the rule of consulting entryACI attributes within
-ApacheDS: add operations do not consult the entryACI within the entry being
-added. This is a security precaution. (??? Check this sentence) If allowed
-users can arbitrarily add entries where they wanted by putting entryACI
-into the new entry being added. This could compromise the DSA.
-</DIV>
diff --git a/content/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.mdtext b/content/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.mdtext
deleted file mode 100644
index 888f857..0000000
--- a/content/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.mdtext
+++ /dev/null
@@ -1,62 +0,0 @@
-Title: 4.2.4.2 - PrescriptiveACI
-NavPrev: 4.2.4.1-entryaci.html
-NavPrevText: 4.2.4.1 - Entry Aci
-NavUp: 4.2.4-aci-types.html
-NavUpText: 4.2.4 - Aci Types
-NavNext: 4.2.4.3-subentryaci.html
-NavNextText: 4.2.4.3 - Subentry Aci
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.4.2 - PrescriptiveACI
-
-Prescriptive ACI are access controls that are applied to a collection of
-entries, not just to a single entry. Collections of entries are defined by
-the subtreeSpecifications of subentries. Hence prescriptive ACI are added
-to subentries as attributes and are applied by ApacheDS to the entries
-selected by the subentry's subtreeSpecification. ApacheDS uses the
-**prescriptiveACI** multivalued operational attribute within subentries to
-contain ACIItems that apply to the entry collection.
-
-Prescriptive ACI can save much effort when trying to control access to a
-collection of resources. Prescriptive ACI can even be specified to apply
-access controls to entries that do not yet exist within the DIT. They are a
-very powerful mechanism and for this reason they are the preferred
-mechanism for managing access to protected resources. ApacheDS is optimized
-specifically for managing access to collections of entries rather than
-point entries themselves.
-
-Users should try to avoid entry ACIs whenever possible, and use
-prescriptive ACIs instead. Entry ACIs are more for managing exceptional
-cases and should not be used excessively.
-
-<DIV class="info" markdown="1">
-**How it works!**
-For every type of LDAP operation, ApacheDS checks to see if any access
-control subentries include the protected entry in their collection. The set
-of subentries which include the protected entry are discovered very rapidly
-by the subentry subsystem. The subentry subsystem caches
-subtreeSpecifications for all subentries within the server so inclusion
-checks are fast.
-
-For each access control subentry in the set, ApacheDS checks within a
-prescriptive ACI cache for ACI tuples. ApacheDS also caches prescriptive
-ACI information in a special form called ACI tuples. This is done so
-ACIItem parsing and conversion to an optimal representations for evaluation
-is not required at access time. This way access based on prescriptive ACIs
-is determined very rapidly.
-</DIV>
diff --git a/content/apacheds/advanced-ug/4.2.4.3-subentryaci.mdtext b/content/apacheds/advanced-ug/4.2.4.3-subentryaci.mdtext
deleted file mode 100644
index 9f7971d..0000000
--- a/content/apacheds/advanced-ug/4.2.4.3-subentryaci.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 4.2.4.3 - SubentryACI
-NavPrev: 4.2.4.2-prescriptiveaci.html
-NavPrevText: 4.2.4.2 - Prescriptive Aci
-NavUp: 4.2.4-aci-types.html
-NavUpText: 4.2.4 - Aci Types
-NavNext: 4.2.5-aci-elements.html
-NavNextText: 4.2.5 - ACI Elements
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.4.3 - SubentryACI
-
-Access to subentries also needs to be controlled. Subentries are special in
-ApacheDS. Although they subordinate to an administrative entry (entry of an
-Administrative Point), they are technically considered to be in the same
-context as their administrative entry. ApacheDS considers the perscriptive
-ACI applied to the administrative entry, to also apply to its subentries.
-
-This however is not the most intuitive mechanism to use for explicitly
-controlling access to subentries. A more explicit mechanism is used to
-specify ACIs specifically for protecting subentries. ApacheDS uses the
-multivalued operational attribute, *subentryACI*, within administrative
-entries to control access to immediately subordinate subentries.
-
-Protection policies for ACIs themselves can be managed within the entry of
-an administrative point.
-
diff --git a/content/apacheds/advanced-ug/4.2.5-aci-elements.mdtext b/content/apacheds/advanced-ug/4.2.5-aci-elements.mdtext
deleted file mode 100644
index 1926644..0000000
--- a/content/apacheds/advanced-ug/4.2.5-aci-elements.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: 4.2.5 - ACI elements
-NavPrev: 4.2.4-aci-types.html
-NavPrevText: 4.2.4 - ACI types
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.6-the-acdf-engine.html
-NavNextText: 4.2.6 - The Acdf Engine
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.5 - ACI elements
-
-## Chapter content
-
-* [4.2.5.1 - User Classes](4.2.5.1-userclasses.html)
-* [4.2.5.2 - User Protected Items](4.2.5.2-protecteditems.html)
-* [4.2.5.3 - Permissions](4.2.5.3-permissions.html)
-* [4.2.5.4 - Subtrees](4.2.5.4-subtrees.html)
-
-
diff --git a/content/apacheds/advanced-ug/4.2.5.1-userclasses.mdtext b/content/apacheds/advanced-ug/4.2.5.1-userclasses.mdtext
deleted file mode 100644
index 5a30a69..0000000
--- a/content/apacheds/advanced-ug/4.2.5.1-userclasses.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.5.1 - UserClasses
-NavPrev: 4.2.5-aci-elements.html
-NavPrevText: 4.2.5 - ACI Elements
-NavUp: 4.2.5-aci-elements.html
-NavUpText: 4.2.5 - ACI Elements
-NavNext: 4.2.5.2-protecteditems.html
-NavNextText: 4.2.5.2 - Protected Itements
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.5.1 - UserClasses
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.2.5.2-protecteditems.mdtext b/content/apacheds/advanced-ug/4.2.5.2-protecteditems.mdtext
deleted file mode 100644
index 1816ad4..0000000
--- a/content/apacheds/advanced-ug/4.2.5.2-protecteditems.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: 4.2.5.2 - ProtectedItems
-NavPrev: 4.2.5.1-userclasses.html
-NavPrevText: 4.2.5.1 - User Classes
-NavUp: 4.2.5-aci-elements.html
-NavUpText: 4.2.5 - ACI Elements
-NavNext: 4.2.5.3-permissions.html
-NavNextText: 4.2.5.3 - Permissions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.5.2 - ProtectedItems
-
-The **protected items** are elements being accessed, and thus controlled by
-ACIs. Many parts of the DIT can be protected :
-
-* Entry : a entry as a whole.
-* allUserAttributeTypes : the User's AttributeType, excluding the
-associated values
-* allUserAttributeTypesAndValues : the User's AttributeType, including the
-associated values
-* allAttributeValues : All the AttributeType values
-* attributeType : A specific AttributeType
-* attributeValue : A set of attribute values
-* selfValue : The values associated with the requestor RDN's AttributeTypes
-
diff --git a/content/apacheds/advanced-ug/4.2.5.3-permissions.mdtext b/content/apacheds/advanced-ug/4.2.5.3-permissions.mdtext
deleted file mode 100644
index d4a397b..0000000
--- a/content/apacheds/advanced-ug/4.2.5.3-permissions.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.5.3 - Permissions
-NavPrev: 4.2.5.2-protecteditems.html
-NavPrevText: 4.2.5.2 - Protected Items
-NavUp: 4.2.5-aci-elements.html
-NavUpText: 4.2.5 - ACI Elements
-NavNext: 4.2.5.4-subtrees.html
-NavNextText: 4.2.5.4 - Subtrees
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.5.3 - Permissions
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.2.5.4-subtrees.mdtext b/content/apacheds/advanced-ug/4.2.5.4-subtrees.mdtext
deleted file mode 100644
index 4f99051..0000000
--- a/content/apacheds/advanced-ug/4.2.5.4-subtrees.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.5.4 - Subtrees
-NavPrev: 4.2.5.3-permissions.html
-NavPrevText: 4.2.5.3 - Permissions
-NavUp: 4.2.5-aci-elements.html
-NavUpText: 4.2.5 - ACI Elements
-NavNext: 4.2.6-the-acdf-engine.html
-NavNextText: 4.2.6 - The ACDF engine
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.5.4 - Subtrees
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.2.6-the-acdf-engine.mdtext b/content/apacheds/advanced-ug/4.2.6-the-acdf-engine.mdtext
deleted file mode 100644
index 5ccea1f..0000000
--- a/content/apacheds/advanced-ug/4.2.6-the-acdf-engine.mdtext
+++ /dev/null
@@ -1,32 +0,0 @@
-Title: 4.2.6 - The ACDF engine
-NavPrev: 4.2.5-aci-elements.html
-NavPrevText: 4.2.4 - ACI Elements
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.7-using-acis-trail.html
-NavNextText: 4.2.7 - Using ACIs trail
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.6 - The ACDF engine
-
-## Chapter content
-
-* [4.2.6.1 - How it works](4.2.6.1-how-it-works.html)
-* [4.2.6.2 - Selections](4.2.6.2-selections.html)
-* [4.2.6.3 - Constraints](4.2.6.3-constraints.html)
-* [4.2.6.4 - Priority](4.2.6.4-priority.html)
diff --git a/content/apacheds/advanced-ug/4.2.6.1-how-it-works.mdtext b/content/apacheds/advanced-ug/4.2.6.1-how-it-works.mdtext
deleted file mode 100644
index e9dc106..0000000
--- a/content/apacheds/advanced-ug/4.2.6.1-how-it-works.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.6.1 - How it works
-NavPrev: 4.2.6-the-acdf-engine.html
-NavPrevText: 4.2.6 - The ACDF Engine
-NavUp: 4.2.6-the-acdf-engine.html
-NavUpText: 4.2.6 - The ACDF Engine
-NavNext: 4.2.6.2-selections.html
-NavNextText: 4.2.6.2 - Selections
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.6.1 - How it works
-
-TODO...
diff --git a/content/apacheds/advanced-ug/4.2.6.2-selections.mdtext b/content/apacheds/advanced-ug/4.2.6.2-selections.mdtext
deleted file mode 100644
index fa6857c..0000000
--- a/content/apacheds/advanced-ug/4.2.6.2-selections.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.6.2 - Selections
-NavPrev: 4.2.6-1-how-it-works.html
-NavPrevText: 4.2.6.1 - How it works
-NavUp: 4.2.6-the-acdf-engine.html
-NavUpText: 4.2.6 - The ACDF Engine
-NavNext: 4.2.6.3-constraints.html
-NavNextText: 4.2.6.3 - Constraints
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.6.2 - Selections
-
-TODO...
diff --git a/content/apacheds/advanced-ug/4.2.6.3-constraints.mdtext b/content/apacheds/advanced-ug/4.2.6.3-constraints.mdtext
deleted file mode 100644
index a44c4da..0000000
--- a/content/apacheds/advanced-ug/4.2.6.3-constraints.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.6.3 - Constraints
-NavPrev: 4.2.6-2-selections.html
-NavPrevText: 4.2.6.2 - Selections
-NavUp: 4.2.6-the-acdf-engine.html
-NavUpText: 4.2.6 - The ACDF Engine
-NavNext: 4.2.6.4-priority.html
-NavNextText: 4.2.6.4 - Priority
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.6.3 - Constraints
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/4.2.6.4-priority.mdtext b/content/apacheds/advanced-ug/4.2.6.4-priority.mdtext
deleted file mode 100644
index a9001d8..0000000
--- a/content/apacheds/advanced-ug/4.2.6.4-priority.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.6.4 - Priority
-NavPrev: 4.2.6-3-constraints.html
-NavPrevText: 4.2.6.3 - Constraints
-NavUp: 4.2.6-the-acdf-engine.html
-NavUpText: 4.2.6 - The ACDF Engine
-NavNext: 4.2.7-using-acis-trail.html
-NavNextText: 4.2.7 - Using ACIs trail
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.6.4 - Priority
-
-TODO...
diff --git a/content/apacheds/advanced-ug/4.2.7-using-acis-trail.mdtext b/content/apacheds/advanced-ug/4.2.7-using-acis-trail.mdtext
deleted file mode 100644
index 1d53f14..0000000
--- a/content/apacheds/advanced-ug/4.2.7-using-acis-trail.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: 4.2.7 - Using ACIs trail
-NavPrev: 4.2.6-the-acdf-engine.html
-NavPrevText: 4.2.6 - The ACDF engine
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.8-acis-administration.html
-NavNextText: 4.2.8 - ACIs administration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.7 - Using ACIs trail
-
-## Chapter content
-
-* [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
-* [4.2.7.2 - Allow Self Password Modify](4.2.7.2-allow-self-password-modify.html)
-
diff --git a/content/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.mdtext b/content/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.mdtext
deleted file mode 100644
index 128b7f8..0000000
--- a/content/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.mdtext
+++ /dev/null
@@ -1,187 +0,0 @@
-Title: 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
-NavPrev: 4.2.7-using-acis-trail.html
-NavPrevText: 4.2.7 Using ACIs trail
-NavUp: 4.2.7-using-acis-trail.html
-NavUpText: 4.2.7 Using ACIs trail
-NavNext: 4.2.8-acis-administration.html
-NavNextText: 4.2.8 - ACIs administration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
-
-In this trail, we will show how we will allow all authenticated users to browse and read all the entries.
-
-By default, if the access control subsystem is enabled, no one but the administrator can browse the DIT. This is obviously not convenient ...
-
-# Partition and Access Control Area Setup
-
-For this example we presume you have setup a partition at the namingContext **dc=example,dc=com** and have turned on access controls. Now you want to grant browse and read access to entries and their attributes.
-
-Before you can add a **subentry** with the **prescriptiveACI** you'll need to create an **administrative area**. For now we'll make the root of the partition the **Administrative Point** (**AP**). Every entry including this entry and those underneath will be part of the autonomous administrative area for managing access controls. To do this we must add the **administrativeRole** operational attribute to the **AP** entry.
-
-<DIV class="warning" markdown="1">
-<B>Reminder...</B>
-Don't forget to check the 'fetch subentries' and 'fetch operational attributes' in your connection's browser option tab, otherwise some parts of the following tutorial will not appear !
-</DIV>
-
-
-## AdministrationPoint setup
-
-In our case, the **dc=example,dc=com** context entry has to contain the **administrativeRole** attribute, with the **accessControlSpecificArea** value.
-
-Let's first connect to the server using the **admin** user, and select the **dc=example,dc=com** entry :
-
-![dc=example.com](images/ACI-example.png)
-
-
-We will now add the **directoryOperation** attribute **administrativeRole** to this entry :
-
-![AdministrativeRole new attribute](images/ACI-new-attribute.png)
-
-and we select the **accessControlSpecificArea** value :
-
-![AccessControlSpecificArea](images/ACI-access-control-specific-area.png)
-
-Here is the resulting entry :
-
-![Result Entry](images/ACI-result-entry.png)
-
-## Subentry addition
-
-Now, we have to create a **subentry** in which we will add the **prescriptiveACI** granting access to all the users.
-
-Let's define the ACI first.
-
-### ACIItem Description
-
-Here's the ACIItem we will add :
-
- :::Java
- {
- identificationTag "enableSearchForAllUsers",
- precedence 14,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses { allUsers },
- userPermissions
- {
- {
- protectedItems {entry, allUserAttributeTypesAndValues},
- grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
- }
- }
- }
- }
-
-There are several parameters to this simple ACIItem. Here's a brief
-explanation of each field and it's meaning or significance.
-
-| Fields | Description |
-|---|---|
-| identificationTag | Identifies the ACIItem within an entry. |
-| precedence | Determine which ACI to apply with conflicting ACIItems. |
-| authenticationLevel | User's level of trust with values of none, simple, strong |
-| itemOrUserFirst | Determines order of item permissions or user permissions. |
-| userClasses | The set of users the permissions apply to. |
-| userPermissions | Permissions on protected items |
-
-In our case, we want to grant all the users :
-
- :::Java
- userClasses { allUsers }
-
-to be granted a read access :
-
- :::Java
- grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
-
-for the Entry and all the values :
-
- :::Java
- protectedItems {entry, allUserAttributeTypesAndValues},
-
-The granted permissions are used to allow the user to browse the tree
-(**grantBrowse**), read the entries (**grantRead**) and return the DN for
-aliases (**grantReturnDN**).
-
-<a name="2.5.7.1EnableAuthenticatedUserstoBrowseandReadEntries-PrescriptiveACIaddition"></a>
-
-## PrescriptiveACI addition
-
-Now that we have defined the *A*CIItem**, we have to add it into a **subentry**
-associated with the **administration point**. This is just an entry under the
-**administration Point**, here, we will call it **cn=enableSearchForAllUsers,
-dc=example,dc=com**.
-
-The entry is described below in a LDIF format :
-
- :::Java
- dn: cn=enableSearchForAllUsers,dc=example,dc=com
- objectClass: top
- objectClass: subentry
- objectClass: accessControlSubentry
- subtreeSpecification: {}
- prescriptiveACI:
- {
- identificationTag "enableSearchForAllUsers",
- precedence 14,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses { allUsers },
- userPermissions
- {
- {
- protectedItems {entry, allUserAttributeTypesAndValues}
- grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
- }
- }
- }
- }
-
-It's also easy to create such an entry with **Apache Directory Studio**.
-First, right click on the context entry, and select 'new Entry' :
-
-![New entry](images/ACI-new-entry.png)
-
-Then create a new entry from scratch, and select the 'subentry' and
-'accessControlSubentry' ObjectClasses :
-
-![ObjectClass selection](images/ACI-subentry-oc.png)
-
-Create the RDN for this new entry :
-
-![Rdn creation](images/ACI-rdn-creation.png)
-
-Pass the subtree editor, we don't need to define anything here, and go to
-the Attributes definition :
-
-![Attributes definition](images/ACI-attributes-definition.png)
-
-The next step is to add the **prescriptiveACI** value, using the dedicated
-editor :
-
-![PrescriptiveACI addition](images/ACI-prescriptive-aci.png)
-
-When the selection has been done, we have to add the permissions :
-
-![Add permissions](images/ACI-add-permissions.png)
-
-
-Once done, all the entries under **dc=example,dc=com** are ruled by this ACI
diff --git a/content/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.mdtext b/content/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.mdtext
deleted file mode 100644
index b3c6399..0000000
--- a/content/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.mdtext
+++ /dev/null
@@ -1,52 +0,0 @@
-Title: 4.2.7.2 - Allow Self Password Modify
-NavPrev: 4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html
-NavPrevText: 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
-NavUp: 4.2.7-using-acis-trail.html
-NavUpText: 4.2.7 Using ACIs trail
-NavNext: 4.2.7.3-.html
-NavNextText: 4.2.7.3 -
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.7.2 - Allow Self Password Modify
-
-We will now configure the system to allow anyone to modify his/her own password :
-
- :::text
- {
- identificationTag "allowSelfAccessAndModification",
- precedence 14,
- authenticationLevel none,
- itemOrUserFirst userFirst:
- {
- userClasses { thisEntry },
- userPermissions
- {
- { protectedItems {entry}, grantsAndDenials { grantModify, grantBrowse, grantRead } },
- { protectedItems {allAttributeValues {userPassword}}, grantsAndDenials { grantAdd, grantRemove } }
- }
- }
- }
-
-## Commentary
-
-Note that two different user permissions are used to accurately specify self access and self modification of the **userPassword** attribute within the entry. So with the first userPermission of this ACI a user would be able to read all attributes and values within his/her entry. They also have the ability to modify the entry but this is moot since they cannot add, remove or replace any attributes within their entry. The second user permission completes the picture by granting add and remove permissions to all values of userPassword. This means the user can replace the password.
-
-<DIV class="warning" markdown="1">
-**grantAdd + grantRemove = grantReplace**
-Modify operations either add, remove or replace attributes and their values in LDAP. X.500 seems to have overlooked the replace capability. Hence there is no such thing as a *grantReplace* permission. However grantAdd and grantDelete on an attribute and its values are both required for a replace operation to take place.
-</DIV>
diff --git a/content/apacheds/advanced-ug/4.2.8-acis-administration.mdtext b/content/apacheds/advanced-ug/4.2.8-acis-administration.mdtext
deleted file mode 100644
index fc78b53..0000000
--- a/content/apacheds/advanced-ug/4.2.8-acis-administration.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.8 - ACIs administration
-NavPrev: 4.2.7-using-acis-trail.html
-NavPrevText: 4.2.7 - Using ACIs trail
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.9-migration-from-other-ldap-servers.html
-NavNextText: 4.2.9 - Migration from other LDAP servers
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.8 - ACIs administration
-
-TODO...
diff --git a/content/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.mdtext b/content/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.mdtext
deleted file mode 100644
index fbeae0b..0000000
--- a/content/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.9 - Migration from other LDAP servers
-NavPrev: 4.2.8-acis-administration.html
-NavPrevText: 4.2.8 - ACIs administration
-NavUp: 4.2-authorization.html
-NavUpText: 4.2 - Authorization
-NavNext: 4.2.10-aci-grammar.html
-NavNextText: 4.2.10 - ACI grammar
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.5.9 - Migration from other LDAP servers
-
-TODO...
diff --git a/content/apacheds/advanced-ug/4.3-password-policy.mdtext b/content/apacheds/advanced-ug/4.3-password-policy.mdtext
deleted file mode 100644
index 4aab05f..0000000
--- a/content/apacheds/advanced-ug/4.3-password-policy.mdtext
+++ /dev/null
@@ -1,336 +0,0 @@
-Title: 4.3. Password Policy
-NavPrev: 4.2-authorization.html
-NavPrevText: 4.2 - Authorization
-NavUp: 4-authentication-and-authorization.html
-NavUpText: 4 - Authentication & Authorization
-NavNext: 5-administration.html
-NavNextText: 5 - Administration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.3. Password Policy
-
-The **Password Policy for LDAP Directories** is a **[RFC](http://tools.ietf.org/html/draft-behera-ldap-password-policy-10)** draft that has been designed for the very first version in 1999, and the latest version is from 2009. Although it's still a draft, and it's currently noted as inactive, it has been implemented by many existing **LDAP** servers.
-
-**ApacheDS** implements most of the draft.
-
-<DIV class="warning" markdown="1">
-Enforcing a strict password policy is extremely punitive to users. It may leads users to workaround the policy by storing their password in a post-it, a workaround that will defeat any password policy...
-
-Always try to think about better alternatives than force users to always define a password with 10 or more characters, including numbers, upper and lower case, special chars, and to change it every month...
-
-A long sentence (4 or 5 words), like "The horse has won the race three time" is most certainly a better password than any other combination, and is easy to remember...
-</DIV>
-
-
-## What is a password policy ?
-
-As explained on [wikipedia](http://en.wikipedia.org/wiki/Password_policy):
-
- :::Text
- A password policy is a set of rules designed to enhance computer security by encouraging users to employ strong passwords
- and use them properly.
-
-Basically, the system, once activated, will enforce some rules and check the password strength. We will list the various options in this chapter.
-
-There are different aspects to consider:
-
-* The password check when it's added or modified
-* The password management when the user bind, in other words, it's life cycle
-* The password protection against attacks
-
-Those aspects are exposed in the following paragraphs.
-
-
-## How do we configure it ?
-
-The _Password Policy_ can be configured in two ways.
-First of all, it's important to know that it's activated by default. Let's see the default configuration first.
-
-There is an entry containing all the default configuration values for the _Password Policy_, under the DN **"ou=passwordPolicies, ads-interceptorId=authenticationInterceptor, ou=interceptors, ads-directoryServiceId=<default>, ou=config"**, which corresponds to the following hierarchy:
-
- * ou=config
- * ads-directoryServiceId=<default>
- * ou=interceptors
- * ads-interceptorId=authenticationInterceptor
- * ou=passwordPolicies
-
-This entry contains the following values:
-
-| Attribute | Default value | Comment |
-|---|---|---|
-| ads-pwdAllowUserChange | TRUE | Tells if the user can change its password |
-| ads-pwdCheckQuality | 1 | The kind of quality we want for the password (0, 1, or 2) |
-| ads-pwdExpireWarning | 600 | |
-| ads-pwdFailureCountInterval | 30 | The duration of failure logs we keep in the entry |
-| ads-pwdGraceAuthnLimit | 5 | |
-| ads-pwdGraceExpire | 0 | |
-| ads-pwdInHistory | 5 | The number of passwords we keep in the password history |
-| ads-pwdLockout | TRUE | Tells if the password should be locked or not on failures |
-| ads-pwdLockoutDuration | 0 | The delay in seconds we wait before allowing a new attempt when the password hs been locked |
-| ads-pwdMaxAge | 0 | |
-| ads-pwdMaxDelay | 0 | The maximum we wait before sending the BindResponse |
-| ads-pwdMaxFailure | 5 | The maximum number of failure we accept before locking the password |
-| ads-pwdMaxIdle | 0 | |
-| ads-pwdMaxLength | 0 | |
-| ads-pwdMinAge | 0 | The delay between two password changes |
-| ads-pwdMinDelay | 0 | The minimum we wait before sending the BindResponse |
-| ads-pwdMinLength | 5 | |
-| ads-pwdMustChange | FALSE | |
-| ads-pwdSafeModify | FALSE | |
-
-Here is the entry in LDIF format:
-
- :::Text
- dn: ads-pwdId=default,ou=passwordPolicies,ads-interceptorId=authenticationIn
- terceptor,ou=interceptors,ads-directoryServiceId=default,ou=config
- objectclass: top
- objectclass: ads-base
- objectclass: ads-passwordPolicy
- ads-pwdAttribute: userPassword
- ads-pwdId: default
- ads-enabled: TRUE
- ads-pwdAllowUserChange: TRUE
- ads-pwdCheckQuality: 1
- ads-pwdExpireWarning: 600
- ads-pwdFailureCountInterval: 30
- ads-pwdGraceAuthnLimit: 5
- ads-pwdGraceExpire: 0
- ads-pwdInHistory: 5
- ads-pwdLockout: TRUE
- ads-pwdLockoutDuration: 0
- ads-pwdMaxAge: 0
- ads-pwdMaxDelay: 0
- ads-pwdMaxFailure: 5
- ads-pwdMaxIdle: 0
- ads-pwdMaxLength: 0
- ads-pwdMinAge: 0
- ads-pwdMinDelay: 0
- ads-pwdMinLength: 5
- ads-pwdMustChange: FALSE
- ads-pwdSafeModify: FALSE
-
-<DIV class="warning" markdown="1">
-All the configured delays are stored in seconds. As a rule of thumb, a day is 86400 seconds, a week is 604800 seconds and a month can be 2419200 seconds or 2505600 seconds (february normal and leap years), 2592000 seconds (april, june, september, november) and 2678400 (january, march, may, july, august, october and december)
-</DIV>
-
-In the draft, it is said that the passwordPolicy can apply to one user or to many. It's also suggested that some _Administrative Area_ could be used for that purpose : the users present in such an area will be constrained but the associated _PasswordPolicy_. At the moment, **ApacheDS** does not implement such a mechanism, and will rely on either the global configuration, stored in the _ou=config_ partition, or we can define a specific _Password Policy_ for a user. In this case, we will store in each user the reference to the _Password Policy_ to use into the _pwdPolicySubentry_ attribute (it contains a reference -a **DN** - to an entry storing the specific configuration).
-
-This specific configuration is stored into an entry having the _pwdPolicy_ Auxiliary ObjectClass, which description is :
-
- :::Text
- ( 1.3.6.1.4.1.42.2.27.8.2.1
- NAME 'pwdPolicy'
- SUP top
- AUXILIARY
- MUST ( pwdAttribute )
- MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheckQuality $
- pwdMinLength $ pwdMaxLength $ pwdExpireWarning $
- pwdGraceAuthNLimit $ pwdGraceExpiry $ pwdLockout $
- pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $
- pwdMustChange $ pwdAllowUserChange $ pwdSafeModify $
- pwdMinDelay $ pwdMaxDelay $ pwdMaxIdle ) )
-
-
-<DIV class="warning" markdown="1">
-Note that the specification allows the administrator to apply the password policy on any attribute, with a default value of _userPassword_ ApacheDS does not yet allow the use of another Attribute.
-</DIV>
-
-#### Enabling/Disabling the PasswordPolicy
-
-The _PasswordPolicy_ is enabled by default. It's possible to disable it by setting the _ads-enabled_ value to FALSE, with a server restart.
-
-## Password protection
-
-This part is exposing the various techniques the system uses to protect your password from an attack.
-
-### Password guessing limit
-
-The idea is to protect the password against multiple guess attempts. The following rules are applied:
-
-* a counter tracks the failed attempts, and blocks when it's reached
-* an incremental delay is added after a failure before a new attempt can be done
-* a global delay for all the failed attempt is used, when reached, the account is locked
-
-When the account is locked, it can remain locked, or be unlocked after a grace period.
-
-#### Attempts counter
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdLockout, ads-pwdMaxFailure, ads-pwdLockoutDuration
-</DIV>
-
-Each failed attempt will be logged in the entry, in the _ads-pwdFailureTime_ Attribute (it will contain the date and time of the attempt). When the attribute contains more values than the maximum number of failed attempts, the entry will be locked (the _ads-pwdAccountLockedTime_ Attribute will contain the date and time the entry has been locked).
-
-<DIV class="warning" markdown="1">
-In order to activate this control the ads-pwdLockout parameter must be set to TRUE.
-</DIV>
-
-The following table expose the various possible cases, with three failed attempts:
-
-| _ads-pwdmaxfailure_ | _ads-pwdLockout_ | _ads-pwdFailureTime_ | _ads-pwdAccountLockedTime_ | Locked | Comment |
-|---|---|---|---|---|---|
-| 3 | true | date1 | - | No | Failure 1 |
-| | | date1, date2 | - | No | Failure 2 |
-| | | date1, date2, date3 | date3 | Yes | Failure 3: account locked |
-| 3 | false | date1 | - | No | Failure 1 |
-| | | date1, date2 | - | No | Failure 2 |
-| | | date1, date2, date3 | - | No | Failure 3 |
-
-As we can see, the account is locked only when we reach the number of failure, and the _ads-pwdLockout_ flag is TRUE. If the _ads-pwdLockoutDuration_ flag is set, then the password will remain locked for the delay stored in this attribute.
-
-#### Delayed login
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdLockout, ads-pwdMaxFailure, ads-pwdLockoutDuration
-</DIV>
-
-When we have reached a number of failed attempt, the account will be locked. We can set another attribute to tell the server that the locked out account can be unlocked after a delay: the _ads-pwdLockoutDuration_ Attribute stores this delay.
-
-When the account is locked, no further attempt will succeed, even if the correct password is sent. After the delay, the user will be unlocked.
-
-#### Purging failures
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdFailureCountInterval
-</DIV>
-
-As we store all the failures within the entry, at some point we may want to purge those failures. This is done either because we have successfully logged, or because the _ads-pwdFailureCountInterval_ value has expired. In this last case, all the failures older than the current time minus the set interval will be removed.
-
-
-### Password checks and strength enforcement
-
-Those rules are used to enforce some constraints on the password, so that weak passwords can't be used.
-
-#### Quality Check policy
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdQualityCheck<br>
-Default value: 1
-</DIV>
-
-The system can be enabled or disabled, and when enabled, two different level of checks can be done: relaxed or strict.
-We use a parameter to specify the kind of check we do on the password: _ads-pwdCheckQuality_, which can take three values:
-
-* 0: The password is not checked
-* 1: We check the password when we can, i.e. when it's not hashed. When the password is hashed, or in a form that does not allow us to apply the checks, then we ignore the errors
-* 2: The password is checked, and if it's hashed or in a form that does not allow the checks to be done, then the changes are rejected.
-
-#### Password History
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdInHistory
-</DIV>
-
-The server can keep a backlog of passwords, so that a user can't keep a password for ever. When requested to do so the user will have to change his/her password, and the old password will be stored in the user's entry password history.
-
-We can specify the number of passwords we keep in the password history by configuring the _ads-pwdInHistory_ attribute.
-
-#### Minimum delay between modifications
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdMinAge
-</DIV>
-
-When the password history is activated, some users may change their passwords many times to get their old password out of the history, and add it as their password again. Setting a delay between two password changes may protect the password against such action.
-
-The _ads-pwdMinAge_ attribute is used for this purpose, and it keeps a value in seconds.
-
-#### Password length constraint
-
-<DIV class="info" markdown="1">
-Impacted Attributes: ads-pwdMinLength and ads-pwdMaxLength
-</DIV>
-
-You can control the minimum and maximum length for a password by setting the _ads-pwdMinLength_ and _ads-pwdMaxLength_ attributes.
-
-<DIV class="warning" markdown="1">
-Setting a password max length is most certainly a waste of time. It's very likely that this parameter has been added to the specification for the sake of symetry...
-</DIV>
-
-
-### Password lifecycle management
-
-We now have to expose the rules that apply to the password during it's life.
-
-
-#### Password max age
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdMaxAge
-</DIV>
-
-A password may have a limited life expectation, and when this age is reached, the password will be invalidated. This is configured through the _ads-pwdMaxAge_ parameter, which contains the number of second a password will last.
-
-This password invalidation can be overruled by the two next parameters.
-
-<DIV class="warning" markdown="1">
-This parameter works hands in hands with some other parameter, like the ads-pwdGraceAuthNLimit and ads-GraceExpire. If those parameters are set too, you may get some different delay for your password expiration.
-</DIV>
-
-
-#### Password grace auth N limit
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdGraceAuthNLimit
-</DIV>
-
-When the password has expired, this parameter (_ads-pwdGraceAuthNLimit_) tells how many times a user will still be allowed to bind before the password is definitively locked. Each attempt will decrement the associated counter.
-
-#### Password grace Expire
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdGraceExpire
-</DIV>
-
-Another option when the password has expired is to give the user the possibility to log in during a certain period of time. This is mainly useful when the _ads-pwdGraceAuthNLimit_ is set: not only there is a limited number of attempts, but those attempts must be done in a limited period of time, ortherwise the password will be locked.
-
-If the configuration of the _ads-pwdGraceAuthNLimit_ is 0, the _ads-pwdGraceExpire_ value is simply added to the _ads-pwdMaxAge_ value.
-
-#### Idle Password
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdMaxIdle
-</DIV>
-
-You can set a maximum inactivity delay for a password, before this password expires. This is set using the _ads-pwdMaxIdle_ parameter
-
-
-#### Expiration warning
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdExpireWarning
-</DIV>
-
-The _ads-pwdExpireWarning_ parameter will be used to send back a warning if the password if the password is going to expire in a given delay. This is convenient as soon as the client sends the _PasswordPolicy_ control to the server, and as soon as the client reads the response's control.
-
-
-#### Allow user changes
-
-<DIV class="info" markdown="1">
-Impacted Attribute: ads-pwdAllowUserChange
-</DIV>
-
-The _ads-pwdAllowUserChange_ parameter can be used to allow - or forbid - a user to change his/her own password. When this parameter is set to _TRUE_, the user can't change his/her password.
-
-
-### Not supported parameters
-
-A few parameters are described in the specification, but aren't supported. Here is the list :
-
-* ads-pwdMinDelay : The minimal delay the server waits before sending back a response.
-* ads-pwdMaxDelay : The maximal delay the server waits before sending back a response.
diff --git a/content/apacheds/advanced-ug/5-administration.mdtext b/content/apacheds/advanced-ug/5-administration.mdtext
deleted file mode 100644
index f40d616..0000000
--- a/content/apacheds/advanced-ug/5-administration.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: 5 - Administration
-NavPrev: 4-authentication-and-authorization.html
-NavPrevText: 4 - Authentication and Authorization
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 5.1-layout.html
-NavNextText: 5.1 - Layout
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5 - Administration
-
-This chapter describe how to administer the **Apache Directory Server**.
-
-## Chapter content
-
-* [5.1 - Layout](5.1-layout.html)
-* [5.2 - Starting and stopping the server](5.2-start-stop.html)
-* [5.3 - Logs](5.3-logs.html)
-* [5.4 - Replication](5.4-replication.html)
-* [5.5 - Cache](5.5-cache.html)
-
diff --git a/content/apacheds/advanced-ug/5.1-layout.mdtext b/content/apacheds/advanced-ug/5.1-layout.mdtext
deleted file mode 100644
index ff557ad..0000000
--- a/content/apacheds/advanced-ug/5.1-layout.mdtext
+++ /dev/null
@@ -1,169 +0,0 @@
-Title: 5.1 - Layout
-NavPrev: 5-administration.html
-NavPrevText: 5 - Administration
-NavUp: 5-administration.html
-NavUpText: 5 - Administration
-NavNext: 5.2-start-stop.html
-NavNextText: 5.2 - Starting and Stopping
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.1 - Layout
-
-[TOC]
-
-## 5.1.1 General Layout
-
-The general layout for ApacheDS is fairly simple and consists in two major concepts:
-
-* an installation layout
-* an instance layout
-
-### 5.1.1.1 Installation Layout
-
-The installation is where are stored all files essential to ApacheDS like the launch script, libraries, eventually a service wrapper (depending on the kind of installer used).
-
-The most common installation, shared by all ApacheDS installers, can be described as follows:
-
- :::text
- [Installation-Layout]
- |- bin/
- |- apacheds (or 'apacheds.exe' on Windows)
- |- wrapper (or 'wrapper.exe' on Windows)
- |- conf/
- |- wrapper.conf
- |- lib/
- |- apacheds-service-${version}.jar
- |- apacheds-wrapper-${version}.jar
- |- libwrapper.jnilib (or 'libwrapper.so', or 'libwrapper.dll' depending on the platform)
- |- wrapper-3.2.3.jar
- |- LICENSE
- |- NOTICE
-
-* The _**bin/**_ directory contains the _**apacheds**_ launch script and _**wrapper**_ binary used to configure ApacheDS as a _service_.
-* The _**conf/**_ directory holds the general configuration for the service in _**wrapper.conf**_.
-* The _**lib/**_ directory contains all ApacheDS and wrapper libraries necessary to run the server.
-* _**LICENCE**_ and _**NOTICE**_ files contains the required legal information about ApacheDS.
-
-### 5.1.1.2 Instance Layout
-
-ApacheDS is built to be able to run multiple instances of the server at the same time, which means that optionally an _**instances**_ folder can be found in the installation layout (or elsewhere on disk depending on the platform).
-In that folder, can be found a single or multiple directories, all sharing the same layout, corresponding to all ApacheDS instance (one directory per instance, named by the id of the instance).
-
-Here's how this instance layout can be described:
-
- :::text
- [Instance-Layout]
- |- cache/
- |- [...]
- |- conf/
- |- config.ldif
- |- log4j.properties
- |- wrapper.conf
- |- log/
- |- apacheds.log
- |- wrapper.log
- |- partitions/
- |- example/
- |- [...]
- |- schema/
- |- [...]
- |- system/
- |- [...]
-
-* The _**cache/**_ directory is empty upon installation and contains all the data required for the cache system after the first start of the server.
-* The _**conf/**_ directory contains:
- * an additional _**wrapper.conf**_ where general configuration defined in the installation layout can be overwritten for the given instance.
- * a _**log4j.properties**_ file which is responsible for logging configuration.
- * a _**config.ldif**_ file corresponding to the inner configuration of ApacheDS.
-* The _**log/**_ directory is empty upon installation and contains two files after the first start of the server:
- * a _**apacheds.log**_ which is where all logs defined in the _**log4j.properties**_ go.
- * a _**wrapper.log**_ which only contains the wrapper logs (related to the service's start/stop).
-* The _**partitions/**_ directory is empty upon installation and contains after the first start of the server a directory for each partition defined in the configuration:
- * the _**example/**_ directory holds the data for the "_example_" partition defined in ApacheDS' default configuration.
- * the _**schema/**_ and _**system/**_ directories contain the data for both internal "_schema_" and "_system_" partitions.
-
-## 5.1.2 Specific Layouts
-
-Depending on the type of distribution used to install ApacheDS, the layout varies to adapt as best as possible to the specificities of each platform.
-
-### 5.1.2.1 Archive Distribution (zip/tar.gz)
-
-The Archive distribution consist of a compressed directory containing everything needed to run ApacheDS. It doesn't install on the machine and does not require any extra permission (root user, installer password, etc.). The directory is simply unarchived and ApacheDS is ready to be launched.
-
-The installation layout is a bit simpler for this kind of distribution since no wrapper is distributed, the application being run in a terminal or via the .bat script.
-
- :::text
- [Installation-Layout]
- |- bin/
- |- apacheds.bat
- |- apacheds.sh
- |- cpappend.bat
- |- instances/
- |- lib/
- |- apacheds-service-${version}.jar
- |- LICENSE
- |- NOTICE
-
-* The _**bin/**_ directory contains the _**apacheds.bat**_ (Windows) and _**apacheds.sh**_ (Linux/Unix) launch scripts and a _**cpappend.bat**_ utility (only used on Windows).
-* The _**instances/**_ directory hold all ApacheDS instances (an instance named _**default**_ is provided by default).
-* The _**lib/**_ directory only contains the ApacheDS library.
-* _**LICENCE**_ and _**NOTICE**_ files contains the required legal information about ApacheDS.
-
-### 5.1.2.2 Windows Installer (.exe)
-
-The Windows installer uses the general installation and instances layout.
-
-By default, the installation directory is:
-
- C:\Program Files\ApacheDS
-
-An _**instances/**_ directory in the installation layout holds all ApacheDS instances (an instance named _**default**_ is provided by default).
-
-ApacheDS is registered as a service on Windows. Operations on the service can be achieved in the _**Services**_ utility which is accessible via _**Start**_ > _**Contol Panel**_ > _**Administration Tools**_ > _**Services**_.
-
-### 5.1.2.3 Linux Binary (.bin), Debian (.deb) & Fedora (.rpm) Installers
-
-The Mac OS X installer uses the general installation and instances layout.
-
-By default, the installation directory is:
-
- /opt/apacheds-${version}
-
-All ApacheDS instances are located in a directory at the following location (an instance named _**default**_ is provided by default):
-
- /var/lib/apacheds-${version}
-
-The installer also adds a _shortcut_ launch script for the default instance at:
-
- /etc/init.d/apacheds-${version}-default
-
-**NOTE:** The ApacheDS Linux Binary installer lets the user decide the locations of the installation directory, the instances directory and the default instance launch script. The locations above refer to the default location and need to be adapted to whatever path was chosen during the installation.
-
-### 5.1.2.4 Mac OS X Installer (.pkg)
-
-The Mac OS X installer uses the general installation and instances layout.
-
-By default, the installation directory is:
-
- /usr/local/apacheds-${version}
-
-An _**instances/**_ directory in the installation layout holds all ApacheDS instances (an instance named _**default**_ is provided by default).
-
-The installer also adds a _shortcut_ to the command in the _**bin**_ directory called "_**apacheds**_", accessible directly in a terminal and located at:
-
- /usr/bin/apacheds
diff --git a/content/apacheds/advanced-ug/5.2-start-stop.mdtext b/content/apacheds/advanced-ug/5.2-start-stop.mdtext
deleted file mode 100644
index 6b24c35..0000000
--- a/content/apacheds/advanced-ug/5.2-start-stop.mdtext
+++ /dev/null
@@ -1,93 +0,0 @@
-Title: 5.2 - Starting and Stopping the server
-NavPrev: 5.1-layout.html
-NavPrevText: 5.1 - Layout
-NavUp: 5-administration.html
-NavUpText: 5 - Administration
-NavNext: 5.3-logs.html
-NavNextText: 5.3 - Logs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.2 - Starting and Stopping the server
-
-[TOC]
-
-## 5.2.1 Archive Distribution (zip/tar.gz)
-
-### Starting ApacheDS
-
-#### On Linux/Unix Systems
-
-In a terminal, first move to the ApacheDS directory of the unarchived distribution and then run the _**apacheds.sh**_ script in the _**bin**_ directory:
-
- $ cd <path-to-apacheds-directory>
- $ sh bin/apache.sh
-
-#### On Windows
-
-Double-click the _**apacheds.bat**_ command in the _**bin**_ directory or in a terminal, first move to the _**bin**_ directory of the unarchived distribution and then run the _**apacheds.bat**_ command:
-
- $ cd <path-to-apacheds-directory>\bin
- $ apacheds.bat
-
-### Stopping ApacheDS
-
-ApacheDS can be stopped by hitting _**CTL+C**_ in the terminal the server was launched with. If the _**apacheds.bat**_ command was double-clicked, closing the terminal window will also stop ApacheDS.
-
-## 5.2.2 Windows Installer (.exe)
-
-ApacheDS is registered as a service on Windows. Start and Stop operations can be achieved in the _**Services**_ utility which is accessible via _**Start**_ > _**Control Panel**_ > _**Administration Tools**_ > _**Services**_.
-
-ApacheDS also provides an easier access to the _**Services**_ utility via _**Start**_ > _**All Programs**_ > _**ApacheDS**_ > _**Manage ApacheDS**_.
-
-### Starting ApacheDS
-
-The ApacheDS service can be started right-clicking on the _**ApacheDS - Default**_ service and selecting _**Start**_ in the context menu.
-
-### Stopping ApacheDS
-
-The ApacheDS service can be started right-clicking on the _**ApacheDS - Default**_ service and selecting _**Stop**_ in the context menu.
-
-## 5.2.3 Linux Binary (.bin), Debian (.deb) & Fedora (.rpm) Installers
-
-### Starting ApacheDS
-
-In a terminal, run the following command:
-
- $ sudo /etc/init.d/apacheds-${version}-default start
-
-### Stopping ApacheDS
-
-In a terminal, run the following command:
-
- $ sudo /etc/init.d/apacheds-${version}-default stop
-
-**NOTE:** The ApacheDS Linux Binary installer lets the user decide the location of the launch script. The commands above refer to the default location and need to be adapted to whatever path was chosen during the installation.
-
-## 5.2.4 Mac OS X Installer (.pkg)
-
-### Starting ApacheDS
-
-In a terminal, run the following command:
-
- $ sudo launchctl start org.apache.directory.server
-
-### Stopping ApacheDS
-
-In a terminal, run the following command:
-
- $ sudo launchctl stop org.apache.directory.server
diff --git a/content/apacheds/advanced-ug/5.3-logs.mdtext b/content/apacheds/advanced-ug/5.3-logs.mdtext
deleted file mode 100644
index ac99f3a..0000000
--- a/content/apacheds/advanced-ug/5.3-logs.mdtext
+++ /dev/null
@@ -1,140 +0,0 @@
-Title: 5.3 - Logs
-NavPrev: 5.2-start-stop.html
-NavPrevText: 5.2 - Starting and Stopping the server
-NavUp: 5-administration.html
-NavUpText: 5 - Administration
-NavNext: 5.4-replication.html
-NavNextText: 5.4 - Replication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.3 - Logs
-
-## 5.3.1 Logs overview
-
-ApacheDS internally uses SLF4J as a facade for logs and Log4J is bundled in the standalone ApacheDS distributions.
-
-Logs can be configured by modifying the _**log4j.properties**_ file which can be found in the _**conf**_ directory of the server instance (see the previous chapter "[5.1 - Layout](5.1-layout.html)").
-
-Here is the Log4J configuration that comes with ApacheDS:
-
- :::Text
- #############################################################################
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #############################################################################
- log4j.rootCategory=WARN, F
-
- log4j.appender.F=org.apache.log4j.RollingFileAppender
- log4j.appender.F.File=${apacheds.log.dir}/apacheds.log
- log4j.appender.F.MaxFileSize=100MB
- log4j.appender.F.MaxBackupIndex=3
- log4j.appender.F.layout=org.apache.log4j.PatternLayout
- log4j.appender.F.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # Specific loggers (useful for debugging)
- #log4j.logger.jdbm.recman.BaseRecordManager=DEBUG
- #log4j.logger.org.apache.directory.server.OPERATION_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.OPERATION_TIME=DEBUG
- #log4j.logger.org.apache.directory.api.CODEC_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.ACI_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.PROVIDER_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.CONSUMER_LOG=DEBUG
- #log4j.logger.org.apache.directory.CURSOR_LOG=DEBUG
- #log4j.logger.org.apache.directory.api=DEBUG
- #log4j.logger.org.apache.directory.server=DEBUG
- #log4j.logger.net.sf.ehcache=DEBUG
- #log4j.logger.org.apache.mina=DEBUG
-
-## 5.3.2 Default log level
-
-By default, ApacheDS ships with a default log level set to **WARN** as indicated in the first line of the _**log4j.properties**_ file:
-
- :::Text
- log4j.rootCategory=WARN, F
-
-This value can be modified to any of the seven log levels supported by Log4J:
-
-<center>
-
-| Level | Description |
-|:-:|---|
-| _**OFF**_ | Highest possible rank and is intended to turn off logging. |
-| _**FATAL**_ | Very severe error events that will presumably lead the application to abort. |
-| _**ERROR**_ | Error events that might still allow the application to continue running. |
-| _**WARN**_ | Potentially harmful situations. |
-| _**INFO**_ | Informational messages that highlight the progress of the application at coarse-grained level. |
-| _**DEBUG**_ | Fine-grained informational events that are most useful to debug an application. |
-| _**TRACE**_ | Finer-grained informational events than the DEBUG. |
-
-</center>
-
-Please refer to the [**Log4J Manual**](http://logging.apache.org/log4j/1.2/manual.html) for more details.
-
-## 5.3.2 ApacheDS specific loggers
-
-Bundled at the end of the _**log4j.properties**_ file, are a set of specific loggers dedicated to a particular kind of events:
-
- :::Text
- # Specific loggers (useful for debugging)
- #log4j.logger.jdbm.recman.BaseRecordManager=DEBUG
- #log4j.logger.org.apache.directory.server.OPERATION_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.OPERATION_TIME=DEBUG
- #log4j.logger.org.apache.directory.api.CODEC_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.ACI_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.PROVIDER_LOG=DEBUG
- #log4j.logger.org.apache.directory.server.CONSUMER_LOG=DEBUG
- #log4j.logger.org.apache.directory.CURSOR_LOG=DEBUG
- #log4j.logger.org.apache.directory.api=DEBUG
- #log4j.logger.org.apache.directory.server=DEBUG
- #log4j.logger.net.sf.ehcache=DEBUG
- #log4j.logger.org.apache.mina=DEBUG
-
-The table below summarizes what each specific logger does:
-
-<center>
-
-| Logger | Description |
-|---|---|
-| **jdbm.recman.BaseRecordManager** | Logs all information related to the JDBM database used to store the entries. |
-| **org.apache.directory.server.OPERATION_LOG** | Logs all executed operations (search, add, delete, etc.). |
-| **org.apache.directory.server.OPERATION_TIME** | Logs the time each operation takes to execute. |
-| **org.apache.directory.api.CODEC_LOG** | Logs all incoming and outgoing LDAP Protocol requests/responses. |
-| **org.apache.directory.server.ACI_LOG** | Logs all information related to the ACI system. |
-| **org.apache.directory.server.PROVIDER_LOG** | Logs all information related to the Replication Provider(s). |
-| **org.apache.directory.server.CONSUMER_LOG** | Logs all information related to the Replication Consumer(s). |
-| **org.apache.directory.CURSOR_LOG** | Logs all information related to the Cursors handling the search of entries in the database. |
-| **org.apache.directory.api** | A general logger which logs all classes of the Apache Directory LDAP API. |
-| **org.apache.directory.server** | A general logger which logs all classes of ApacheDS. |
-| **net.sf.ehcache** | A general logger which logs all classes of the Ehcache API. |
-| **org.apache.mina** | A general logger which logs all classes of the Apache Mina API. |
-
-</center>
-
-These loggers are deactivated by default to prevent them interfering with the root log level. Make sure to uncomment those you would like to activate (by removing the '_#_' character in front of the line) and set the dedicated log level according to the kind of information you're looking for.
diff --git a/content/apacheds/advanced-ug/5.4-replication.mdtext b/content/apacheds/advanced-ug/5.4-replication.mdtext
deleted file mode 100644
index 9314def..0000000
--- a/content/apacheds/advanced-ug/5.4-replication.mdtext
+++ /dev/null
@@ -1,71 +0,0 @@
-Title: 5.4 - Replication
-NavPrev: 5.3-logs.html
-NavPrevText: 5.3 - Logs
-NavUp: 5-administration.html
-NavUpText: 5 - Administration
-NavNext: 5.5-cache.html
-NavNextText: 5.5 - Cache
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.4 - Replication
-
-## 5.4.1 Replication overview
-
-ApacheDS supports both Producer-Consumer and Multi-Producers replication based on the [syncrepl](http://tools.ietf.org/html/rfc4533) specification.
-
-## Initial steps
-
-The below initial conditions must be met before configuring the replication in any mode.
-
-* Make sure all the servers are up and running
-
-* Add the configuration of the partition whose data needs to be replicated.
- For example if we like to replicate the partition dc=apache,dc=org then
- make sure to configure this partition in all the servers that are configured to replicate.
- See [Adding Partition](../basic-ug/1.4.3-adding-partition.mdtext)
-
-
-## Configuring Producer-Consumer replication
-
-Assuming that the Producer is running on localhost at port 10389 and consumer on localhost at port 11997 and we want to
-replicate the data from partition dc=apache,dc=org
-
-The below configuration must be added in the Consumer server and it should be restarted.
-
- dn: ads-replConsumerId=consumer1,ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
- ads-replconsumerid: consumer1
- ads-replstrictcertvalidation: FALSE
- ads-replusetls: FALSE
- ads-replsearchtimeout: 0
- ads-replsearchfilter: (objectClass=*)
- ads-replsearchsizelimit: 0
- ads-replattributes: *
- ads-replrefreshinterval: 60000
- ads-repluserpassword: secret
- ads-repluserdn: uid=admin,ou=system
- ads-replprovport: 10389
- ads-replprovhostname: localhost
- ads-replrefreshnpersist: TRUE
- ads-replsearchscope: sub
- ads-searchbasedn: dc=apache,dc=org
- ads-enabled: TRUE
- objectclass: ads-replConsumer
- objectclass: ads-base
- objectclass: top
- ads-replaliasderefmode: never
-
diff --git a/content/apacheds/advanced-ug/5.5-cache.mdtext b/content/apacheds/advanced-ug/5.5-cache.mdtext
deleted file mode 100644
index 93e338a..0000000
--- a/content/apacheds/advanced-ug/5.5-cache.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 5.5 - Cache
-NavPrev: 5.4-replication.html
-NavPrevText: 5.4 - Replication
-NavUp: 5-administration.html
-NavUpText: 5 - Administration
-NavNext: 6-implementing-interceptor.html
-NavNextText: 6 - Implementing a simple custom Interceptor for ApacheDS
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.5 - Cache
-
-We use many caches in *ApacheDS*. Here is a list of all the existing caches :
-
-* aliasCache<String, DN> : It caches aliases, using the _entryUUID_ as a key (AbstractBTreePartition)
-* piarCache<String, ParentIdAndRdn> : It caches RDN and their parent, using the _entryUUID_ as a key (AbstractBTreePartition)
-* EntryDN cache : Cache Entry's DN using the _entryUUID_ as a key (AbstractBTreePartition)
-* entryCache (JDBMPartition, MavibotPartition) : Caches the full entries, using their _entryUUID_ as keys.
-* masterTableCache (MavibotPartition) :
-* kdcReplayCache (KdcServer) :
-* changePwdReplayCache (ChangePasswordServer) :
-* groupCache (GroupCache) :
-* dnCache (DefaultDnFactory) :
-* Subentry (SubentryCache) use a ConcurrentHashMap
-* As many caches as we have indexes
-
-To be continued...
diff --git a/content/apacheds/advanced-ug/6-implementing-interceptor.mdtext b/content/apacheds/advanced-ug/6-implementing-interceptor.mdtext
deleted file mode 100644
index 0f7e845..0000000
--- a/content/apacheds/advanced-ug/6-implementing-interceptor.mdtext
+++ /dev/null
@@ -1,300 +0,0 @@
-Title: 6 - Implementing a simple custom Interceptor for ApacheDS
-NavPrev: 5.4-replication.html
-NavPrevText: 5.4 - Replication
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-NavNext: 7-embedding-apacheds.html
-NavNextText: 7 - Embedding ApacheDS in Java
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6 - Implementing a simple custom Interceptor for ApacheDS
-
-This site was updated for ApacheDS 2.0.
-
-The following is for developers who plan to implement their own interceptors in order to extend or modify the functionality of Apache Directory Server. It contains a simple example as a starting point.
-
-## What exactly is an interceptor?
-
-An interceptor filters method calls performed on on the DefaultPartitionNexus just like Servlet filters do. The ApacheDS configuration contains a chain of filters performing several tasks. In order to illustrate this, here is the list of interceptors from the default server configuration of ApacheDS 2.0
-
- org.apache.directory.server.core.normalization.NormalizationInterceptor
- org.apache.directory.server.core.authn.AuthenticationInterceptor
- org.apache.directory.server.core.referral.ReferralInterceptor
- org.apache.directory.server.core.authz.AciAuthorizationInterceptor
- org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor
- org.apache.directory.server.core.exception.ExceptionInterceptor
- org.apache.directory.server.core.changelog.ChangeLogInterceptor
- org.apache.directory.server.core.operational.OperationalAttributeInterceptor
- org.apache.directory.server.core.schema.SchemaInterceptor
- org.apache.directory.server.core.subtree.SubentryInterceptor
- org.apache.directory.server.core.collective.CollectiveAttributeInterceptor
- org.apache.directory.server.core.event.EventInterceptor
- org.apache.directory.server.core.trigger.TriggerInterceptor
- org.apache.directory.server.core.journal.JournalInterceptor
-
-Interceptors should usually pass the control of current invocation to the next interceptor by calling an appropriate method on NextInterceptor. The flow control is returned when the next interceptor's filter method returns. You can therefore implement pre-, post-, around- invocation handler by how you place the statement.
-
-Interceptors are a powerful way to extend and modify the server behavior. But be warned. A mistakenly written interceptor may lead to a dis-functional or corrupt server.
-Password hash. A simple interceptor
-
-In order to demonstrate how to write an interceptor, here is a simple but realistic example. The following requirement should be fulfilled by an interceptor.
-
- No user password should be stored in the directory in clear text.
-
-To be more concrete:
-
- If a userpassword is set by an LDAP client in plain text, a message digest algorithm should be applied to the value, and the one-way encrypted value should be stored
- the algorithm should be applied if new entries are created or existing entries are modified (hence modify and add operations will be intercepted)
- If the value given by the client is already provided in hashed form, nothing happens, and the given value is stored in the directory without modification
-
-## The sources
-
-Currently, the sources are checked in here
-
- http://svn.apache.org/repos/asf/directory/sandbox/szoerner/passwordHashInterceptor
-
-In order to build it, simply check it out and type "mvn install".
-Implementing the class PasswordHashInterceptor
-
-The following UML class diagram depicts the structure of the little example. Classes in white are given by Apache Directory Server as extension points. The two gray classes comprise the example interceptor.
-
-![Password Hash Interceptor UML diagram](images/passwordHashInterceptor_UML.png)
-
-The class HashTools contains two simple methods w.r.t. hashing. isAlreadyHashed detects whether a value has already been hashed with a known message digest algorithm. applyHashAlgorithm applies a hash algorithm to a sequence of bytes. See the source code and the unit tests of this class for details, it has not that much to do with the interceptor stuff.
-
-The central class is PasswordHashInterceptor. Every interceptor has to implement the Interceptor interface from package org.apache.directory.server.core.interceptor. PasswordHashInterceptor does so by extended the convenience class BaseInterceptor from the same package.
-
-The property hashAlgorithm allows to configure the alhorithm used for hashing the passwords. It defaults to MD5 (Message-Digest algorithm 5). The property passwordAttributeName allows configuration of the attribute type which stores the user password. Its value will be hashed if needed. The property defaults to "userPassword", which is quite common and used for instance in the inetOrgPerson object class.
-
-The most interesting methods of the class are add and modify. They intercept the requests ans modify the attribute values, if needed. See below the complete source code of the class.
-
- package org.apache.directory.samples.interceptor.pwdhash;
-
- import static org.apache.directory.samples.interceptor.pwdhash.HashTools.applyHashAlgorithm;
- import static org.apache.directory.samples.interceptor.pwdhash.HashTools.isAlreadyHashed;
-
- import java.util.List;
-
- import org.apache.directory.server.core.entry.ClonedServerEntry;
- import org.apache.directory.server.core.interceptor.BaseInterceptor;
- import org.apache.directory.server.core.interceptor.NextInterceptor;
- import org.apache.directory.server.core.interceptor.context.AddOperationContext;
- import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
- import org.apache.directory.shared.ldap.entry.EntryAttribute;
- import org.apache.directory.shared.ldap.entry.Modification;
- import org.apache.directory.shared.ldap.entry.ModificationOperation;
-
- public class PasswordHashInterceptor extends BaseInterceptor {
-
- private String hashAlgorithm = "MD5";
-
- private String passwordAttributeName = "userPassword";
-
- public void setHashAlgorithm(String hashAlgorithm) {
- this.hashAlgorithm = hashAlgorithm;
- }
-
- public void setPasswordAttributeName(String passwordAttributeName) {
- this.passwordAttributeName = passwordAttributeName;
- }
-
- /**
- * Intercepts the add operation in order to replace plain password values
- * with hashed ones.
- */
- @Override
- public void add(NextInterceptor next, AddOperationContext opContext)
- throws Exception {
-
- ClonedServerEntry entry = opContext.getEntry();
- EntryAttribute attribute = entry.get(passwordAttributeName);
- if (attribute != null) {
- hashPasswordIfNeccessary(attribute);
- }
-
- super.add(next, opContext);
- }
-
- /**
- * Intercepts the modify operation in order to replace plain password values
- * with hashed ones.
- */
- @Override
- public void modify(NextInterceptor next, ModifyOperationContext opContext)
- throws Exception {
-
- List<Modification> items = opContext.getModItems();
- for (Modification modification : items) {
- ModificationOperation operation = modification.getOperation();
- if (operation == ModificationOperation.ADD_ATTRIBUTE
- || operation == ModificationOperation.REPLACE_ATTRIBUTE) {
- EntryAttribute attribute = modification.getAttribute();
- if (attribute.getId().equalsIgnoreCase(passwordAttributeName)) {
- hashPasswordIfNeccessary(attribute);
- }
- }
- }
- super.modify(next, opContext);
- }
-
- protected void hashPasswordIfNeccessary(EntryAttribute attribute) {
- try {
- byte[] password = attribute.getBytes();
- if (!isAlreadyHashed(password)) {
- byte[] hashed = applyHashAlgorithm(hashAlgorithm, password);
- attribute.clear();
- attribute.add(hashed);
- }
- } catch (Exception e) {
- throw new RuntimeException("Password hash failed", e);
- }
- }
- }
-
-## Using the interceptor
-
-You may use a custom interceptor both in a standard ApacheDS installation and in a server started embedded.
-Adding it to a standard server installation (server.xml)
-
-In order to get the interceptor installed in a default installation of ApacheDS 1.5.5., just copy the jar-File resulting from the Maven build, which contains the custom classes, to APACHEDS_INSTALLDIR/lib/ext.
-
-After that, add the interceptor to the server.xml file in APACHEDS_INSTALLDIR/conf/. Make sure to backup the file before your modifications. Within server.xml find the XML elements which list the interceptors. The easiest way to add a custom interceptor is to add a spring bean (namespace "s"). You mya set configuration properties to the interceptor as well, if it supports some.
-
-The following fragment shows the interceptor list with the example interceptor added just behind normalization. For demonstration purposes, the hash algorithm is set to "MD5" (which is the default of our interceptor anyway).
-
- ...
- <interceptors>
- <normalizationInterceptor/>
- <s:bean class="org.apache.directory.samples.interceptor.pwdhash.PasswordHashInterceptor">
- <s:property name="hashAlgorithm" value="MD5" />
- </s:bean>
- <authenticationInterceptor/>
- <referralInterceptor/>
- <aciAuthorizationInterceptor/>
- <defaultAuthorizationInterceptor/>
- <exceptionInterceptor/>
- <operationalAttributeInterceptor/>
- ...
- </interceptors>
- ...
-
-## Embedded mode
-
-As an alternative, the following Java code starts an ApacheDS embedded in a main method. The list of interceptors is complemented with the example interceptor. We insert it exactly behind the NormalizingInterceptor (the position is a little bit tricky to determine).
-
- package org.apache.directory.samples.interceptor.pwdhash;
-
- import java.util.List;
-
- import org.apache.directory.server.core.DefaultDirectoryService;
- import org.apache.directory.server.core.DirectoryService;
- import org.apache.directory.server.core.interceptor.Interceptor;
- import org.apache.directory.server.core.normalization.NormalizationInterceptor;
- import org.apache.directory.server.ldap.LdapServer;
- import org.apache.directory.server.protocol.shared.transport.TcpTransport;
-
- /**
- * Main class which starts an embedded server with the interceptor inserted into
- * the chain.
- */
- public class Main {
-
- public static void main(String[] args) throws Exception {
-
- DirectoryService directoryService = new DefaultDirectoryService();
- directoryService.setShutdownHookEnabled(true);
-
- List<Interceptor> interceptors = directoryService.getInterceptors();
-
- // Find Normalization interceptor in chain
- int insertionPosition = -1;
- for (int pos = 0; pos < interceptors.size(); ++pos) {
- Interceptor interceptor = interceptors.get(pos);
- if (interceptor instanceof NormalizationInterceptor) {
- insertionPosition = pos;
- }
- }
-
- // insert our new interceptor just behind
- interceptors.add(insertionPosition + 1, new PasswordHashInterceptor());
- directoryService.setInterceptors(interceptors);
-
- LdapServer ldapServer = new LdapServer();
- ldapServer.setDirectoryService(directoryService);
- ldapServer.setAllowAnonymousAccess(true);
-
- TcpTransport ldapTransport = new TcpTransport(10389);
- ldapServer.setTransports(ldapTransport);
-
- directoryService.startup();
- ldapServer.start();
- }
- }
-
-## Verification
-
-Let's check whether our new interceptor does its job! In order to do so, we use Apache Directory Studio and connect to the server with the interceptor enabled (see above).
-
-First we create a new entry with the following data, using "New Entry ..." within Studio.
-
- dn: cn=Kate Bush,ou=users,ou=system
- objectClass: person
- objectClass: top
- cn: Kate Bush
- sn: Bush
-
-Then we add a new attribute userPassword in the entry editor. For the value, a special editor appears:
-
-![](images/passwordHashInterceptor_passwordEditor.png)
-
-Select "Plaintext" as the hash method and enter a new password. We selected "secret" (see screen shot above). After pressing OK, a modify operation is sent to the server, which will be intercepted by our example class.
-
-![](images/passwordHashInterceptor_modificationLog.png)
-
-After that, the value for userPassword is not "secret", but the MD5 digested value of it.
-
-![](images/passwordHashInterceptor_entryEditor.png)
-
-The user Kate Bush is still capable of authenticating with the password "secret", because Apache Directory Server supports authentication with passwords hashed with this algorithm. You can verify this by connecting with Studio and the using "cn=Kate Bush,ou=users,ou=system" as bind DN.
-
-Here it is demonstrated with the help of the ldapsearch command line tool. The result also shows that the userPassword value is hashed with MD5.
-
- $ ldapsearch -h localhost -p 10389 -D "cn=Kate Bush,ou=users,ou=system" \\
- -w secret -b "ou=users,ou=system" -s one "(objectClass=*)"
- version: 1
- dn: cn=Kate Bush,ou=users,ou=system
- objectClass: person
- objectClass: top
- cn: Kate Bush
- sn: Bush
- userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
- $
-
-## Limitations of the example
-
-This example is intended as a demonstration, on how to write your custom interceptor. Don't consider it bullet proof. It has not been tested under production conditions, etc.
-
-At least the following limitation should be mentioned
-
- The default hash algorithm MD5 is considered weak.
- Exception handling is poor. E.g. if someone configures an unsupported hash algorithm, the interceptor fails to create an appropriate LDAP error.
- If a multivalued password attribute is used, the interceptor will simply ignore that fact (does not apply to userPassword as of RFC 2256).
-
-## Further reading
-
-Learn more about interceptors in ApacheDS Architecture Documentation, check out the source code of some implementations of the Interceptor interface, and/or read the javadoc comments.
\ No newline at end of file
diff --git a/content/apacheds/advanced-ug/7-embedding-apacheds.mdtext b/content/apacheds/advanced-ug/7-embedding-apacheds.mdtext
deleted file mode 100644
index 58a2247..0000000
--- a/content/apacheds/advanced-ug/7-embedding-apacheds.mdtext
+++ /dev/null
@@ -1,155 +0,0 @@
-Title: 7 - Embedding ApacheDS in Java
-NavPrev: 6-implementing-interceptor.html
-NavPrevText: 6 - Implementing a simple custom Interceptor for ApacheDS
-NavNext: 8-operational-attributes.html
-NavNextText: 8 - Operational Attributes
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7 - Embedding ApacheDS in Java
-
-## Using ApacheDS for unit tests
-The idea is to use ADS as an embedded server for Ldap junit tests.
-We will build an environment in which it will be convenient to test
-Ldap applications.
-
-We also want to avoid launching the server for every test, as it's
-an expensive operation. We have built ApacheDS so that you can start
-a server, inject some data, launch a test, then revert the data and
-go on to another test. At the end of the tests, the server is stopped.
-
-### Prerequicites
-We will assume you have **Maven** project and using **JUNIT** for testing
-
-### First steps
-#### Maven
-You need to add following dependency to your `pom.xml`:
-
- <dependency>
- <groupId>org.apache.directory.server</groupId>
- <artifactId>apacheds-test-framework</artifactId>
- <version>2.0.0.AM25</version>
- <scope>test</scope>
- </dependency>
-
-Please NOTE: you need to exclude `org.apache.directory.api:api-ldap-schema-data`
-artifact from above dependency in case your project uses `org.apache.directory.api:api-all`
-
-#### Java
-Maven set-up was easy enough, let's create our first unit test:
-
-##### Resources
-Lets describe your LDAP structure in external LDIF file
-
-Create file `src/test/resources/users.ldif` with following text:
-
- version: 1
- dn: dc=myorg,dc=com
- objectClass: domain
- objectClass: top
- dc: myorg
-
- dn: ou=Users,dc=myorg,dc=com
- objectClass: organizationalUnit
- objectClass: top
- ou: Users
-
- dn: ou=Groups,dc=myorg,dc=com
- objectClass: organizationalUnit
- objectClass: top
- ou: Groups
-
- dn: cn=Test1 Ldap,ou=Users,dc=myorg,dc=com
- objectClass: inetOrgPerson
- objectClass: organizationalPerson
- objectClass: person
- objectClass: top
- cn: Test1 Ldap
- sn: Ldap
- uid: ldaptest1
- userPassword: 12345
-
-
-##### Basic test
-
- import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
- import org.apache.directory.server.core.integ.FrameworkRunner;
- import org.apache.directory.server.core.annotations.CreateDS;
- import org.apache.directory.server.core.annotations.CreatePartition;
- import org.apache.directory.server.annotations.CreateLdapServer;
- import org.apache.directory.server.annotations.CreateTransport;
- import org.apache.directory.server.core.annotations.ApplyLdifFiles;
- import org.junit.runner.RunWith;
- import org.junit.Test;
-
- @RunWith(FrameworkRunner.class)
- @CreateDS(name = "myDS",
- partitions = {
- @CreatePartition(name = "test", suffix = "dc=myorg,dc=com")
- })
- @CreateLdapServer(transports = { @CreateTransport(protocol = "LDAP", address = "localhost")})
- @ApplyLdifFiles({"users.ldif"})
- public class TestLdap extends AbstractLdapTestUnit {
- @Test
- public void test() {
- //do whatever you need with `ldapServer`
- }
- }
-
-
-As a result you can access running ApacheDS server at `ldap://localhost:<random port>`
-inside your test, or access server internals via `static ldapServer`.
-
-##### Advanced usage
-Often you need to add LDAP unit tests to already created tests, in this case you might
-not be allowed to `extend AbstractLdapTestUnit` and/or to `@RunWith(FrameworkRunner.class)`
-In this case you can use `@ClassRule`.
-Here is the example:
-
- import org.apache.directory.server.core.annotations.CreateDS;
- import org.apache.directory.server.core.annotations.CreatePartition;
- import org.apache.directory.server.annotations.CreateLdapServer;
- import org.apache.directory.server.annotations.CreateTransport;
- import org.apache.directory.server.core.annotations.ApplyLdifFiles;
- import org.apache.directory.server.core.integ.CreateLdapServerRule;
- import org.junit.ClassRule;
- import org.junit.Test;
-
- @CreateDS(name = "myDS",
- partitions = {
- @CreatePartition(name = "test", suffix = "dc=myorg,dc=com")
- })
- @CreateLdapServer(transports = { @CreateTransport(protocol = "LDAP", address = "localhost")})
- @ApplyLdifFiles({"users.ldif"})
- public class TestLdap {
- @ClassRule
- public static CreateLdapServerRule serverRule = new CreateLdapServerRule();
-
- @Test
- public void test() {
- //do whatever you need with `serverRule.getLdapServer()`
- }
- }
-
-
-As you can see the code if very much the same, the only difference: you are working with
-`serverRule.getLdapServer()` and not with `ldapServer`
-
-
-
diff --git a/content/apacheds/advanced-ug/8-operational-attributes.mdtext b/content/apacheds/advanced-ug/8-operational-attributes.mdtext
deleted file mode 100644
index 1eb5052..0000000
--- a/content/apacheds/advanced-ug/8-operational-attributes.mdtext
+++ /dev/null
@@ -1,174 +0,0 @@
-Title: 8 - Operational Attributes
-NavPrev: 7-embedding-apacheds.html
-NavPrevText: 7 - Embedding ApacheDS in Java
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 8 - Operational Attributes
-
-Operational attributes are attributes that are used internally by the server. They generally can't be modified by a user, although one can read them.
-
-In order to retrieve an operational attribute, you have to require it explicitely, or request all of them using the special attribute '+'.
-
-[RFC 4512](https://tools.ietf.org/html/rfc4512) defines four different flavors of **AttributeType** :
-
-* userApplications : User's attributes
-* directoryOperation : Server's attributes
-* dSAOperation : Server's attributes that have no meant in being distributed
-* distributedOperation : Server's attribute that are used in a distributed environment
-
-
-ApacheDS support a list of standard LDAP operational attributes, plus a few that are specific. Here are the supported operational attributes.
-
-## Global operational attributes
-
-Those operational attributes are stored in the **RootDSE**, and global to the server. They can't be modified by a user.
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| vendorName | DSA OPERATION | Standard | RFC3045: name of implementation vendor |
-| vendorVersion | DSA OPERATION | Standard | RFC3045: version of implementation |
-| entryTtl | DSA OPERATION | Standard | RFC2589: entry time-to-live |
-| dynamicSubtrees | DSA OPERATION | Standard | RFC2589: dynamic subtrees |
-| supportedFeatures | DSA OPERATION | Standard | RFC3674: features supported by the server |
-| supportedControl | DSA OPERATION | Standard | RFC2252: supported controls |
-| supportedSASLMechanisms | DSA OPERATION | Standard | RFC2252: supported SASL mechanisms |
-| supportedLDAPVersion | DSA OPERATION | Standard | RFC2252: supported LDAP versions |
-| namingContexts | DSA OPERATION | Standard | RFC2252: naming contexts |
-| altServer | DSA OPERATION | Standard | RFC2252: alternative servers |
-| supportedExtension | DSA OPERATION | Standard | RFC2252: supported extended operations |
-
-
-## Entry operational attributes
-
-Those are attributes related to an entry, carrying some additional information about it
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| createTimestamp | DIRECTORY OPERATION | Standard | RFC2252: time which object was created |
-| modifyTimestamp | DIRECTORY OPERATION | Standard | RFC2252: time which object was last modified |
-| creatorsName | DIRECTORY OPERATION | Standard | RFC2252: name of creator |
-| modifiersName | DIRECTORY OPERATION | Standard | RFC2252: name of last modifier |
-| hasSubordinates | DIRECTORY OPERATION | Standard | X.501: entry has children |
-| ref | DISTRIBUTED OPERATION | Standard | RFC3296: named reference - a labeledURI |
-| entryUUID | DIRECTORY OPERATION | ApacheDS | UUID of the entry |
-| entryDN | DIRECTORY OPERATION | ApacheDS | DN of the entry |
-| entryCSN | DIRECTORY OPERATION | ApacheDS | Change sequence number of the entry |
-| nbChildren | DIRECTORY OPERATION | ApacheDS | The number of children for this entry |
-| nbSubordinates | DIRECTORY OPERATION | ApacheDS | The number of subordinates for this entry |
-| entryParentId | DIRECTORY OPERATION | ApacheDS | Attribute holding the id of parent entry |
-
-
-
-## Schema related operational attributes
-
-Those operational attributes are containing the schema elements handled by the server. They are stored in the **RootDSE**
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| ldapSyntaxes | DIRECTORY OPERATION | Standard | RFC2252: LDAP syntaxes |
-| subschemaSubentry | DIRECTORY OPERATION | Standard | RFC2252: name of controlling subschema entry |
-| dITStructureRules | DIRECTORY OPERATION | Standard | RFC2252: DIT structure rules |
-| dITContentRules | DIRECTORY OPERATION | Standard | RFC2252: DIT content rules |
-| matchingRules | DIRECTORY OPERATION | Standard | RFC2252: matching rules |
-| attributeTypes | DIRECTORY OPERATION | Standard | RFC2252: attribute types |
-| objectClasses | DIRECTORY OPERATION | Standard | RFC2252: object classes |
-| nameForms | DIRECTORY OPERATION | Standard | RFC2252: Name Forms |
-| matchingRuleUse | DIRECTORY OPERATION | Standard | RFC2252: matching rule uses |
-| structuralObjectClass | DIRECTORY OPERATION | Standard | X.500(93): structural object class of entry |
-| comparators | DIRECTORY OPERATION | ApacheDS | A multivalued comparator description attribute |
-| normalizers | DIRECTORY OPERATION | ApacheDS | A multivalued normalizer description attribute |
-| syntaxCheckers | DIRECTORY OPERATION | ApacheDS | A multivalued syntaxCheckers description attribute |
-| schemaModifyTimestamp | DIRECTORY OPERATION | ApacheDS | Time which schema was modified |
-| schemaModifiersName | DIRECTORY OPERATION | ApacheDS | The DN of the modifier of the schema |
-
-
-## Collective Attributes operational attributes
-
-Those are attributes related to collective attributes.
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| collectiveAttributeSubentries | DIRECTORY OPERATION | Standard | RFC3671: identifies all collective attribute subentries that affect the entry |
-| collectiveExclusions | DIRECTORY OPERATION | Standard | RFC3671: RFC3671: allows particular collective attributes to be excluded from an entry |
-
-
-## Administrative Model Attributes
-
-Those are attributes related to the Administrative Model management
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| administrativeRole | DIRECTORY OPERATION | Standard | RFC3672: indicate that the associated administrative area is concerned withone or more administrative roles |
-| subtreeSpecification | DIRECTORY OPERATION | Standard | RFC3672: defines a collection of entries within an administrative area |
-| prescriptiveACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a set of entries |
-| entryACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a single entry |
-| subentryACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a single subentry |
-| autonomousAreaSubentry | DIRECTORY OPERATION | ApacheDS | Used to track a subentry associated with an autonomousArea |
-| accessControlSubentries | DIRECTORY OPERATION | ApacheDS | Used to track a subentry associated with access control areas |
-
-
-## Replication related operational attributes
-
-Those attributes are used in a replication context.
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| contextCSN | DIRECTORY OPERATION | ApacheDS | The largest committed CSN of a context |
-| entryDeleted | DIRECTORY OPERATION | ApacheDS | Whether or not an entry has been deleted. (Not anymore used) |
-
-
-## Index related operational attributes
-
-Those operational attributes are used to define the various system predefined indexes
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| apachePresence | DSA OPERATION | ApacheDS | Index attribute used to track the existence of attributes |
-| apacheOneLevel | DSA OPERATION | ApacheDS | Index attribute used to track one level searches |
-| apacheOneAlias | DSA OPERATION | ApacheDS | Index attribute used to track single level aliases |
-| apacheSubAlias | DSA OPERATION | ApacheDS | Index attribute used to track sub level aliases |
-| apacheAlias | DSA OPERATION | ApacheDS | Index attribute used to track aliases |
-| apacheSubLevel | DSA OPERATION | ApacheDS | Index attribute used to track sub level searches |
-| apacheRdn | DSA OPERATION | ApacheDS | Index attribute RDN with values both user provided and normalized based on schema |
-
-
-## Trigger interceptor Model Attributes
-
-Those are attributes used in the Trigger Interceptor
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| prescriptiveTriggerSpecification | DIRECTORY OPERATION | ApacheDS | Trigger specification that applies to a set of entries |
-| entryTriggerSpecification | DIRECTORY OPERATION | ApacheDS | Trigger specification that applies to a single entry |
-| triggerExecutionSubentries | DIRECTORY OPERATION | ApacheDS | Used to track subentries associated with a trigger area which an entry falls under |
-
-
-## ChangeLog related operational attributes
-
-Those operational attributes are meant to be used by teh **ChangeLog** interceptor. They are not supposed to be distributed, and they can't be modified by a user.
-
-| Attribute name | Type | Category | Description |
-|---|---|---|---|
-| revisions | DSA OPERATION | ApacheDS | Revision numbers used in change log |
-| changeTime | DSA OPERATION | ApacheDS | Represents the time when the change event occurred |
-| changeType | DSA OPERATION | ApacheDS | Type of change operation |
-| eventId | DSA OPERATION | ApacheDS | The unique sequential id for the event (a.k.a revision number) |
-| committer | DSA OPERATION | ApacheDS | The principal committing the change |
-| changeLogContext | DSA OPERATION | ApacheDS | Tells about the changelog context suffix |
diff --git a/content/apacheds/advanced-ug/9-apacheds-internals.mdtext b/content/apacheds/advanced-ug/9-apacheds-internals.mdtext
deleted file mode 100644
index 9027b39..0000000
--- a/content/apacheds/advanced-ug/9-apacheds-internals.mdtext
+++ /dev/null
@@ -1,134 +0,0 @@
-Title: 9 - ApacheDS internals
-NavPrev:
-NavPrevText:
-NavUp: ../advanced-user-guide.html
-NavUpText: Advanced User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 9 - ApacheDS internals
-
-## Startup
-
-The server is started by calling the *UberJarMain* class, with the directory containing the server's layout. The layout is the list of directory where we will store various server's files :
-
-* The instance directory, ie the base directory for the server : $BASE
-* The configuration directory : _${BASE}/conf/_
-* The log directory : _${BASE}/log/_
-* The partition directory, which will contain the data : _${BASE}/partitions/_
-* The run directory, which will contain the server PID : _${BASE}/run/_
-* The cache directory, containing the cache files : _${BASE}/cache/_
-
-All those directories will be created if they do not exist already. It's also possible to provide specific directories by setting some environment variables : _apacheds.log.dir_ for the logs directory, and _apacheds.run.dir_ for the run directory.
-
-The server will also loog for some configuration files :
-
-* The wrapper configuration : _${BASE}/conf/wrapper.conf_
-* The log configuration file : _${BASE}/conf/log4j.properties_
-
-Once those elements configured, we start an instance of _ApacheDsService_, which is responsible for initializing the service, and the various configured servers :
-
- ...
- // Creating ApacheDS service
- service = new ApacheDsService();
-
- service.start( layout );
- ...
-
-
-We first create the cache service, which will be used all over the server. This cache can be configured by creating and tuning the _${BASE}/conf/directory-cacheservice.xml_ file, otherwise we use a default configuration.
-
-The next step is to initialize the _SchemaManager_ which, again, will be used by the whole service. This will read the existing schema, or extract the default schema, and load it in an instance of the _SchemaManager_ class. The schema is extracted on disk as LDIF files, into the _${BASE}/partitions/schema_ directory.
-
-We also initialize the _DnFactory_ class, which is used to cache created DNs. This factory has a cache. Every _Dn_ created using this factory will be schema aware, as we passed a _SchemaManager_ instance to the factory.
-
-Then we create the schema partition, that will manage access and updates done on the schema.
-
-The configuration is now initialized. If it wasn't existing, we extract a default one. We create a configuration partition, which will be stored on _${BASE}/conf/ou=config_.
-The configuration is in LDIF format, it is read from disk, and a in-memory representation is created.
-
-The _DirectoryService_ can now be created and initialized.
-
-### DirectoryService initialization
-
-The _DirectoryService_ is the core of the system. It manages the access to the data though the interceptors chain, offer the needed services to all the servers that need it, and manage the sessions.
-
-LdapApiService
---------------
-
-Load the default controls
-Load the default extended operations
-Create the LDAP decoder and encoder (should be done when we start the LDAP server)
-Create the OperationManager
-Create the changeLog
-Create the Journal
-Create the default interceptors (ordered) :
-
- NormalizationInterceptor
- AuthenticationInterceptor
- create the authenticators
- initialize the passwordPolicies
- ReferralInterceptor
- AciAuthorizationInterceptor
- DefaultAuthorizationInterceptor
- AdministrativePointInterceptor
- ExceptionInterceptor
- SchemaInterceptor
- OperationalAttributeInterceptor
- CollectiveAttributeInterceptor
- SubentryInterceptor
- EventInterceptor
- TriggerInterceptor
- ChangeLogInterceptor
- JournalInterceptor
-
-Create the partitions :
-
- system
- example (or whatever user partition is defined)
-
-Create the changeLog
-Create the Journal
-Add the Schema partition
-Add the config partition
-
-and startup the directoryService, which will create a shutdown hook, and initialize the various compnents (cachService, schemaPartition, partitionNexus which loads the rootDSE, the system partition, interceptors, changeLog, journal and the vatious user's partitions)
-
-### Servers initialization
-
-It's time to initialize the servers : LDAP (if requested), NTP (if requested), Kerberos (if requested), HTTP (if requested). The DNS and DHCP server are not supported at the moment. As we can see, we can start many different servers, which will rely - or not - on the DirectoryService.
-
-#### LDAP server
-
-We first load a KeyStore taht will be used to manage certificates, then create the LDAP protocol handles - the handlers are responsible for processing each LDAP operation, like BIND, ADD, etc... -. We also register the extended operations, the SASL mechanisms, start the replication producer if needed, and starts the needed transports - we may have two : the default transport and the encrypted transport -. At the end, we initialize the replication consumer if needed.
-
-#### NTP server
-
-The NTP server registers the protocol handler, and start the associated transport (UDP, port 123)
-
-
-#### Kerberos server
-To be completed
-
-
-#### Http server
-
-This is mainly use as a mean to manage the LDAP server through a HTTP layer.
-
-### Last steps
-
-We register an event listener to manage dynamic configuration updates, start the shutdown hook, and we are done !
diff --git a/content/apacheds/advanced-user-guide.mdtext b/content/apacheds/advanced-user-guide.mdtext
deleted file mode 100644
index 808fcbc..0000000
--- a/content/apacheds/advanced-user-guide.mdtext
+++ /dev/null
@@ -1,93 +0,0 @@
-Title: Advanced User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS 2.0 Advanced User Guide
-This guide get you a deep further into ApacheDS 2.0. Once you have installed the server, and undestood how it works, this is the guide to read to get a complete understanding on what it offers, and how to use it at full steam.
-
-# Table of content
-
-* [0 - Community](advanced-ug/0-community.html)
- * [0.1. Reporting Bugs](advanced-ug/0.1-reporting-bugs.html)
- * [0.2. Building trunks](advanced-ug/0.2-building-trunks.html)
- * [0.3. Contributing](advanced-ug/0.3-contributing.html)
-* [1. Architecture](advanced-ug/1-architecture.html)
- * [1.1 - Architectural Overview](advanced-ug/1.1-architecture-overview.html)
- * [1.2 - Network Layer](advanced-ug/1.2-network.html)
- * [1.3 - Directory Service](advanced-ug/1.3-directory-service.html)
- * [1.4 - Interceptors](advanced-ug/1.4-interceptors.html)
- * [1.5 - Backend](advanced-ug/1.5-backend.html)
-* [2. Server Configuration](advanced-ug/2-server-config.html)
- * [2.1 - Configuration Description](advanced-ug/2.1-config-description.html)
- * [2.2 - Instance Layout](advanced-ug/2.2-instance-layout.html)
- * ![debian](advanced-ug/images/debian.png)[2.2.1 - Debian instance Layout](advanced-ug/2.2.1-debian-instance-layout.html)
- * ![RPM](advanced-ug/images/rpm.png)[2.2.2 - RPM instance Layout](advanced-ug/2.2.2-rpm-instance-layout.html)
- * ![MacOSX](advanced-ug/images/mac.png)[2.2.3 - MacOSX instance Layout](advanced-ug/2.2.3-macosx-instance-layout.html)
- * ![Windows](advanced-ug/images/windows.png)[2.2.4 - Windows instance Layout](advanced-ug/2.2.4-windows-instance-layout.html)
- * [2.2.5 - Generic instance Layout](advanced-ug/2.2.5-generic-instance-layout.html)
-* [3. Administrative Model](advanced-ug/3-admin-model.html)
- * [3.1 - Administration Point](advanced-ug/3.1-administrative-points.html)
- * [3.2 - Operations on an Administrative Point](3.2-operations-on-an-administrativepoint.html)
-* [4 - Security](advanced-ug/4-authentication-and-authorization.html)
- * [4.1 - Authentication](advanced-ug/4.1-authentication.html)
- * [4.1.1 - Simple authentication](advanced-ug/4.1.1-simple-authn.html)
- * [4.1.1.1 - Anonymous Authentication](advanced-ug/4.1.1.1-anonymous-authn.html)
- * [4.1.1.2 - Name/Password Authentication](advanced-ug/4.1.1.2-name-password-authn.html)
- * [4.1.1.2 - Unauthenticated Authentication](advanced-ug/4.1.1.2-unauthenticated-authn.html)
- * [4.1.2 - SASL authentication](advanced-ug/4.1.2-sasl-authn.html)
- * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
- * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
- * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
- * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
- * [4.1.2.5 - SASL EXTERNAL Authentication](advanced-ug/4.1.2.5-sasl-external-authn.html)
- * [4.1.2.6 - SASL NTLM Authentication](advanced-ug/4.1.2.6-sasl-ntlm-authn.html)
- * [4.1.3 - Kerberos authentication](advanced-ug/4.1.3-kerberos-authn.html)
- * [4.1.4 - Client authentication through certificates](advanced-ug/4.1.4-certificate-authn.html)
- * [4.2 - Authorization](advanced-ug/4.2-authorization.html)
- * [4.2.1 - Introduction](advanced-ug/4.2.1-introduction.html)
- * [4.2.2 - Definitions](advanced-ug/4.2.2-definitions.html)
- * [4.2.3 - Enabling Access Control](advanced-ug/4.2.3-enabling-access-control.html)
- * [4.2.4 - ACI Types](advanced-ug/4.2.4-aci-types.html)
- * [4.2.4.1 - Entry ACI](advanced-ug/4.2.4.1-entryaci.html)
- * [4.2.4.2 - Prescriptive ACI](advanced-ug/4.2.4.2-prescriptiveaci.html)
- * [4.2.4.3 - Subentry ACI](advanced-ug/4.2.4.3-subentryaci.html)
- * [4.2.5 - ACI Elements](advanced-ug/4.2.5-aci-elements.html)
- * [4.2.5.1 - User Classes](advanced-ug/4.2.5.1-userclasses.html)
- * [4.2.5.2 - Protected Items](advanced-ug/4.2.5.2-protecteditems.html)
- * [4.2.5.3 - Permissions](advanced-ug/4.2.5.3-permissions.html)
- * [4.2.5.4 - Subtrees](advanced-ug/4.2.5.4-subtrees.html)
- * [4.2.6 - The ACDF Engine](advanced-ug/4.2.6-the-acdf-engine.html)
- * [4.2.6.1 - How it works](advanced-ug/4.2.6.1-how-it-works.html)
- * [4.2.6.2 - Selections](advanced-ug/4.2.6.2-selections.html)
- * [4.2.6.3 - Constraints](advanced-ug/4.2.6.3-constraints.html)
- * [4.2.6.4 - Priority](advanced-ug/4.2.6.4-priority.html)
- * [4.2.7 - Using ACIs Trail](advanced-ug/4.2.7-using-acis-trail.html)
- * [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
- * [4.2.8 - ACI Administration](advanced-ug/4.2.8-aci-administration.html)
- * [4.2.9 - Migration from other LDAP Servers](advanced-ug/4.2.9-migration-from-other-ldap-servers.html)
- * [4.2.10 - ACI grammar](advanced-ug/4.2.10-aci-grammar.html)
- * [4.2.11 - Links and References](advanced-ug/4.2.11-links-and-references.html)
- * [4.3 Password Policy](advanced-ug/4.3-password-policy.html)
-* [5 - Administration](advanced-ug/5-administration.html)
- * [5.1 - Layout](advanced-ug/5.1-layout.html)
- * [5.2 - Starting and stopping](advanced-ug/5.2-start-stop.html)
- * [5.3 - Logs](advanced-ug/5.3-logs.html)
- * [5.4 - Replication](advanced-ug/5.4-replication.html)
- * [5.5 - Cache](5.5-cache.html)
-* [6 - Implementing a simple custom Interceptor for ApacheDS](advanced-ug/6-implementing-interceptor.html)
-* [7 - Embedding ApacheDS in Java](advanced-ug/7-embedding-apacheds.html)
-* [8 - Operational Attributes](advanced-ug/8-operational-attributes.html)
diff --git a/content/apacheds/basic-ug/1-how-to-begin.mdtext b/content/apacheds/basic-ug/1-how-to-begin.mdtext
deleted file mode 100644
index 408e3c8..0000000
--- a/content/apacheds/basic-ug/1-how-to-begin.mdtext
+++ /dev/null
@@ -1,40 +0,0 @@
-Title: 1 - How To Begin
-NavUp: ../basic-user-guide.html
-NavUpText: Basic User Guide
-NavNext: 1.1-what-apacheds-is.html
-NavNextText: 1.1 - What Apache DS is
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - How to begin
-This chapter helps you to set up a server, with the minimal configuration options being explained. That should be enough to get a running server.
-
-This user guide is **not** intended to be a **LDAP** guide : there are some excellent tutorials or books, we won't try to challenge them !
-
-## Table of content
-
-* [1.1 - What Apache Directory Server is](1.1-what-apacheds-is.html)
-* [1.2 - Some Background. Directories, directory services and LDAP](1.2-some-background.html)
-* [1.3 - Installing and starting the server](1.3-installing-and-starting.html)
-* [1.4 - Basic configuration tasks](1.4-basic-configuration-tasks.html)
- * [1.4.1 - Changing the server port for LDAP](1.4.1-changing-server-port.html)
- * [1.4.2 - Changing the admin password](1.4.2-changing-admin-password.html)
- * [1.4.3 - Adding your own partition](1.4.3-adding-partition.html)
- * [1.4.4 - Configure logging](1.4.4-configure-logging.html)
- * [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)
-* [1.5 - About the sample configurations and sample directory data](1.5-sample-configuration.html)
-* [1.6 - Backup/Restore](1.6-backup-restore.html)
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/1.1-what-apacheds-is.mdtext b/content/apacheds/basic-ug/1.1-what-apacheds-is.mdtext
deleted file mode 100644
index 61c552e..0000000
--- a/content/apacheds/basic-ug/1.1-what-apacheds-is.mdtext
+++ /dev/null
@@ -1,60 +0,0 @@
-Title: 1.1 - What Apache DS is
-NavPrev: 1-how-to-begin.html
-NavPrevText: 1 - How to begin
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 1.2-some-background.html
-NavNextText: 1.2 - Some Background. Directories, directory services and LDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1 - What Apache Directory Server is
-
-This section describes what Apache Directory Server (abbreviated ApacheDS) is, and where it comes from.
-
-[TOC]
-
-## System vision
-
-ApacheDS 2.0 is an embeddable, extendable, standards compliant, modern LDAP server written entirely in Java, and available under the Apache Software License. Other network protocols like Kerberos and NTP are supported as well (and even more may be added), but basically (and especially for this introduction guide) ApacheDS is an LDAP server.
-
-_Embeddable_ means that it is possible to configure, start and stop ApacheDS from other Java components, especially application servers, and the server runs within the same VM. The solution has already been successfully embedded in Apache Geronimo, JBoss, and others. The fact that the server is embeddable is quite interesting, nevertheless you also have the deployment option to run the server standalone, for instance as a Windows service. Perhaps you know this situation from other LDAP servers -- open source (like OpenLDAP) as well as commercial ones (like Sun Java System Directory Server). This guide is dedicated to people that are new to ApacheDS. The guide concentrates on installing, configuring and running ApacheDS in a standalone configuration.
-
-_Extendable_ means that the modern architecture of the solution provides many extension points. Write your own partitions to store directory data, interceptors to add functionality, etc. by implementing certain interfaces and plugging them in using Spring.
-
-_Standard compliant_ means that ApacheDS 2.0 adheres to all RFCs relevant to LDAPv3. Please note that version 1.0 of the server has been successfully certified by the Open Group in September 2006 ("LDAP certified"). Thus LDAP clients may rightly expect that ApacheDS behaves like they expect.
-
-_Modern_ means that ApacheDS aims modernize the LDAP territory, as well as it favors standards compliance. New rich integration tier constructs like LDAP Stored Procedures and Triggers are being built on top of existing standards.
-
-_Entirely written in Java_ means that the software compiles and runs on a huge number of hardware and software platforms. Native installers are available for Windows, MacOS and Solaris (both SPARC and intel platform), but in fact the set of possible targets is by far more extensive.
-
-### Architectural overview
-
-![50k ft architecture](images/50k-ft-architecture.png)
-
-## Origin and Motives
-
-Through his experiences with enterprise LDAP directories, Alex Karasulu, realized there is a great need for rich integration tier constructs like LDAP Stored Procedures, Triggers, and Views. In 2001 he set out to alter the OpenLDAP server to offer support for these useful facilities which are present in relational databases but missing in the LDAP world. Alex's attempts failed due to the complexity of the software which was brittle, and difficult to manage. As C code ported to several platforms, the OpenLDAP code base, had several #IFDEF conditional pre-compiler directives that made it difficult to change the code. At this point Alex thought about implementing a new LDAP server in pure Java. Thanks to NIO this was finally possible using the 1.4 JDK.
-
-In October 2002 Alex Karasulu founded and registered the [LDAPd](http://sourceforge.net/projects/ldapd) project at SourceForge.net. LDAPd was a a pure Java embeddable LDAP v3 protocol daemon built on the Avalon framework. Alex donated the code to the Apache Software Foundation and the code entered the [Apache Incubator](http://incubator.apache.org/) in October 2003. One year later in October of 2004, the Apache Directory Top Level Project (TLP) was formed after a successful incubation with the now called Apache Directory Server as its flagship product. After 4 years of development, in October 2006, Apache Directory Server 1.0 was released as an Open Group certified LDAPv3 protocol server. The certification has been renewed in September 2007.
-
-Having a standards compliant and modern LDAP server, Apache Directory Team is now working on Identity and Access Management solutions leveraging the directory technology.
-
-## Resources
-
-* [Proposal for an Apache Directory Project](../../original-project-proposal.html) the original proposal for incubation, September 2003.
-* [Architecting the Modern LDAP Renaissance: The Apache Directory Vision](../../vision.html), Paper for 1st International Conference on LDAP, September 2007.
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/1.2-some-background.mdtext b/content/apacheds/basic-ug/1.2-some-background.mdtext
deleted file mode 100644
index 03672d1..0000000
--- a/content/apacheds/basic-ug/1.2-some-background.mdtext
+++ /dev/null
@@ -1,114 +0,0 @@
-Title: 1.2 - Some Background. Directories, directory services and LDAP
-NavPrev: 1.1-what-apacheds-is.html
-NavPrevText: 1.1 - What Apache Directory Server is
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 1.3-installing-and-starting.html
-NavNextText: 1.3 - Installing and starting the server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2 - Some Background. Directories, directory services and LDAP
-
-This section provides a brief overview about directories, directory services and LDAP. Furthermore you find links to different resources (books, online resources, ...), which may act as introduction to the topic. If you are already an LDAP expert, you'll probably skip this section.
-
-[TOC]
-
-## Directories and directory services
-
-Generally speaking, a directory is a collection or list of data. Real world examples are telephone books (public or within organizations), church/land registers and listings of works (e.g. the Koechel-index, which lists all compositions of Mozart). All these examples have the purpose to preserve information and to make it available on demand to whom it may concern.
-
-Within information technology the term *directory* is used for a special kind of data storage. It allows the structured storage and efficient retrieval of objects which are often derived from the real world (e.g. persons, IT equipment). Characteristic:
-* all data is stored in so called *entries*
-* the set of entries within a directory forms a tree (hierarchical database)
-
-A *directory service* is a solution which offers users access to the information stored in the directory. A directory assistance (call center agent) is a good real world example for such a service. Within information technologies, such services are normally provided by software components. Directory services provide access to the content of a directory via a well-defined interface. If a network is used, an appropriate protocol has to be defined. LDAP (see below) is such a protocol.
-
-The real world examples mentioned above may be stored in such a directory, although other types of storage systems can be more appropriate (this depends on circumstance/requirements). At first sight directories compete thereby as data storage with the established relational data bases. However in the most large enterprises and organizations both directory services and relational databases are actually used. Read how Vikas Mahajan describes directories and databases as complementary, not competitive, solutions in his excellent article ["Should I Use a Directory, a Database, or Both?"](http://support.novell.com/techcenter/articles/ana20011101.html).
-
-## LDAP -- the Lightweight Directory Access Protocol
-
-### What is it? Some history.
-
-The comprehensive standard *X.500*, finalized in 1988, builds the foundation for many of today's directory solutions. Within this standard, the client accesses the server via the Directory Access Protocol (*DAP*), which is OSI protocol stack based. With the Internet boom in the nineties, the accessibility of directories via TCP/IP became more and more important. Hence a TCP/IP-based access method, which in functionality was a subset of DAP, was standardized in 1993: the *Lightweight Directory Access Protocol (LDAP)*. First LDAP implementations were gateway solutions, they mediated between LDAP clients and X.500 servers. In 1995 the University of Michigan presented the first native LDAP server; in the meantime the work is continued by the [OpenLDAP](http://www.openldap.org/) project. 1996 Netscape followed with the first commercial LDAP server (Netscape Directory Server, foundation of several later LDAP servers). Other examples (among many others) include [Microsoft Active Directory](http://www.microsoft.com/ad/) and [Novell eDirectory](http://www.novell.com/products/edirectory/). The figure below shows the development of directory protocols from X.500/DAP to LDAP.
-
-![From X500 to LDAP](images/fromX500toLDAP.png)
-
-### Information model primer
-
-Within the information model of LDAP, data is stored in entries, which build up a hierarchical, tree like structure. Each entry has a unique name (*DN*, *Distinguished Name*), which depicts its position within the tree. An entry consists of key/value pairs, the *attributes*. Some attributes may occur more than once within an entry (single or multi valued, e.g. a person can have more than one telephone number). So called *object classes* define, which attributes an entry may have, and which of them are required. The classes build up a hierarchy with *top* as root; there is a parallelism to the object oriented world. top forces only the attribute objectclass, which assigns an entry its object classes. A *schema* consists object classes and attribute types, and therefore defines, what kind of entries can be stored within the directory. Directory servers ship a schema out-of-the-box, often with elements standardized by RFCs. In addition, most directory solutions allow you to define custom object classes and attributes. But in practice, the pre-defined elements are used. Sometimes they get extended according to special requirements.
-
-### Common applications of LDAP based directories
-
-LDAP operations include entry creation, modification, deletion and search. As a general rule, LDAP directories are optimized for read and search operations, at the cost of write performance. Data, which will be modified often, therefore better suits in a relational database, which offers better support for transactions and referential integrity as well. Directories are rather used if comparatively stable data has to be provided centrally.
-Common examples are network resources (printers, services) and user data (including credentials and rights for the resources). As a notable feature, many directory products offer replicas, which permit better access times and higher availability especially in geographically dispersed organizations. Not for nothing, the most common LDAP application is the enterprise phone book. That even Microsoft Outlook may be an LDAP client in this case - most average users probably don't know.
-
-
-### Examples of software components which support LDAP
-
-![LDAP tools](images/ldap-tools.png)
-
-Very different types of software products may act as LDAP clients, consuming data for authentication, authorization or data presentation etc.
-
-* E-Mail clients (e.g. Mozilla Thunderbird)
-* LDAP tools (e.g. Apache Directory Studio)
-* Web servers (e.g. Apache Tomcat, Apache HTTP Server)
-* Mail servers (e.g. Apache James)
-* ...
-
-Configuration details for several of these programs in conjunction with ApacheDS are described in later sections.
-
-## LDAP resources
-
-### Books
-
-There are several good LDAP books available. Here are two examples which provide sample chapters on their homepages.
-
-#### Understanding and Deploying LDAP Directory Services
-
-![cover](images/cover_howes_100.gif)
-
-Understanding and Deploying LDAP Directory Services (2nd Edition) <br/>
-by Timothy A. Howes, Mark C. Smith, Gordon S. Good, Tim Howes <br/>
-Addison-Wesley Professional, 2nd Edition 2003 <br/>
-ISBN: 0-672323-16-8 <br/>
-
-[Book's Homepage (Howes)](http://awprofessional.com/title/0672323168)
-
-#### LDAP fuer Java-Entwickler
-
-![cover](images/cover_zoerner_100.gif)
-
-LDAP fuer Java-Entwickler -- Einstieg und Integration. ![DE](images/de.png) <br/>
-von Stefan Zoerner <br/>
-Software und Support Verlag, 3. aktualisierte Auflage 2007 <br/>
-ISBN: 978-3-939084-07-5 <br/>
-
-[Webseite zum Buch (Zoerner)](http://www.entwickler-press.de/buecher/ldap/)
-
-### Articles, forums, blogs and other online resources
-
-#### Blogs
-
-* [cn=Directory Manager - All about Directory Server](http://blogs.sun.com/roller/page/DirectoryManager), Sun Blog
-
-#### Articles and other online resources
-
-* [Understanding LDAP - Design and Implementation](http://www.redbooks.ibm.com/abstracts/SG244986.html?Open), IBM RedBook, July 2006
-* [Demystifying LDAP](http://www.oreillynet.com/pub/a/sysadmin/2006/07/27/demystifying-ldap.html) by Brian K. Jones, O'Reilly Network
-* [LDAP verstehen mit linx](http://www.mitlinx.de/ldap/), by Petra Haberer ![DE](images/de.png)
-
diff --git a/content/apacheds/basic-ug/1.3-installing-and-starting.mdtext b/content/apacheds/basic-ug/1.3-installing-and-starting.mdtext
deleted file mode 100644
index 46ad773..0000000
--- a/content/apacheds/basic-ug/1.3-installing-and-starting.mdtext
+++ /dev/null
@@ -1,124 +0,0 @@
-Title: 1.3 - Installing and starting the server
-NavPrev: 1.2-some-background.html
-NavPrevText: 1.2 - Some Background. Directories, directory services and LDAP
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 1.4-basic-configuration-tasks.html
-NavNextText: 1.4 - Basic configuration tasks
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.3 - Installing and starting the server
-
-This section describes how ApacheDS can be installed and started on different platforms.
-
-[TOC]
-
-## Prerequisites
-
-* **Java 7.0**. We recommend using [Oracle's JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html).
-
-You can check your java installation with:
-
- java -version
-
-this should response something like:
-
- java version "1.7.0_45"
- Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
- Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
-
-* **384 MB RAM** for the JVM. That's the default setting, how to change that is described [here|1.4. Basic configuration tasks#MemoryAllocation]
-
-
-## Download a server installer
-
-We provide native installers for several platforms:
-
-* Windows (exe)
-* Mac OS X (dmg)
-* Debian package (deb)
-* RPM package (rpm)
-* Linux Binary (bin)
-
-Additional we provide an zip and tar.gz archive suitable for any platform.
-
-You can download them from [here](https://directory.apache.org/apacheds/downloads.html).
-
-An option for people familiar with tools like Subversion and Maven is to built the server from the sources on their own. This is described [here](../advanced-ug/0.2-building-trunks.html).
-
-
-# Installation on Windows
-
-Installing can be easily done using the Windows installer. Its interface and functionality is similar to other wizard based installers.
-
-<CENTER>
-![Windows Installer](images/Windows_Installer.png)
-</CENTER>
-
-To install the ApacheDS as Windows service you need *Administrator* privileges.
-
-### Starting and stopping the server
-
-The server can be started and stopped with Windows Services manager (*Control Panel > Administrative Tools > Services*). You must be admin to do this.
-
-From there, you can easily start, stop and restart Apache DS.
-
-## Installation on Mac OS X
-
-To install Apache DS on Mac OS X, simply open the downloaded DMG file and then the "Apache Directory Server Installer.pkg" in it.
-
-<CENTER>
-![MacOSX installer](images/MacOSX_Installer.png)
-</CENTER>
-
-From there, you will be guided to install Apache DS on your system.
-
-### Starting and stopping the server
-
-On Mac OS X, Apache DS is installed as a [launchd](http://developer.apple.com/macosx/launchd.html) service and is loaded at startup time (and upon successful installation).
-
-You can stop the server by unloading the launchd service with the following command line:
-
- sudo launchctl unload /Library/LaunchDaemons/org.apache.directory.server.plist
-
-You can start the server by loading the launchd service with the following command line:
-
- sudo launchctl load /Library/LaunchDaemons/org.apache.directory.server.plist
-
-If you want to disable the automatic startup of the server, just modify the plist file :
-
- <key>Disabled</key>
- <false/>
-
-should be replaced by
-
- <key>Disabled</key>
- <true/>
-
-Once the server has been installed, you can start it with :
-
- sudo launchctl start org.apache.directory.server
-
-and stop it with :
-
- sudo launchctl stop org.apache.directory.server
-
-
-## Installation on Linux
-
-The installation for different installers is described on the [Apache Directory Server Downloads](https://directory.apache.org/apacheds/downloads.html) page.
diff --git a/content/apacheds/basic-ug/1.4-basic-configuration-tasks.mdtext b/content/apacheds/basic-ug/1.4-basic-configuration-tasks.mdtext
deleted file mode 100644
index d54fa20..0000000
--- a/content/apacheds/basic-ug/1.4-basic-configuration-tasks.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 1.4 - Basic configuration tasks
-NavPrev: 1.3-installing-and-starting.html
-NavPrevText: 1.3 - Installing and starting the server
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 1.4.1-changing-server-port.html
-NavNextText: 1.4.1 - Changing the server port for LDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4 - Basic configuration tasks
-In this chapter, we will explain how to configure some basic parameters in the server you just installed. We won't expose all the options in this _Basic User Guide_, you can check in the _Advanced User Guide_ for more options if needed.
-
-## Table of content
-
-* [1.4.1 - Changing the server port for LDAP](1.4.1-changing-server-port.html)
-* [1.4.2 - Changing the admin password](1.4.2-changing-admin-password.html)
-* [1.4.3 - Adding your own partition](1.4.3-adding-partition.html)
-* [1.4.4 - Configure logging](1.4.4-configure-logging.html)
-* [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)
-
diff --git a/content/apacheds/basic-ug/1.4.1-changing-server-port.mdtext b/content/apacheds/basic-ug/1.4.1-changing-server-port.mdtext
deleted file mode 100644
index c57cdee..0000000
--- a/content/apacheds/basic-ug/1.4.1-changing-server-port.mdtext
+++ /dev/null
@@ -1,133 +0,0 @@
-Title: 1.4.1 - Changing the server port for LDAP
-NavPrev: 1.4-basic-configuration-tasks.html
-NavPrevText: 1.4 - Basic configuration tasks
-NavUp: 1.4-basic-configuration-tasks.html
-NavUpText: 1.4 - Basic configuration tasks
-NavNext: 1.4.2-changing-admin-password.html
-NavNextText: 1.4.2 - Changing the admin password
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4.1 - Changing the server port for LDAP
-
-This section describes how to change to port for the LDAP protocol. There are two ways to do that : either you use the configuration plugin available in **Apache Directory Studio**, or you update the LDIF partition that contains the configuration.
-
-[TOC]
-
-## The task and how to accomplish it
-
-By default the LDAP server listens on port 10389 (unencrypted or StartTLS) and 10636 (SSL). It is quite common to run LDAP on 389, which is the well-known port for this protocol, but that requires the server to be started with a root user (or with sudo). Of course other options are imaginable as well. Changing the LDAP port is a good example for adjusting the existing Spring configuration as introduced in the last section.
-
-<DIV class="note" markdown="1">
-Due to traditional Unix security restrictions, ports less than 1024 were "trusted". Thus on a Unix-System, a non-root process must listen on a port greater than 1023.
-</DIV>
-
-
-Basically, there are two cases :
-* The server is not started
-* The server is started
-
-We will see how to change the port in those two cases.
-
-### Using Apache Directory Studio
-
-#### The server is started
-
-The best solution is to connect on the server using Studio, and to open it's configuration :
-
-<CENTER>
-![Studio port configuration](images/studio-port-config1.png)
-</CENTER>
-
-When you select this menu, you will get the main configuration screen, containing the port for LDAP and LDAPS :
-
-<CENTER>
-![Studio port configuration](images/studio-port-config2.png)
-</CENTER>
-
-
-Now, change the values of _port_ to your needs, then save the configuration. You have to restart the server afterwards in order to take this change into effect.
-
-#### The server is not started
-
-You can start it and update the configuration, of course. But if you want to configure the server when it's stopped, you will have to load the configuration file, which is on _.../instances/default/conf/config.ldif_, when the server has been installed using the default setting.
-
-Opening this file will open the exact same window :
-
-<CENTER>
-![Studio port configuration](images/studio-port-config2.png)
-</CENTER>
-
-You can update the _ports_ and save the file.
-
-<DIV class="warning" markdown="1">
- Note that you will requite write access on this file !
-</DIV>
-
-### Modifying the configuration LDIF partition
-
-All the **ApacheDS** configuration is stored as a LDIF file, and can be modified either using a text editor (although we don't consider this as a safe practice) or using a Modify request on a running server.
-
-<DIV class="info" markdown="1">
- Modifying the configuration on a running server will **not** change the listening port of the running server. You will have to relaunch the server in order to get this new configuration to be available.
-</DIV>
-
-
-The configuration is stored as a set of LDAP entries, so you can update one of them. In order to modify the entry containing the ports, you have first to find it, and second to send a valid modify request.
-
-All the **ApacheDS** configuration is stored under the _ou=config_ partition. The ports are stored in some entries under _DN: ldap,ou=transports,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config_ (obviously, dependning on your installation, this DN might change : the _ads-directoryServiceId_ may have a different name, so is the _ads-serverId_). In any case, the _ou=transports_ branch contains two entries :
-
-for LDAP :
-
- dn: ads-transportid=ldap,ou=transports,ads-serverId=ldapServer,ou=servers,ad
- s-directoryServiceId=default,ou=config
- ads-systemport: 10389
- ads-enabled: TRUE
- ads-transportnbthreads: 8
- ads-transportaddress: 0.0.0.0
- ads-transportid: ldap
- objectclass: ads-transport
- objectclass: ads-tcpTransport
- objectclass: ads-base
- objectclass: top
-
-and for LDAPS :
-
- dn: ads-transportid=ldaps,ou=transports,ads-serverId=ldapServer,ou=servers,a
- ds-directoryServiceId=default,ou=config
- ads-systemport: 10636
- ads-transportenablessl: TRUE
- ads-enabled: TRUE
- ads-transportaddress: 0.0.0.0
- ads-transportid: ldaps
- objectclass: ads-transport
- objectclass: ads-tcpTransport
- objectclass: ads-base
- objectclass: top
-
-You just have to send a ModifyRequest using such a LDIF :
-
- dn: ads-transportid=ldaps,ou=transports,ads-serverId=ldapServer,ou=servers,ads
- -directoryServiceId=default,ou=config
- changetype: modify
- replace: ads-systemport
- ads-systemport: 10637
- -
-
-(here, we have modified the LDAPS Port from 10636 to 10637)
-
-Those modification can be done directly on the _config.ldif_ file, but you won't have any syntax check if you do so.
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/1.4.2-changing-admin-password.mdtext b/content/apacheds/basic-ug/1.4.2-changing-admin-password.mdtext
deleted file mode 100644
index df99409..0000000
--- a/content/apacheds/basic-ug/1.4.2-changing-admin-password.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: 1.4.2 - Changing the admin password
-NavPrev: 1.4.1-changing-server-port.html
-NavPrevText: 1.4.1 - Changing the server port for LDAP
-NavUp: 1.4-basic-configuration-tasks.html
-NavUpText: 1.4 - Basic configuration tasks
-NavNext: 1.4.3-adding-partition.html
-NavNextText: 1.4.3 - Adding your own partition
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4.2 - Changing the admin password
-
-This section describes the steps necessary to change the administrator password. Follow the instructions provided here step by step.
-
-[TOC]
-
-## Step one: Changing the value in the system partition
-
-While the server is up and running, change the value of the _userPassword_ attribute of the admin (uid=admin,ou=system) via LDAP. There are several ways to accomplish this task. In the following, we use the Eclipse based Apache Directory Studio.
-
-A new LDAP connection with this tool is created via "New Connection ..." from the _Connections_ view. Enter your connection data in the first step ...
-
-![New LDAP connection](images/NewLDAPConnection1.png)
-
-... and in the next step, enter the admin DN _uid=admin,ou=system_ and the current password (default is "secret"). Saving the password is not necessary, we will change it anyway.
-
-![New LDAP connection](images/NewLDAPConnection2.png)
-
-Click _Finish_ to establish the connection.
-
-Afterwards, modify the value of the _userPassword_ attribute of the entry _uid=admin,ou=system_. Navigate to the entry in the DIT (_LDAP Browser_ view), and double click the attribute in the _Entry Editor_ view:
-
-![Entry Editor](images/entryEditor.png)
-
-The Password Editor dialog shows up; enter the new password. You can optionally select a hash algorithm like _SHA_. In this case, the password will be stored one-way encrypted in the attribute value -- not a bad idea.
-
-![Password Editor](images/passwordEditor.png)
-
-Pressing _OK_ stores the new value. Close the connection and shutdown the server.
-
-## Step two: Verification
-
-Verify that you can login as admin with the new password. With Apache Directory Studio, you can change the properties of the existing connection profile via a right click in the _Connections_ view and a selection of the _Properties_ menu item. The following dialog appears:
-
-![Connection Properties](images/connectionProperties.png)
-
-Enter the new password and press _OK_. Establishing a connection should now work.
-
-## Resources
-
-* [Apache Directory Studio](https://directory.apache.org/studio/): The tool used in steps 1 and 2
diff --git a/content/apacheds/basic-ug/1.4.3-adding-partition.mdtext b/content/apacheds/basic-ug/1.4.3-adding-partition.mdtext
deleted file mode 100644
index 41f74a1..0000000
--- a/content/apacheds/basic-ug/1.4.3-adding-partition.mdtext
+++ /dev/null
@@ -1,180 +0,0 @@
-Title: 1.4.3 - Adding your own partition
-NavPrev: 1.4.2-changing-admin-password.html
-NavprevText: 1.4.2 - Changing the admin password
-NavUp: 1.4-basic-configuration-tasks.html
-NavUpText: 1.4 - Basic configuration tasks
-NavNext: 1.4.4-configure-logging.html
-NavNextText: 1.4.4 - Configure logging
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4.3 - Adding your own partition
-
-This section describes how to add your own data partition.
-
-[TOC]
-
-## What are partitions?
-
-In ApacheDS entries are stored in partitions. Each partition contains a complete entry tree, also referred to as a DIT. Multiple partitions may exist and the entry trees they contain are disconnected from each other, meaning that changes to entries in partition _A_ would never affect entries in partition _B_. The entries in a particular partition are stored below some naming context called the partition suffix.
-
-The default implementation of partitions is based on [JDBM](http://jdbm.sourceforge.net/) B+Trees (but it's possible to add custom partition implementations). The ApacheDS default configuration contains a a data partition with the suffix "dc=example,dc=com". The image below shows the suffixes of a freshly installed ApacheDS within Apache Directory Studio.
-
-![Partition in studio after installation](images/partitions-in-studio-after-installation.png)
-
-The schema subsystem and ApacheDS itself store their information in special partitions, "ou=schema", "ou=config" and "ou=system" respectively.
-
-## Minimal partition definition
-
-For the examples in the following sections, we want to add a partition with the suffix "o=sevenSeas". This requires editing of the configuration, and injecting a first entry, associated with the root of this partition (here, "o=sevenseas"). This can be done using _Apache Directory Studio_. Open the server configuration :
-
-![Studio Apacheds Configuration](images/studio-apacheds-configuration1.png)
-
-and select the _Partitions_ tab :
-
-![Studio Apacheds Partitions Configuration](images/studio-partitions-configuration.png)
-
-Add another jdbmPartition element for the sevenSeas partition, just below the _example_ partition:
-
-![SevenSeas Partition Creation](images/sevenseas-partition-creation.png)
-
-As you can see, we have modified the _ID_ and the _Suffix_, all the other parameters remaining to their default values.
-
-Save the configuration now, and restart the server.
-
-The server has a new suffix now, but no context entry has been created for it. If you connect with an LDAP Browser (Apache Directory Studio for instance), the partition is only visible in the Root DSE. Below the Entry Editor of Directory Studio for the Root DSE after connecting to an ApacheDS instance configured like above.
-
-![RootDSE](images/sevenseas-naming-context.png)
-
-Before using the partition (e.g. adding entries), you have to add a context entry. If you plan to load LDIF data to your partition anyway, simply provide the context entry (the "root" of your partition) as a first data set. In our example it might look like this:
-
- dn: o=sevenSeas
- o: sevenSeas
- objectClass: top
- objectClass: organization
- description: The context entry for suffix o=sevenSeas
-
-It is also possible to import a file to ApacheDS which only contains such an entry, of cause. Here is an example on how to procede for the seven seas :
-
-In the LDAP Browser of Directory Studio, right click on the DIT entry and select "Import \-> LDIF Import...". A file selections dialog appears. Browse to the LDIF file and click Finish. The entry (or entries, if you provide more of them) will be added to to partition.
-
-The following image depicts the partitions after reconnecting with Apache Directory Studio (_LDAP Browser_ view).
-
-![Partition in Studio after addition](images/partitions-in-studio-after-addition.png)
-
-## Adding a partition programmatically
-
-The same o=sevenseas partition can be created through the application code using the Partition and DirectoryService API
-
-Here is the sample code to create a new partition o=sevenseas and its context entry programmatically
-
- :::java
- // Get the SchemaManager, we need it for this addition
- SchemaManager schemaManager = directoryService.getSchemaManager();
-
- // Create the partition
- JdbmPartition sevenseasPartition = new JdbmPartition( schemaManager );
- sevenseasPartition.setId("sevenseas");
- Dn suffixDn = new Dn( schemaManager, "o=sevenseas" );
- sevenseasPartition.setSuffix( suffixDn );
- sevenseasPartition.setCacheSize(1000);
- sevenseasPartition.init(directoryService);
- sevenseasPartition.setPartitionPath( <a path on your disk> );
-
- // Create some indices (optional)
- sevenseasPartition.addindex( new JdbmIndex( "objectClass", false ) );
- sevenseasPartition.addindex( new JdbmIndex( "o", false ) );
-
- // Initialize the partition
- sevenseasPartition.initialize();
-
- // create the context entry
- Entry contextEntry = new DefaultEntry( schemaManager, "o=sevenseas",
- "objectClass: top",
- "objectClass: organization",
- "o: sevenseas" );
-
- // add the context entry
- sevenseasPartition.add( new AddOperationContext( null, entry ) );
-
- // We are done !
-
-## More configuration options for a JDBM partition
-
-Here is a list of the used attributes, their default values and meaning :
-
-| Property | Description | Default Value | Required |
-|:-:|:-:|:-:|:-:|
-| ads-partitionId | Uniquely identifies the partition | N/A | yes |
-| ads-partitionSuffix | A DN ("o=sevenseas"), for instance | N/A | yes |
-| ads-contextEntry | The context entry | Will be automatically deduced if no value is provided | no |
-| ads-optimizerEnabled | Tells the server to turn on the optimizer | true | no |
-| ads-partitionCacheSize | The cache size (only for JDBM partitions) | -1 (no cache) | no |
-| ads-partitionSyncOnWrite | Syncs disks on every write operation | true | no |
-
-
-## Adding a partition manually
-
-When migrating from an earlier release, or perhaps a different LDAP Directory product, you might prefer to manually add your own partition with your specific directory root DN. There are two techniques available, and the most appropriate will depend on whether you have already allowed the apacheds server to start.
-
-When the server starts for the first time after installation, _config.ldif_ is renamed to *config.ldif_migrated*. After that time, this priming ldif file is never referred to again, so any changes you make will be ignored. [The reason for this change is discussed in a JIRA](https://issues.apache.org/jira/browse/DIRSERVER-2050).
-
-
-### Before starting the server
-
-Therefore, if you would like to have your (empty) partition created immediately following installation, you should prevent your server from starting during or after installation, i.e. when config.ldif has not yet been migrated.
-
-Next, edit _config.ldif_ to change all occurrences of "_example_" to suit the name of your own partition. Once the server has started and you run your first ldapsearch as the admin user, you will see that the server has created your own empty partition (instead of the example one).
-
-Note that the entry for the "_example_" partition does NOT have an _ads-contextEntry_ attribute. This "signature" attribute is created during the "migration" process (see below for details).
-
-Subsequent ldif changes to your new partition should work provided they use the default schema.
-
-
-### With ldapmodify to a running server
-
-This is task more tricky because the root of your new partition MUST have a valid _ads-contextEntry_ attribute and you must determine its value. The other attributes (see the definitions above) are quite straightforward, but this control value must be synthesised based on the specific attribute values of your own partition.
-
-Let us look at the ldif required to add the "example" partition:
-
- dn: ads-partitionId=example,ou=partitions,ads-directoryServiceId=default,ou=config
- objectclass: top
- objectClass: ads-base
- objectclass: ads-partition
- objectclass: ads-jdbmPartition
- ads-partitionSuffix: dc=example,dc=com
- ads-contextentry:: ZG46IGRjPWV4YW1wbGUsZGM9Y29tCmRjOiBleGFtcGxlCm9iamVjdGNsYXNzOiBkb21haW4Kb2JqZWN0Y2xhc3M6IHRvcAoK
- ads-jdbmpartitionoptimizerenabled: TRUE
- ads-partitioncachesize: 10000
- ads-partitionsynconwrite: TRUE
- ads-partitionid: example
- ads-enabled: TRUE
-
-The _ads-contextentry_ attribute is a binary value which has been base64 encoded. The algorithm has to be followed accurately to be successful. Consider our example partition and take these four lines:
-
- dn: dc=example,dc=com
- dc: example
- objectclass: domain
- objectclass: top
-
-Base64 these four lines as a single string (with \n newlines, but without the prefix spaces). The result should match the _ads-contextentry_ value shown above.
-
-However, you need to be careful because simply adding an extra space or newline will change the base64 value and make it unacceptable to the server. Also, any valid UTF-8 attribute values which are not in the base64 character set (such as accented characters) _MUST_ be base64-encoded strings, which effectively makes them double-encoded.
-e.g. _"dn: cn=lécharny,dc=com"_ needs to be specified as _"dn:: Y249bMOpY2hhcm55LGRjPWNvbQ=="_.
-
-You will probably want to create some associated index entries. You can use those of the "_example_" partition in _config.ldif-migrated_ for your templates (which do not require any special encoded attributes).
-
diff --git a/content/apacheds/basic-ug/1.4.4-configure-logging.mdtext b/content/apacheds/basic-ug/1.4.4-configure-logging.mdtext
deleted file mode 100644
index 2b06369..0000000
--- a/content/apacheds/basic-ug/1.4.4-configure-logging.mdtext
+++ /dev/null
@@ -1,209 +0,0 @@
-Title: 1.4.4 - Configure logging
-NavPrev: 1.4.3-adding-partition.html
-NavprevText: 1.4.3 - Adding your own partition
-NavUp: 1.4-basic-configuration-tasks.html
-NavUpText: 1.4 - Basic configuration tasks
-NavNext: 1.4.5-anonymous-access.html
-NavNextText: 1.4.5 - Enable and disable anonymous access
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4.4 - Configure logging
-
-In order to detect and analyze problems, adjusting the log level of a server can be a valuable tool. This section describes how to configure logging within a standalone ApacheDS.
-
-[TOC]
-
-## ApacheDS and logging
-
-ApacheDS 2.0 uses [SLF4J](http://www.slf4j.org/) as its logging solution. This is a simple facade for various logging APIs. The default for ApacheDS 2.0 is [log4j](http://logging.apache.org/log4j/).
-
-## Default behavior after installation
-
-By default, ApacheDS writes log files in the directory _<APACHEDS_HOME>/var/log/_. Besides stdout, a [RollingFileAppender](http://logging.apache.org/log4j/docs/api/org/apache/log4j/RollingFileAppender.html) is used to collect warnings and errors. It backups the log files when they reach a certain size.
-
-Here is what the default configuration file _log4j.properties_, which is located in _<APACHEDS_HOME>/conf/_, looks like.
-The name of the _RollingFileAppender_ is "R":
-
- log4j.rootCategory=WARN, stdout, R
-
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
- log4j.appender.R=org.apache.log4j.RollingFileAppender
- log4j.appender.R.File=apacheds-rolling.log
-
- log4j.appender.R.MaxFileSize=1024KB
- # Keep some backup files
- log4j.appender.R.MaxBackupIndex=5
-
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
-
- # with these we'll not get inundated when switching to DEBUG
- log4j.logger.org.apache.directory.shared.ldap.name=WARN
- log4j.logger.org.springframework=WARN
- log4j.logger.org.apache.directory.shared.codec=WARN
- log4j.logger.org.apache.directory.shared.asn1=WARN
-
-In this file "R" is configured like this:
-
-| Property name | Value in file above | Meaning |
-|:-:|:-:|---|
-| File | apacheds-rolling.log | Path to the output log file, in our case relative to _var/log_ |
-| MaxFileSize | 1024KB | Maximum size that the output file is allowed to reach before being rolled over to backup files |
-| MaxBackupIndex | 5 | Number of backup files kept |
-| layout.ConversionPattern | [%d{HH:mm:ss}] %p [%c] - %m%n | Format string for logging events |
-
-If the default logging does not meet your requirements, you can easily adjust the configuration to your needs.
-
-## Adjusting logging to your needs
-
-### Log file location (where the log files are placed)
-
-By default the log files are placed at _<APACHEDS_HOME>/var/log/_, but that can be changed.
-
-#### Linux/MacOS/Solaris
-On this systems the location of the log files is configured via an entry in */bin/server.init*. Look for the following lines and change it to your preferences:
-
- $DAEMON_HOME/apacheds \
- ...
- -outfile $SERVER_HOME/var/log/apacheds-stdout.log \
- -errfile $SERVER_HOME/var/log/apacheds-stderr.log \
- ...
- $APACHEDS_HOME start
-
-#### Windows
-
-On Windows you can use the configuration wizard for the service as shown in the screenshot above. To adjust the log path you have to adjust the values of *Redirect Stdout* and *Redirect Stderror*
-
-### Log level (how detailed the logs are)
-
-The following log levels from log4j are used for messages within ApacheDS:
-
-| Level | Description from log4j documentation |
-|:-:|---|
-| DEBUG | Designates fine-grained informational events that are most useful to debug an application |
-| INFO | Designates informational messages that highlight the progress of the application at coarse-grained level |
-| WARN | Designates potentially harmful situations |
-| ERROR | Designates error events that might still allow the application to continue running |
-| FATAL | Designates very severe error events that will presumably lead the application to abort |
-
-The default (global) log level in the configuration is _WARN_. All messages of level WARN and more severe (ERROR, FATAL) are written to the rolling log file. The easiest way to get finer log messages is to change it like this
-
- log4j.rootCategory=DEBUG, stdout, R
- ...
-
-These detailed log messages took much file space and time and therefore should only be enabled globally in order to analyze problems.
-
-It is possible to configure the logging more fine grained by using categories. Within the default configuration there are some examples:
-
- ...
- # with these we'll not get inundated when switching to DEBUG
- log4j.logger.org.apache.directory.shared.ldap.name=WARN
- log4j.logger.org.springframework=WARN
- log4j.logger.org.apache.directory.shared.codec=WARN
- log4j.logger.org.apache.directory.shared.asn1=WARN
-
-If the global level is switched to DEBUG, these definitions override the setting with WARN for certain areas and therefore keep the file a little bit smaller. Learn more about the concept of categories in the [Short introduction to log4j](http://logging.apache.org/log4j/docs/manual.html).
-
-### Format for log messages
-
-The format of each line within a log file is controlled by a pattern. For the _RollingFileAppender_ in the default configuration it looks like this
-
- ...
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
- log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
- ...
-
-Some examples lines within the log file, formatted with the pattern "\[%d\{HH:mm:ss\}\] %p \[%c\] - %m%n" are:
-
- ...
- [12:29:03] WARN [org.apache.directory.server.core.DefaultDirectoryService]
- - You didn't change the admin password of directory service instance 'default'.
- Please update the admin password as soon as possible to prevent a possible security breach.
- ...
- [12:29:05] INFO [org.apache.directory.server.jndi.ServerContextFactory]
- - Successful bind of an LDAP Service (636) is complete.
- [12:29:05] INFO [org.apache.directory.server.Service] - server: started in 6750 milliseconds
- ...
-
-The pattern uses the following conversion characters:
-
-| Character | Output |
-|:-:|---|
-| %d | Date of the logging event in the given format. like "12:29:05" for %d{HH:mm:ss} |
-| %p | Priority (level) of the logging event, like "INFO" or "WARN" |
-| %c | Category of the logging event, like "org.apache.directory.server.Service" |
-| %m | Application supplied message associated with the logging event |
-| %n | Platform dependent line separator |
-
-The [javadoc of log4j](http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html) contains a table with all valid %-characters and their meaning.
-
-Simple adjust the pattern in the _log4j.properties file_ to get the log format of your choice, for instance
-
- log4j.appender.R.layout.ConversionPattern=[%d{dd.MM.yyyy HH:mm:ss}] %p: %c{1}.%M() - %m%n
-
-leads to messages of this form:
-
- ...
- [29.12.2006 13:50:44] INFO: ServerContextFactory.startLDAP0()
- - Successful bind of an LDAP Service (636) is complete.
- [29.12.2006 13:50:44] INFO: Service.init() - server: started in 3016 milliseconds
- ...
-
-<DIV class="warning" markdown="1">
-** Warning**
-
-"Generating caller location information like with %M or %L is extremely slow. Its use should be avoided unless execution speed is not an issue." (from the log4j documentation)
-</DIV>
-
-### Advanced log4j configuration
-
-You can take advantage of other features of log4j as well, such as other appenders like the daily rolling file appender. And you can configure logging to make it easier for you to view the messages with tools like Log Factor 5 or [Chainsaw](http://logging.apache.org/log4j/docs/chainsaw.html).
-
-Learn more about log4j and related tools at its [homepage](http://logging.apache.org/log4j/docs/index.html).
-
-## Example configurations
-
-The following example could be used to log all incoming search, add, delete, modify and moddn requests:
-
- log4j.logger.org.apache.directory.server.ldap.handlers.SearchHandler=DEBUG
- log4j.logger.org.apache.directory.server.ldap.handlers.AddHandler=DEBUG
- log4j.logger.org.apache.directory.server.ldap.handlers.DeleteHandler=DEBUG
- log4j.logger.org.apache.directory.server.ldap.handlers.ModifyHandler=DEBUG
- log4j.logger.org.apache.directory.server.ldap.handlers.ModifyDnHandler=DEBUG
-
-## Log settings of the Windows service
-
-To run as a Windows service, the ApacheDS Java classes must be executed within a Windows native binary. The ApacheDS project relies on the Tanuki Software Java Service Wrapper's wrapper.exe to manage the ApacheDS Java Virtual Machine (JVM) process. While the ApacheDS Java code's logging is log4j-based, the wrapper.exe Windows service has its own logging configuration. For example, the wrapper.conf log settings govern the destination of the JVM's stdout and stderr logging and the logging of the communication between the wrapper.exe Windows service container and the JVM it hosts.
-
-An ApacheDS installation's wrapper.exe log settings are stored in:
-
- C:\Program Files (x86)\ApacheDS\conf\wrapper.conf.
-
-The Tanuki Software Java Service Wrapper web site documents all configuration settings for wrapper.exe including logging:
-
- https://wrapper.tanukisoftware.com/doc/english/introduction.html#logging
-
-## Resources
-
-* [Short introduction to log4j](http://logging.apache.org/log4j/docs/manual.html)
-
-
diff --git a/content/apacheds/basic-ug/1.4.5-anonymous-access.mdtext b/content/apacheds/basic-ug/1.4.5-anonymous-access.mdtext
deleted file mode 100644
index 909ac13..0000000
--- a/content/apacheds/basic-ug/1.4.5-anonymous-access.mdtext
+++ /dev/null
@@ -1,37 +0,0 @@
-Title: 1.4.5 - Enable and disable anonymous access
-NavPrev: 1.4.4-configure-logging.html
-NavprevText: 1.4.4 - Configure logging
-NavUp: 1.4-basic-configuration-tasks.html
-NavUpText: 1.4 - Basic configuration tasks
-NavNext: 1.5-sample-configuration.html
-NavNextText: 1.5. - About the sample configurations and sample directory data
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4.5 - Enable and disable anonymous access
-
-This section briefly describes how to enable and disable anonymous access.
-
-Anonymous access to the server is enabled by default. This includes read and write access!
-
-You can disable anonymous binds by changing the value for property _allow Anonymous Access_ in the server configuration screen :
-
-![Anonymous Access](images/anonymous-access.png)
-
-A restart of the server is necessary for this change to take effect. Afterwards, all clients have to provide their name (distinguished name) and password in order to bind to the directory service.
-
-Learn more about authentication option in the corresponding section of this guide [here](3.1-authentication-options.html).
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/1.5-sample-configuration.mdtext b/content/apacheds/basic-ug/1.5-sample-configuration.mdtext
deleted file mode 100644
index 9a3e46b..0000000
--- a/content/apacheds/basic-ug/1.5-sample-configuration.mdtext
+++ /dev/null
@@ -1,89 +0,0 @@
-Title: 1.5. - About the sample configurations and sample directory data
-NavPrev: 1.4.5-anonymous-access.html
-NavprevText: 1.4.5 - Enable and disable anonymous access
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 1.6-backup-restore.html
-NavNextText: 1.6. - Backup/Restore
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.5. - About the sample configurations and sample directory data
-
-This section describes basic parameters used throughout the examples in this guide. It also introduces the sample directory "Sailors of the seven seas", and other requisites you need.
-
-[TOC]
-
-## Basic server parameters
-
-In the following sections we assume that you will install, configure and run Apache Directory Server on a host with the following host name using the parameters given in the following table:
-
-| Parameter name | Parameter value |
-|---|---|
-| Hostname | zanzibar |
-| Port | 10389 |
-| Suffix ("Base DN") | o=sevenSeas |
-| Admin User DN | uid=admin,ou=system |
-| Admin User Password | secret |
-
-Before you start playing with the data make sure that you have added a partition with the suffix o=sevenSeas to the server. How to do this is described [here|1.4. Basic configuration tasks#Adding your own partition (suffix)]
-In order to increase recognition, all examples of the Basic User's Guide use these values. Adjust them to your needs (especially the password).
-
-## LDAP Clients
-
-LDAP is a client/server protocol. Hence you need an LDAP client to connect remotely to the Apache Directory Server (or at least the directory part of it, to be precise). There are different options here. Because the protocol is standardized, you may use every LDAP compliant client. This is comparable to HTTP, where you can use each web browser to communicate with virtually each web server, and totally different to relational databases. The latter have a (more or less) standardized query language (SQL), but vendors tend to use individual network access protocols. In practice, the LDAP situation is even better than HTTP, because there were no LDAP browser wars ...
-
-Many software components may act as an LDAP client. Normally they use LDAP libraries to connect. In the following sections you meet LDAP clients with GUI and LDAP command line tools. Some Java programming examples which takes advantage of JNDI are provided as well.
-
-In other sections you will learn how E-Mail clients like Mozilla Thunderbird and application servers like Apache Tomcat connect to Apache Directory server, either to use the data stored in the directory (e.g. mail addresses) or to perform authentication and authorization.
-
-Recapitulating the Basic User's Guide describes connecting to the server with tools provided by ApacheDS as well as third party products. In all cases the examples will use the connection data depicted above (_ldap://zanzibar:10389/o=sevenSeas_)
-
-## The sample data (Sailors of the seven seas)
-
-The file [Apache DS Tutorial](resources/apache-ds-tutorial.ldif) contains some sample data, which is used in the following sections. It is a text file in the so called *LDIF* format. LDIF stands for LDAP Data Interchange Format. It is widely adopted in the LDAP world and standardized in [RFC 2849](http://www.faqs.org/rfcs/rfc2849.html). Therefore you are able to import our sample data into other directory solutions as well, not only into Apache Directory Server.
-
-The sample directory tree contains entries for persons and groups. These are structured in sub trees (ou=people and ou=groups), see image below. The person entries describe sailors (historic and fictional), the group entries bundle them. An example for a group is the ship crew of HMS Bounty.
-
-![Sample Structure](images/sample-structure.gif)
-
-This snippet of the file represents a single entry, just to give you an impression of how LDIF files look like.
-
- ...
- # Entry for Fletcher Christian
- #
- dn: cn=Fletcher Christian,ou=people,o=sevenSeas
- cn: Fletcher Christian
- objectClass: top
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- sn: Christian
- givenName: Fletcher
- description: Lieutenant Fletcher Christian
- manager: cn=William Bligh,ou=people,o=sevenSeas
- ...
-
-There are different ways to import the data. Generally perform the following steps:
-
-* Download and install the server, described in [1.3. Installing and starting the server](1.3-installing-and-starting.html)
-* Configure a partition for the sample date, described in [1.4. Basic configuration tasks](1.4-basic-configuration-tasks.html)
-* Import the data, for instance using [Apache Directory Studio](https://directory.apache.org/studio/)
-
-h2. Resources
-
-* [RFC 2849 - The LDAP Data Interchange Format (LDIF)](http://www.faqs.org/rfcs/rfc2849.html) -- Technical Specification
diff --git a/content/apacheds/basic-ug/1.6-backup-restore.mdtext b/content/apacheds/basic-ug/1.6-backup-restore.mdtext
deleted file mode 100644
index 9609469..0000000
--- a/content/apacheds/basic-ug/1.6-backup-restore.mdtext
+++ /dev/null
@@ -1,40 +0,0 @@
-Title: 1.6. - Backup/Restore
-NavPrev: 1.5-sample-configuration.html
-NavprevText: 1.5 - About the sample configurations and sample directory data
-NavUp: 1-how-to-begin.html
-NavUpText: 1 - How to begin
-NavNext: 2-handling-data.html
-NavNextText: 2 - Handling data within your directory
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.6. - Backup/Restore
-
-You may want to save your data in a safe place, and be able to restore them.
-
-**ApacheDS** stores its data into a set of files, which are binary files. You can't simply copy those files in a backup directory, because there is no guarantee that their state is consistant when you do a copy (unless you have stopped the server while doing so) : one update operation might be running when you do a copy, and unless this update has been completed, the database is nt in a stable state.
-
-The current solution is to extract a LDIF from ApacheDS. You can do so either by using Apache Directory Studio, or through a script using the slapsearch utility, on the partition you are interested in. In any case, you must requests all the attributes, including the operational attributes (use the '+' special attributes for that purpose). Here is a sample command line that extract the data from the 'example' partition, on a default ApacheDS install :
-
- $ ldapsearch -D "uid=admin,ou=system" -w secret -p 10389 -h localhost -b "dc=example,dc=com" -s sub "(ObjectClass=*)" * + > backup.ldif
-
-(note that you will have to change the password, port, server name and partition name to fits your setup)
-
-Restoring the database is a matter of starting frm a blank partition, and reimport the LDIF.
-
-Note : This is not really convenient. First, it requires that an external tool is present to run the extract. Second, reimporting a huge database will take a lot of time...
-We are working on a new system that guarantees that the file containing the data can be copied directly and restored as is.
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/2-handling-data.mdtext b/content/apacheds/basic-ug/2-handling-data.mdtext
deleted file mode 100644
index 50d2602..0000000
--- a/content/apacheds/basic-ug/2-handling-data.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 2 - Handling of data within your directory
-NavPrev: 1.6-backup-restore.html
-NavPrevText: 1.6. - Backup/Restore
-NavUp: ../basic-user-guide.html
-NavUpText: Basic User Guide
-NavNext: 2.1-data-modification.html
-NavNextText: 2.1 - Data modification
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - Handling data within your directory
-
-Now that your server is up and running, you can use it to add, modify, remove and search entries. You can also manage its schema, extending it to fit your needs.
-
-## Table of content
-
-* [2.1 - Data modification](2.1-data-modification.html)
- * [2.1.1 - Adding Entries](2.1.1-adding-entries.html)
- * [2.1.2 - Deleting Entries](2.1.2-deleting-entries.html)
-* [2.2 - Searching Data](2.2-searching-data.html)
- * [2.2.1 - Simple search](2.2.1-simple-search.html)
- * [2.2.2 - More search options](2.2.2-more-search-options.html)
-* [2.3 - Introducing the Schema ](2.3-introducing-schema.html)
- * [2.3.1 - Adding Schema Elements](2.3.1-adding-schema-elements.html)
- * [2.3.2 - Enabling Schema](2.3.2-enabling-schema.html)
-
-
diff --git a/content/apacheds/basic-ug/2.1-data-modification.mdtext b/content/apacheds/basic-ug/2.1-data-modification.mdtext
deleted file mode 100644
index 7864422..0000000
--- a/content/apacheds/basic-ug/2.1-data-modification.mdtext
+++ /dev/null
@@ -1,42 +0,0 @@
-Title: 2.1 - Data modification
-NavPrev: 2-handling-data.html
-NavPrevText: 2 - Handling of data within your directory
-NavUp: 2-handling-data.html
-NavUpText: 2 - Handling of data within your directory
-NavNext: 2.1.1-adding-entries.html
-NavNextText: 2.1.1 - Adding Entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - Data modification
-
-We will first expose the way you inject entries in _Apache Directory Server_. There are four type of operations you can use for that :
-* Addition
-* Deletion
-* Modification
-* Move and/or rename
-
-(The last operation allows a user to move, rename or move and rename entries).
-
-We will show how to add or delete entries in the following chapters, just to show you how it works with _Apache Directory Server_. There is nothing really different with any other servers.
-
-For further information about data modifications, you should either check the [Apache LDAP API documentation](../../api/index.html) documentation, or the [Apache Directory Studio documentation](../../studio/users-guide.html).
-
-## Table of content
-
-* [2.1.1 - Adding Entries](2.1.1-adding-entries.html)
-* [2.1.2 - Deleting Entries](2.1.2-deleting-entries.html)
diff --git a/content/apacheds/basic-ug/2.1.1-adding-entries.mdtext b/content/apacheds/basic-ug/2.1.1-adding-entries.mdtext
deleted file mode 100644
index 27fd95e..0000000
--- a/content/apacheds/basic-ug/2.1.1-adding-entries.mdtext
+++ /dev/null
@@ -1,105 +0,0 @@
-Title: 2.1.1 - Adding Entries
-NavPrev: 2.1-data-modification.html
-NavPrevText: 2.1 - Data modification
-NavUp: 2.1-data-modification.html
-NavUpText: 2.1 - Data modification
-NavNext: 2.1.2-deleting-entries.html
-NavNextText: 2.1.2 - Deleting Entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1.1 - Adding Entries
-
-We will see how to add new entries into the server. Assuming that we have already created a partition (see [Adding a partition](1.4.3-adding-partition.html)), we will use this added partition as a root for the entry addition. We will also create the _ou=people_ entry.
-
-We try to add a new user to the "Seven Seas" partition. The data for the entry is inspired by "Peter Pan" and provided by this LDIF file ([Captain hook](resources/captain-hook-hierarchy.ldif)):
-
- # File captain_hook.ldif
- dn: ou=people,o=sevenSeas
- objectclass: organizationalUnit
- objectclass: top
- ou: people
-
- dn: cn=James Hook,ou=people,o=sevenSeas
- objectclass: inetOrgPerson
- objectclass: organizationalPerson
- objectclass: person
- objectclass: top
- cn: James Hook
- description: A pirate captain and Peter Pan's nemesis
- sn: Hook
- mail: jhook@neverland
- userpassword: peterPan
-
-The first entry creates the _ou=people_ container, which is necessary otherwise we can't inject the second entry.
-
-## Using the command line
-
-You have to use an authorized user to inject the entry, here, _cn=Horatio Nelson,ou=people,o=sevenSeas_ :
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -a -f captain_hook.ldif
- adding new entry cn=James Hook,ou=people,o=sevenSeas
- $
-
-Afterwards a new entry is successfully created within the "Seven Seas" partition by user "Horatio Nelson". The '+' sign in the attributes list of the _ldapsearch_ command causes ApacheDS to return the operational attributes, which demonstrate this.
-
- $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
- version: 1
- dn: cn=James Hook,ou=people,o=sevenSeas
- accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
- creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
- createTimestamp: 20061203140109Z
-
-## Using Apache Directory Studio
-
-Once connected on the server with studio, you should be able to inject new entries -assuming you have the sufficent priviledge - :
-
-![Import entry with studio](images/import-entry-studio.png)
-
-Then select the LDIF file containing the entry :
-
-![LDIF import](images/ldif-import-file-select.png)
-
-When imported, the _log_ windows should contain this message :
-
- :::
- #!RESULT OK
- #!CONNECTION ldap://localhost:10389
- #!DATE 2012-10-30T14:36:21.294
- dn: ou=people,o=sevenSeas
- changetype: add
- ou: people
- objectclass: organizationalUnit
- objectclass: top
-
- #! RESULT OK
- #! CONNECTION ldap://localhost:10389
- #! DATE 2012-10-30T14:36:21.320
- dn: cn=James Hook,ou=people,o=sevenSeas
- changetype: add
- mail: jhook@neverland
- userpassword: peterPan
- description: A pirate captain and Peter Pan's nemesis
- objectclass: inetOrgPerson
- objectclass: organizationalPerson
- objectclass: person
- objectclass: top
- sn: Hook
- cn: James Hook
-
-This is it for this basic introduction on how to add entries in the server. There are other ways, like using and LDAP API, to do the same thing.
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/2.1.2-deleting-entries.mdtext b/content/apacheds/basic-ug/2.1.2-deleting-entries.mdtext
deleted file mode 100644
index 143fa29..0000000
--- a/content/apacheds/basic-ug/2.1.2-deleting-entries.mdtext
+++ /dev/null
@@ -1,68 +0,0 @@
-Title: 2.1.2 - Deleting Entries
-NavPrev: 2.1.1-adding-entries.html
-NavPrevText: 2.1.1 - Adding Entries
-NavUp: 2.1-data-modification.html
-NavUpText: 2.1 - Data modification
-NavNext: 2.2-searching-data.html
-NavNextText: 2.2 - Searching Data
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1.2 - Deleting Entries
-
-Deleting entries is quite simple : you just need to provide their _DN_, and require for the deletion of the associated entry. Although there are a few conditions that must be fulfilled for this operatio to be successful :
-* The entry must exist;
-* It should not have any children;
-* The user requiring the deletion must have enough priviledge to do so
-
-Assuming those three conditions being fulfilled, you can proceed with the deletion. We will show how it works on the entry we added in the previous chapter.
-
-
-## Using the command line
-
-You have to use an authorized user to delete the entry, here, _cn=Horatio Nelson,ou=people,o=sevenSeas_ :
-
-With an LDIF file ([Captain hook delete](resources/captain-hook-delete.ldif)) with an appropriate change entry, this can easily be accomplished, if the bind user is allowed to do so. Here is the content of this _LDIF_ file :
-
- # File captain_hook_delete.ldif
- dn: cn=James Hook,ou=people,o=sevenSeas
- changetype: delete
-
-and here is the command line to use :
-
- $ ldapdel -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -a -f captain_hook.ldif
- deleting entry cn=James Hook,ou=people,o=sevenSeas
- $
-
-
-## Using Apache Directory Studio
-
-With studio, just select the entry you want to delete, and select the "Delete" menu :
-
-![Delete entry with studio](images/delete-entry.png)
-
-When deleteed, the _log_ windows should contain this message :
-
- :::
- #!RESULT OK
- #!CONNECTION ldap://localhost:10389
- #!DATE 2012-10-30T14:57:47.399
- dn: cn=James Hook,ou=people,o=SevenSeans
- changetype: delete
-
-Studio allows you to delete entries which have children, but it will first try to delete all the children recursively. There is no such things when you send an LDAP _DeleteRequest_.
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/2.2-searching-data.mdtext b/content/apacheds/basic-ug/2.2-searching-data.mdtext
deleted file mode 100644
index 3f1c13b..0000000
--- a/content/apacheds/basic-ug/2.2-searching-data.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: 2.2 - Searching Data
-NavPrev: 2.1.2-deleting-entries.html
-NavPrevText: 2.1.2 - Deleting Entries
-NavUp: 2-handling-data.html
-NavUpText: 2 - Handling of data within your directory
-NavNext: 2.2.1-simple-search.html
-NavNextText: 2.2.1 - Simple search
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - Searching Data
-
-Searching is the most frequent operation done on a LDAP server : everything is optimized so that the search operation is as fast as possible.
-
-We will show how to do some simple searches on _Apache Directory Server_ in the following pages.
-
-## Table of content
-
-* [2.2.1 - Simple search](2.2.1-simple-search.html)
-* [2.2.2 - More search options](2.2.2-more-search-options.html)
diff --git a/content/apacheds/basic-ug/2.2.1-simple-search.mdtext b/content/apacheds/basic-ug/2.2.1-simple-search.mdtext
deleted file mode 100644
index 0087548..0000000
--- a/content/apacheds/basic-ug/2.2.1-simple-search.mdtext
+++ /dev/null
@@ -1,54 +0,0 @@
-Title: 2.2.1 - Simple search
-NavPrev: 2.2-searching-data.html
-NavPrevText: 2.2 - Searching Data
-NavUp: 2.2-searching-data.html
-NavUpText: 2.2 - Searching Data
-NavNext: 2.2.2-more-search-options.html
-NavNextText: 2.2.2 - More search options
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.1 - Simple search
-
-Basically, a search in **LDAP** requires a few parameters :
-* A server on which we will send the request
-* A port for this server
-* A base _DN_, the location where to start the search from
-* A filter to select the entries to be returned
-* The user doing the search
-* A password if the user is not already bound
-* A scope, defining the depth we should look for
-* The list of attributes to return
-
-There are several other options, which will be exposed in the next chapter.
-
-## Doing a Simple Search on the command line
-
-Here is an exemple of search done on the base we have created :
-
- $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
- version: 1
- dn: cn=James Hook,ou=people,o=sevenSeas
- accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
- creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
- createTimestamp: 20061203140109Z
-
-Here, we see that we are connecting to the **zanzibar** server, on its **10389** port. As we haven't provided any user, this is an anonymous search, which should be allowed if the server accept anonymous searches.
-We then have the base _DN_, **"o=sevenseas"**, the filter **"(cn=James Hook)"** and the scope : **"sub"**. The last parameter, **"+"**, asks the server to return all the operational attributes.
-
-The result is just shown as a result of the command (here, we get back one single entry).
-
diff --git a/content/apacheds/basic-ug/2.2.2-more-search-options.mdtext b/content/apacheds/basic-ug/2.2.2-more-search-options.mdtext
deleted file mode 100644
index 6fe08cb..0000000
--- a/content/apacheds/basic-ug/2.2.2-more-search-options.mdtext
+++ /dev/null
@@ -1,80 +0,0 @@
-Title: 2.2.2 - More search options
-NavPrev: 2.2.1-simple-search.html
-NavPrevText: 2.2.1 - Simple search
-NavUp: 2.2-searching-data.html
-NavUpText: 2.2 - Searching Data
-NavNext: 2.3-introducing-schema.html
-NavNextText: 2.3 - The Schema
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2.2 - More search options
-
-There are many parameters we haven't explained in the previous chapter.
-
-## Bound/anonymous searches
-
-When you send a SearchRequest to the server, you may be anonymous, or you may have been bound before the search is done. Binding on a server creates an **LDAP** session, which stores the credentials. This is used by the authorization system to filter the requests and the returned data, depending on the server settings.
-
-Not all the server allow an anonymous search : _Apache Directory Server_ default to not enabling such anonymous searches (this is for security questions).
-
-Generally speaking, users do bind before sending a search request.
-
-## Filters
-
-The **LDAP** filters can be quite complex. Although they aren't even close to what **SQL** provide : there is no way you can do a Join on a LDAP server.
-
-A filter is a set of nodes connected with operators like **and**, **or**, **not**...
-
-Here is the list of possible connectors :
-
-| Connector | Description | Example |
-|:-:|---|:-:|
-| And | All the nodes should be evaluated to true | (&(objectClass=person)(cn=acme)) |
-| Or | At least one of the node should be evaluated to true | (|(objectClass=person)(cn=acme)) |
-| Not | Select the entries that does not evaluate to true for this filter | (!(objectClass=person)) |
-
-Each node proceeds a check on the attributeType and value provided in the filter. For instance, the **"(o=sevenseas)"** filter tells the server to look for all the entries which have an "organization" attribute with a value of **"sevenseas"**. Here are the various kind of filters you can use :
-
-| Filter |
-|:-:|
-| = (Equality) |
-| Substring |
-| >= |
-| <= |
-| =* (Present) |
-| ~= (ApproxMatch) |
-| extensibleMatch |
-
-## Scope
-
-A Search can span across the whole **DIT**, or just a subset of it. In **LDAP**, you can use three different scopes :
-
-* OBJECT : the Object itself, none of its children
-* ONELEVEL : all of the base direct children, but not it's children's children not the base object
-* SUBLEVEL : everything
-
-## Returned attributes
-
-A search can also list the attributes to be returned. This can be :
-
-* '*' for all the user attributes
-* '+' for all the operational attributes
-* a list of attributes name
-* 1.1 if we don't want the attributes values to be returned, but we want the entries' DN that match the filter
-
-
diff --git a/content/apacheds/basic-ug/2.3-introducing-schema.mdtext b/content/apacheds/basic-ug/2.3-introducing-schema.mdtext
deleted file mode 100644
index 6fb9907..0000000
--- a/content/apacheds/basic-ug/2.3-introducing-schema.mdtext
+++ /dev/null
@@ -1,66 +0,0 @@
-Title: 2.3 - The Schema
-NavPrev: 2.2.2-more-search-options.html
-NavPrevText: 2.2.2 - More search options
-NavUp: 2-handling-data.html
-NavUpText: 2 - Handling of data within your directory
-NavNext: 2.3.1-adding-schema-elements.html
-NavNextText: 2.3.1 - Adding Schema Elements
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3 - The Schema
-
-All the data stored into a LDAP server are structured following a schema, a bit like any DBMS. _Apache Directory Server_ does have a dynamic schema : that means you can modify the schema without having to restart the server.
-
-We won't describe in the basic user guide how to manage the schema, this will be extensively described in the _Advanced user guide_, this chapter is just a short introduction.
-
-
-## Table of content
-
-* [2.3.1 - Adding Schema Elements](2.3.1-adding-schema-elements.html)
-* [2.3.2 - Enabling Schema](2.3.2-enabling-schema.html)
-
-## What is the LDAP schema ?
-
-It's a set of elements defining the data structure that can be stored in the server. It defines the following elements :
-
-* AttributeType : the type of values that can be stored in an attribute
-* ObjectClass : the set of AttributeType that can or must be used in an entry
-* Syntax : The syntax the values must abide to
-* MatchingRule : The rules used to retrieve the data
-
-There are more schema elements which are not currently used in _Apache Directory Server_.
-
-The following diagram shows all the interactions between each schema element :
-
-![Schema elements interactions](images/schema-objects.png)
-
-## How do we use it in ApacheDS ?
-
-The schema is everywhere in the server : each entry is controlled against the schema when it's added or modified. The schema is a critical part of the server.
-
-The _Apache Directory Server_ comes with a predefined schema, which should fit a large part of users need. You may though need to extend it...
-
-Hopefully, the schema can be extended. This will be explained in the _Advanced User Guide_.
-
-Enough said that you can browse the existing schema using _Apache Directory Studio_ :
-
-![Open Schema Browser](images/open-schema-browser.png)
-
-then you get the Schema browser :
-
-![Schema Browser](images/schema-browser.png)
diff --git a/content/apacheds/basic-ug/2.3.1-adding-schema-elements.mdtext b/content/apacheds/basic-ug/2.3.1-adding-schema-elements.mdtext
deleted file mode 100644
index afbd398..0000000
--- a/content/apacheds/basic-ug/2.3.1-adding-schema-elements.mdtext
+++ /dev/null
@@ -1,205 +0,0 @@
-Title: 2.3.1 - Adding Schema Elements
-Navprev: 2.3-introducing-schema.html
-NavPrevText: 2.3 - Introducing Schema
-NavUp: 2.3-introducing-schema.html
-NavUpText: 2.3 - Introducing Schema
-NavNext: 2.3.2-enabling-schema.html
-NavNextText: 2.3.2 - Enabling Schema
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3.1 - Adding Schema Elements
-
-## Motivation
-
-The schema of an LDAP server is comprised of object classes, attributes, syntaxes and matching rules. Basically it defines which entries are allowed within the server and how the server should handle them
-
-
-<DIV class="info" markdown="1">
-<b>Is it always necessary to define my own schema elements?</b><br/>
-No. <b>ApacheDS</b> comes with a comprehensive set of predefined, standardized schema elements (like <em>inetOrgPerson</em>). It is quite common to solely use the predefined schema. The same holds true for other directory servers, by the way.
-</DIV>
-
-In the following text the addition of user defined schema elements to the schema is described in tutorial style.
-
-## Browsing ApacheDS schemas
-
-LDAPv3 servers publish their schema via LDAP. Thus it is possible to list the schema elements with standard LDAP tools. For instance it is possible to use the ldapsearch command line tool to list all object classes
-
- :::text
- $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w ****** \
- -b "cn=schema" -s base "(objectclass=subschema)" objectclasses
- ...
- objectClasses: ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top
- STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $
- seeAlso $ description ) X-SCHEMA 'core' )
- ...
-
-The output (formatted as defines in RFC 4512) contains all things which are interesting to know about an object class (required attributes, optional attributes etc.), but is not easy to read by a human user. It is therefore often appropriate to use a GUI tool to browse the schema (which basically performs the same search operations but presents the output prettily). One option is Apache Directory Studio, an Eclipse based LDAP tool set which contains a powerful graphical Schema browser:
-
-![Schema brower](images/schema-browser-person.png)
-
-The techniques described above work for all LDAP v3 compliant servers. The ability to browse the schema gives us a chance to check whether our future changes to the schema really took place.
-
-The schema subsystem of ApacheDS 1.5 stores the schema elements as entries in the DIT. You can find them within a special partition with suffix ou=schema; simply browse the content with your favorite LDAP Browser. With Apache Directory Studio, it looks like this:
-
-![ApacheDS Schemas](images/schema-browser-tree.png)
-
-Browsing the schema like this gives a good impression of the ApacheDS implementation of the schema subsystem and an even better way to analyze effects during schema updates. But keep in mind that the storage scheme is server dependent; not all LDAP server implementations store the schema elements in the DIT.
-
-## Which OIDs should you use?
-
-If you plan to add custom schema elements, you need numerical OIDs (object identifiers) for them. If you implement schema elements defined somewhere else (like eduPerson), you can use the OIDs which are are part of their descriptions. But what if you plan to design your own?
-
-
-### Some OID background information
-
-An OID is a string formed by a series of numbers which are separated by a dot (like "12.4.1971.0.1"). Many elements in directory world use OIDs: Controls, extended operations and schema elements (like "2.5.6.6" for object class person). They identify these objects in a unique fashion and therefore avoid name clashes.
-
-How is this accomplished? OIDs are assigned hierarchically: The owner of an OID is allowed to create new IDs by simply appending numbers. S/he is also allowed to delegate ownership of newly created OIDs to someone else. This way every person or organization is able to allocate an arbitrary number of new OIDs after obtaining one from "higher command", and they are still unique world-wide.
-
-
-### OIDs in the example
-
-OIDs starting with **1.3.6.1.4.1** represent IANA-registered private enterprises, Apache Software Foundation for instance owns the OID **1.3.6.1.4.1.18060**. The **1.3.6.1.4.1.18060.0** has been assigned to the Apache Directory project by the ASF, and we have decided to use the branch "1.3.6.1.4.1.18060.0.4.3" for schema elements used as examples in the documentation.
-
-### OIDs for your own custom schema elements
-
-If you just want to play around with the schema subsystem, want to explore the capabilities, or learn about LDAP in general, you will probably not mind about unique OIDs. This is comparable to using self-signed certificates for SSL experiments. But it is nevertheless necessary that you use OIDs which are not used in the schema yet (otherwise addition will fail).
-
-But if you plan to use your schema elements in a production environment (an object class for instance which describes employees with company specific attributes), or to ship your schema elements with a product (e.g. a CRM or portal solution), you should definitely use unique OIDs. In order to do this you have to obtain OIDs from a branch assigned to your company or organization (your network administrators will be helpful here, do not invent OIDs without asking or obtaining a branch from someone who owns the prefix OID). If your company or organization does not own on OID, there are several option to obtain one, one is the IANA (Internet Assigned Numbers Authority). It is also possible to get an OID branch as an individual.
-
-
-<DIV class="info" markdown="1">
-**Obtaining a PEN**
-You can ask for your own PEN (Private Enterprise Number) here : http://pen.iana.org/pen/PenApplication.page
-It takes a few weeks to have a private OID assigned to you, so be patient, or do it early !
-</DIV>
-
-## A simple example
-
-The goal is to store ship entries in our directory, backing the "Seven Seas" example used throughout the Basic User's Guide. There are no schema elements shipped with ApacheDS covering our naval requirements. So we add some.
-
-Here is a sample entry for a ship in LDIF:
-
- :::text
- dn: cn=HMS Victory,ou=ships,o=sevenSeas
- objectClass: top
- objectClass: ship
- cn: HMS Victory
- numberOfGuns: 104
- description: a ship of the line of the Royal Navy
- description: built between 1759 and 1765
-
-A ship entry is comprised of a mandatory value for common name (cn) of the ship, description values and the number of guns (numberOfGuns). Thus a new object class ship and a new attribute type numberOfGuns have to be added to the schema. There are different ways to accomplish the task. In any case, we have to add the attribute type first, because the object class refers to it.
-
-#### attribute type numberOfGuns
-
-Here is the definition of our custom attribute type numberOfGuns formatted according to RFC 4512.
-
- :::text
- ( 1.3.6.1.4.1.18060.0.4.3.2.1
- NAME 'numberOfGuns' DESC 'Number of guns of a ship'
- EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
- SINGLE-VALUE
- )
-
-#### object class ship
-
-Custom object class ship is defined as follows
-
- :::text
- ( 1.3.6.1.4.1.18060.0.4.3.3.1
- NAME 'ship' DESC 'An entry which represents a ship'
- SUP top STRUCTURAL
- MUST cn MAY ( numberOfGuns $ description )
- )
-
-## Using Apache Directory Studio Schema Editor to load the new schema elements
-
-A very convenient way to add your own schema elements to Apache Directory Server is to use the Schema Editor of Apache Directory Studio. It is even possible to define/design them within the UI, but we opt here use a prepared file in OpenLDAP format and import it using Studio. This is a good choice if you have the schema to add already described that way.
-
-Our file sevenSeas.schema looks like this:
-
- :::text
- attributetype ( 1.3.6.1.4.1.18060.0.4.3.2.1
- NAME 'numberOfGuns'
- DESC 'Number of guns of a ship'
- EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
- SINGLE-VALUE
- )
-
- objectclass ( 1.3.6.1.4.1.18060.0.4.3.3.1
- NAME 'ship'
- DESC 'An entry which represents a ship'
- SUP top
- STRUCTURAL
- MUST cn
- MAY ( numberOfGuns $ description )
- )
-
-In Eclipse with the Apache Directory Studio plugins installed (or alternatively the standalone RCP application of Apache Directory Studio, if you prefer this), open the Schemas Editor :
-
-![Schema Editor](images/schema-editor.png)
-
-Now, create a new schema project. Here, you have a choice :
- * either you create a offline schema project
- * or you create a project that will pull the schema from an existing ApacheDS server (it must be running, and a connection must have been created in Studio)
-
-### Offline schema project
-
-You need to create a new schema project, and to select the targeted server (either ApacheDS or OpenLDAP) :
-
-![Select target server](images/select-target-server.png)
-
-Then select all the schema you want to use this is necessary if you are to extend an AttributeType or an ObjectClass in your own schema)
-
-### Connected schema project
-
-In this case, you will see all the existing schema in the ApacheDS server you are connected to :
-
-![Connected Schema Project](images/connected-schema-project.png)
-
-### Creating the new schema
-
-Create the new schema you want to add by clicking on the 'schema creation' icon, as shown in the following picture :
-
-![Create Schema](images/create-schema.png)
-
-Now, you can add the Attribute Type or ObjectClasses you need in this added schema (see how to create schema elements in Apache Directory Studio documentation).
-
-<DIV class="warning" markdown="1">
-Sadly, in this version, the modifications you have made on a schema won't be injected into the server. In fact, the existing schemas are loaded from the server, and every modification is applied locally, not on the remote server.
-
-In order to inject the modified schema, you need to export the modifications in LDIF format for ApacheDS, and to import this LDIF into the targeted ApacheDS server.
-</DIV>
-
-Once this is done, you hav to export the modifications in a format that will fit what is expected by ApacheDS. Right click on the schemas windows, select 'export-> Schemas for ApacheDS', and in the popup, select the schema you have added :
-
-![Export Schema](images/export-schema.png)
-
-### Importing the schema
-
-The last step is to import the newly created LDIF into your ApacheDS instance. Just import it as any other LDIF, it will create a new element in your server schema :
-![Import Schema](images/import-schema.png)
-
-You should see your schema into the list of supported schemas.
-
-<DIV class="warning" markdown="1">
-You must restart the server if you want to use the added AttributeTypes or ObjectClasses. The schema is currently not dynamic in ApacheDS
-</DIV>
diff --git a/content/apacheds/basic-ug/2.3.2-enabling-schema.mdtext b/content/apacheds/basic-ug/2.3.2-enabling-schema.mdtext
deleted file mode 100644
index 32c0764..0000000
--- a/content/apacheds/basic-ug/2.3.2-enabling-schema.mdtext
+++ /dev/null
@@ -1,204 +0,0 @@
-Title: 2.3.2 - Enabling Schema
-Navprev: 2.3.1-adding-schema-elements.html
-NavPrevText: 2.3.1 - Adding Schema Elements
-NavUp: 2.3-introducing-schema.html
-NavUpText: 2.3 - Introducing Schema
-NavNext: 3-basic-security.html
-NavNextText: 3 - Basic Security
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3.2 - Enabling Schema
-
-## Motivation
-
-
-
-<DIV class="info" markdown="1">
-<B>Is it always necessary to define my own schema elements?</B>
-No. ApacheDS comes with a comprehensive set of predefined, standardized schema elements (like inetOrgPerson). It is quite common to solely use the predefined schema. The same holds true for other directory servers, by the way.
-</DIV>
-
-In the following text the addition of user defined schema elements to the schema is described in tutorial style.
-
-## Browsing ApacheDS schemas
-
-LDAPv3 servers publish their schema via LDAP. Thus it is possible to list the schema elements with standard LDAP tools. For instance it is possible to use the ldapsearch command line tool to list all object classes
-
- :::text
- $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w ****** \
- -b "cn=schema" -s base "(objectclass=subschema)" objectclasses
- ...
- objectClasses: ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top
- STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $
- seeAlso $ description ) X-SCHEMA 'core' )
- ...
-
-The output (formatted as defines in RFC 4512) contains all things which are interesting to know about an object class (required attributes, optional attributes etc.), but is not easy to read by a human user. It is therefore often appropriate to use a GUI tool to browse the schema (which basically performs the same search operations but presents the output prettily). One option is Apache Directory Studio, an Eclipse based LDAP tool set which contains a powerful graphical Schema browser:
-
-![Schema brower](images/schema-browser-person.png)
-
-The techniques described above work for all LDAP v3 compliant servers. The ability to browse the schema gives us a chance to check whether our future changes to the schema really took place.
-
-The schema subsystem of ApacheDS 1.5 stores the schema elements as entries in the DIT. You can find them within a special partition with suffix ou=schema; simply browse the content with your favorite LDAP Browser. With Apache Directory Studio, it looks like this:
-
-![ApacheDS Schemas](images/schema-browser-tree.png)
-
-Browsing the schema like this gives a good impression of the ApacheDS implementation of the schema subsystem and an even better way to analyze effects during schema updates. But keep in mind that the storage scheme is server dependent; not all LDAP server implementations store the schema elements in the DIT.
-
-## Which OIDs should you use?
-
-If you plan to add custom schema elements, you need numerical OIDs (object identifiers) for them. If you implement schema elements defined somewhere else (like eduPerson), you can use the OIDs which are are part of their descriptions. But what if you plan to design your own?
-
-
-### Some OID background information
-
-An OID is a string formed by a series of numbers which are separated by a dot (like "12.4.1971.0.1"). Many elements in directory world use OIDs: Controls, extended operations and schema elements (like "2.5.6.6" for object class person). They identify these objects in a unique fashion and therefore avoid name clashes.
-
-How is this accomplished? OIDs are assigned hierarchically: The owner of an OID is allowed to create new IDs by simply appending numbers. S/he is also allowed to delegate ownership of newly created OIDs to someone else. This way every person or organization is able to allocate an arbitrary number of new OIDs after obtaining one from "higher command", and they are still unique world-wide.
-
-
-### OIDs in the example
-
-OIDs starting with **1.3.6.1.4.1** represent IANA-registered private enterprises, Apache Software Foundation for instance owns the OID **1.3.6.1.4.1.18060**. The **1.3.6.1.4.1.18060.0** has been assigned to the Apache Directory project by the ASF, and we have decided to use the branch "1.3.6.1.4.1.18060.0.4.3" for schema elements used as examples in the documentation.
-
-### OIDs for your own custom schema elements
-
-If you just want to play around with the schema subsystem, want to explore the capabilities, or learn about LDAP in general, you will probably not mind about unique OIDs. This is comparable to using self-signed certificates for SSL experiments. But it is nevertheless necessary that you use OIDs which are not used in the schema yet (otherwise addition will fail).
-
-But if you plan to use your schema elements in a production environment (an object class for instance which describes employees with company specific attributes), or to ship your schema elements with a product (e.g. a CRM or portal solution), you should definitely use unique OIDs. In order to do this you have to obtain OIDs from a branch assigned to your company or organization (your network administrators will be helpful here, do not invent OIDs without asking or obtaining a branch from someone who owns the prefix OID). If your company or organization does not own on OID, there are several option to obtain one, one is the IANA (Internet Assigned Numbers Authority). It is also possible to get an OID branch as an individual.
-
-
-<DIV class="info" markdown="1">
-**Obtaining a PEN**
-You can ask for your own PEN (Private Enterprise Number) here : http://pen.iana.org/pen/PenApplication.page
-It takes a few weeks to have a private OID assigned to you, so be patient, or do it early !
-</DIV>
-
-## A simple example
-
-The goal is to store ship entries in our directory, backing the "Seven Seas" example used throughout the Basic User's Guide. There are no schema elements shipped with ApacheDS covering our naval requirements. So we add some.
-
-Here is a sample entry for a ship in LDIF:
-
- :::text
- dn: cn=HMS Victory,ou=ships,o=sevenSeas
- objectClass: top
- objectClass: ship
- cn: HMS Victory
- numberOfGuns: 104
- description: a ship of the line of the Royal Navy
- description: built between 1759 and 1765
-
-A ship entry is comprised of a mandatory value for common name (cn) of the ship, description values and the number of guns (numberOfGuns). Thus a new object class ship and a new attribute type numberOfGuns have to be added to the schema. There are different ways to accomplish the task. In any case, we have to add the attribute type first, because the object class refers to it.
-
-#### attribute type numberOfGuns
-
-Here is the definition of our custom attribute type numberOfGuns formatted according to RFC 4512.
-
- :::text
- ( 1.3.6.1.4.1.18060.0.4.3.2.1
- NAME 'numberOfGuns' DESC 'Number of guns of a ship'
- EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
- SINGLE-VALUE
- )
-
-#### object class ship
-
-Custom object class ship is defined as follows
-
- :::text
- ( 1.3.6.1.4.1.18060.0.4.3.3.1
- NAME 'ship' DESC 'An entry which represents a ship'
- SUP top STRUCTURAL
- MUST cn MAY ( numberOfGuns $ description )
- )
-
-## Using Apache Directory Studio Schema Editor to load the new schema elements
-
-A very convenient way to add your own schema elements to Apache Directory Server is to use the Schema Editor of Apache Directory Studio. It is even possible to define/design them within the UI, but we opt here use a prepared file in OpenLDAP format and import it using Studio. This is a good choice if you have the schema to add already described that way.
-
-Our file sevenSeas.schema looks like this:
-
- :::text
- attributetype ( 1.3.6.1.4.1.18060.0.4.3.2.1
- NAME 'numberOfGuns'
- DESC 'Number of guns of a ship'
- EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
- SINGLE-VALUE
- )
-
- objectclass ( 1.3.6.1.4.1.18060.0.4.3.3.1
- NAME 'ship'
- DESC 'An entry which represents a ship'
- SUP top
- STRUCTURAL
- MUST cn
- MAY ( numberOfGuns $ description )
- )
-
-In Eclipse with the Apache Directory Studio plugins installed (or alternatively the standalone RCP application of Apache Directory Studio, if you prefer this), open the Schemas Editor :
-
-![Schema Editor](images/schema-editor.png)
-
-Now, create a new schema project. Here, you have a choice :
- * either you create a offline schema project
- * or you create a project that will pull the schema from an existing ApacheDS server (it must be running, and a connection must have been created in Studio)
-
-### Offline schema project
-
-You need to create a new schema project, and to select the targeted server (either ApacheDS or OpenLDAP) :
-
-![Select target server](images/select-target-server.png)
-
-Then select all the schema you want to use this is necessary if you are to extend an AttributeType or an ObjectClass in your own schema)
-
-### Connected schema project
-
-In this case, you will see all the existing schema in the ApacheDS server you are connected to :
-
-![Connected Schema Project](images/connected-schema-project.png)
-
-### Creating the new schema
-
-Create the new schema you want to add by clicking on the 'schema creation' icon, as shown in the following picture :
-
-![Create Schema](images/create-schema.png)
-
-Now, you can add the Attribute Type or ObjectClasses you need in this added schema (see how to create schema elements in Apache Directory Studio documentation).
-
-<DIV class="warning" markdown="1">
-Sadly, in this version, the modifications you have made on a schema won't be injected into the server. In fact, the existing schemas are loaded from the server, and every modification is applied locally, not on the remote server.
-
-In order to inject the modified schema, you need to export the modifications in LDIF format for ApacheDS, and to import this LDIF into the targeted ApacheDS server.
-</DIV>
-
-Once this is done, you hav to export the modifications in a format that will fit what is expected by ApacheDS. Right click on the schemas windows, select 'export-> Schemas for ApacheDS', and in the popup, select the schema you have added :
-
-![Export Schema](images/export-schema.png)
-
-### Importing the schema
-
-The last step is to import the newly created LDIF into your ApacheDS instance. Just import it as any other LDIF, it will create a new element in your server schema :
-![Import Schema](images/import-schema.png)
-
-You should see your schema into the list of supported schemas.
-
-<DIV class="warning" markdown="1">
-You must restart the server if you want to use the added AttributeTypes or ObjectClasses. The schema is currently not dynamic in ApacheDS
-</DIV>
diff --git a/content/apacheds/basic-ug/3-basic-security.mdtext b/content/apacheds/basic-ug/3-basic-security.mdtext
deleted file mode 100644
index e8abe77..0000000
--- a/content/apacheds/basic-ug/3-basic-security.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 3 - Basic Security
-NavPrev: 2.3.2-enabling-schema.html
-NavPrevtext: 2.3.2 - Enabling Schema
-NavUp: ../basic-user-guide.html
-NavUpText: Basic User Guide
-NavNext: 3.1-authentication-options.html
-NavNextText: 3.1 - Authentication options
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3 - Basic Security
-
-This chapter expose the basic security configuration you can setup. It covers simple authentication, authorization and SSL.
-
-## Table of content
-
-* [3.1 - Authentication options](3.1-authentication-options.html)
-* [3.2 - Basic authorization](3.2-basic-authorization.html)
-* [3.3 - How to enable SSL](3.3-enabling-ssl.html)
diff --git a/content/apacheds/basic-ug/3.1-authentication-options.mdtext b/content/apacheds/basic-ug/3.1-authentication-options.mdtext
deleted file mode 100644
index 7473f1d..0000000
--- a/content/apacheds/basic-ug/3.1-authentication-options.mdtext
+++ /dev/null
@@ -1,398 +0,0 @@
-Title: 3.1 - Authentication options
-Navprev: 3-basic-security.html
-NavPrevText: 3 - Basic Security
-NavUp: 3-basic-security.html
-NavUpText: 3 - Basic Security
-NavNext: 3.2-basic-authorization.html
-NavNextText: 3.2 - Basic authorization
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1 - Authentication options
-
-This section describes the authentication options of ApacheDS 2.0. Anonymous and simple binds are supported, as well as SASL mechanisms. Configuring and using the first two of them is described below with the help of examples.
-
-[TOC]
-
-## What is authentication?
-
-*Authentication* is the process of determining whether someone (or something) in fact is what he/she/it asserts to be.
-
-Within ApacheDS you will likely want to authenticate clients in order to check whether they are allowed to read, add or manipulate certain data stored within the directory. The latter, i.e. whether an authenticated client is permitted to do something, is deduced during *authorization*.
-
-Quite often, the process of authentication is delegated to a directory service by other software components. Because in doing so, authentication data (e.g. username, password) and authorization data (e.g. group relationships) are stored and managed centrally in the directory, and all connected software solutions benefit from it. The integration sections of this guide provide examples for Apache Tomcat, Apache HTTP servers, and others.
-
-ApacheDS 2.0 supports simple authentication and anonymous binds while storing passwords within _userPassword_ attributes in user entries. Passwords can be stored in clear text or one-way encrypted with a hash algorithm like MD5 or SHA1. Since version 1.5.1, SASL mechanism are supported as well. We start with anonymous binds.
-
-## Simple binds
-
-Authentication via simple bind is widely used. The method is supported by ApacheDS 2.0 for all person entries stored within any partition, if they contain a password attribute. How does it work? An LDAP client provides the DN of a user entry and a password to the server, the parameters of the bind operation. ApacheDS checks whether the given password is the same as the one stored in the _userpassword_ attribute of the given entry. If not, the bind operation fails (LDAP error code 49, LDAP_INVALID_CREDENTIALS), and the user is not authenticated.
-
-### Using command line tools
-
-Assume this entry from the Seven Seas partition is stored within the directory (only a fragment with the relevant attributes is shown).
-
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- objectclass: person
- objectclass: organizationalPerson
- cn: Horatio Hornblower
- sn: Hornblower
- userpassword: pass
- ...
-
-In the following search command, a user tries to bind with the given DN (option -D) but a wrong password (option -w). The bind fails and the command terminates without performing the search.
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
- -w wrong -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
- ldap_simple_bind: Invalid credentials
- ldap_simple_bind: additional info: Bind failed: null
-
-If the user provides the correct password during the call of the ldapsearch command, the bind operation succeeds and the seach operation is performed afterwards.
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
- -w pass -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
- version: 1
- dn: ou=people,o=sevenSeas
- ou: people
- description: Contains entries which describe persons (seamen)
- objectclass: organizationalUnit
- objectclass: top
-
-### Binds from Java components using JNDI
-
-Using JNDI, authentication via simple binds is accomplished by appropriate configuration. One option is to provide the parameters in a Hashtable object like this
-
- :::java
- import java.util.Hashtable;
-
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.naming.NamingEnumeration;
- import javax.naming.NamingException;
-
- public class SimpleBindDemo {
-
- public static void main(String[] args) throws NamingException {
-
- if (args.length < 2) {
- System.err.println("Usage: java SimpleBindDemo <userDN> <password>");
- System.exit(1);
- }
-
- Hashtable env = new Hashtable();
- env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
- env.put(Context.PROVIDER_URL, "ldap://zanzibar:10389/o=sevenSeas");
-
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
- env.put(Context.SECURITY_PRINCIPAL, args[0]);
- env.put(Context.SECURITY_CREDENTIALS, args[1]);
-
- try {
- Context ctx = new InitialContext(env);
- NamingEnumeration enm = ctx.list("");
-
- while (enm.hasMore()) {
- System.out.println(enm.next());
- }
-
- enm.close();
- ctx.close();
- } catch (NamingException e) {
- System.out.println(e.getMessage());
- }
- }
- }
-
-
-If the DN of a user entry and the fitting password are provided as command line arguments, the program binds successfully and performs a search:
-
- $ java SimpleBindDemo "cn=Horatio Hornblower,ou=people,o=sevenSeas" pass
- ou=people: javax.naming.directory.DirContext
- ou=groups: javax.naming.directory.DirContext
-
-On the other hand, providing an incorrect password results in a failed bind operation. JNDI maps it to a _NamingException_:
-
- $ java SimpleBindDemo "cn=Horatio Hornblower,ou=people,o=sevenSeas" quatsch
- [LDAP: error code 49 - Bind failed: null]
-
-In real life, you obviously want to separate most of the configuration data from the source code, for instance with the help of the _jndi.properties_ file.
-
-## Passwords stored one-way encrypted
-
-If passwords are stored in the directory in clear like above, the administrator (_uid=admin,ou=system_) is able to read them. This holds true even if authorization is enabled. The passwords would also be visible in exported LDIF files. This is often unacceptable.
-
-<DIV class="warning" markdown="1">
-Not only the administrator will be able to read your password, or be visible in LDIF files, but if one does not use SSL, the password is transmitted in clear text above the wire...
-</DIV>
-
-### Passwords not stored in clear text
-
-ApacheDS does also support simple binds, if user passwords are stored one-way encrypted. An LDAP client, which creates user entries, applies a hash-function (SHA for instance) to the user passwords beforehand, and stores the users with these fingerprints as _userpassword_ values (instead of the clear text values), for instance:
-
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- objectclass: person
- objectclass: organizationalPerson
- cn: Horatio Hornblower
- sn: Hornblower
- userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
- ...
-
-The value "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=" means that _SHA_ (Secure Hash Algorithm) was applied to the password, and "nU4eI71bcnBGqeO0t9tXvY1u5oQ=" was the result (Base-64 encoded). Please note that it is not possible to calculate the source ("pass" in our case) back from the result. This is why it is called one-way encrypted -- it is rather difficult to decrypt it. One may guess many times, calculate the hash values (the algorithms are public) and compare the result. But this would take a long time, especially if you choose a more complex password than we did ("pass").
-
-### But how to obtain the hash value for a password?
-
-With some lines of code, it is quite easy to accomplish this task programatically in Java:
-
- :::java
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import sun.misc.BASE64Encoder;
-
- public class DigestDemo {
- public static void main(String[] args) throws NoSuchAlgorithmException {
- String password = "pass";
- String algorithm = "SHA";
-
- // Calculate hash value
- MessageDigest md = MessageDigest.getInstance(algorithm);
- md.update(password.getBytes());
- byte[] bytes = md.digest();
-
- // Print out value in Base64 encoding
- BASE64Encoder base64encoder = new BASE64Encoder();
- String hash = base64encoder.encode(bytes);
- System.out.println('{'+algorithm+'}'+hash);
- }
- }
-
-The output is "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=".
-
-Another option is to use command line tools to calculate the hash value; the [OpenSSL](http://www.openssl.org) project provides such stuff. Furthermore many UI LDAP tools allow you to store passwords automatically encrypted with the hash algorithm of your choice. See below [Apache Directory Studio](https://directory.apache.org/studio/) as an example. The dialog automatically shows up if a _userPassword_ attribute is to be manipulated (added, changed).
-
-![Password Edit](images/password-edit-ls.png)
-
-### From an LDAP client point of view
-
-From an LDAP client point of view, the behavior during authentication is the same as with passwords stored in clear. During a simple bind, a client sends DN and password (unencrypted, i.e. no hash algorithm applied) to the server. If ApacheDS detects, that the user password for the given DN is stored in the directory with a hash function applied, it calculates the hash value of the given password with the appropriate algorithm (this is why the algorithm is stored together with the hashed password). Afterwards it compares the result with the stored attribute value. In case of a match, the bind operation ends successfully:
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
- -w pass -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
- version: 1
- dn: ou=people,o=sevenSeas
- ou: people
- description: Contains entries which describe persons (seamen)
- objectclass: organizationalUnit
- objectclass: top
-
-Providing the hashed value of the _userPassword_ attribute instead of the original value will be rejected by ApacheDS:
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
- -w "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=" -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
- ldap_simple_bind: Invalid credentials
- ldap_simple_bind: additional info: Bind failed: null
-
-This is intended. If someone was able to catch this value (from an LDIF export for instance), s/he must still provide the password itself in order to get authenticated.
-
-<DIV class="note" markdown="1">
-<b>Be Warned: Limited security added</b>
-
-Please note that storing user passwords one-way encrypted only adds limited security. During the bind operation, the credentials are still transmitted unencrypted, if no SSL/TLS communication is used (thus you should definitely consider to do so).
-
-Furthermore, if someone gets an LDIF file with userpassword values digested with SHA etc., s/he may be able to determine some of the passwords with brute force. Calculation of hash functions can be done very fast, and the attacker can attempt millions of values with ease, without you getting notice of it. Therefore protect your data, even if one-way encryption is applied to the passwords!
-</DIV>
-
-
-## Anonymous binds
-
-In some occasions it is appropriate to allow LDAP clients to permit operations without authentication. If data managed by the directory service is well known by all clients, it is not uncommon to allow search operations (not manipulation) within this data to all clients -- without providing credentials. An example for this are enterprise wide telephone books, if clients access the directory service from the intranet.
-
-### Enable/disable anonymous binds
-
-Anonymous access is enabled by default. Changing this is one of the basic configuration tasks (see [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)).
-
-### Example: Server behavior with anonymous binds disabled
-
-Assume anonymous binds are disabled and our sample partition _Seven Seas_ present in the server. Here is an example with a search operation performed by a command line tool as a client. It tries to connect anonymously (no DN and password given, i.e. options -D and -w missing) to the server. Afterwards the entry _ou=people,o=sevenSeas_ should be displayed.
-
-See the command and the resulting error message provided by the server below
-
- $ ldapsearch -h zanzibar -p 10389 -b "ou=people,o=sevenSeas" -s one "(objectclass=*)"
- ldap_search: Insufficient access
- ldap_search: additional info: failed on search operation: Anonymous binds have been disabled!
-
-### Example: Server behavior with anonymous binds enabled
-
-Now the same command performed against ApacheDS 1.5 with anonymous access enabled as described above. The behavior is different -- the entry is visible.
-
- $ ldapsearch -h zanzibar -p 10389 -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
- version: 1
- dn: ou=people,o=sevenSeas
- ou: people
- description: Contains entries which describe persons (seamen)
- objectclass: organizationalUnit
- objectclass: top
-
-### Other clients
-
-The examples above have used a command line tool. Of course graphical tools and programmatical access (JNDI etc.) allow anonymous binds as well. Below is a screen shot from the configuration dialog of [Apache Directory Studio](https://directory.apache.org/studio/) as an example. During configuration of the connection data ("New LDAP Connection", for instance), the option _Anonymous Authentication_ leads to anonymous binds. Other UI tools offer this feature as well.
-
-![Authentication options](images/authentication-options-ls.png)
-
-<DIV class="note" markdown="1">
-**Use this feature wisely**
-
-With anonymous access enabled it is not only possible to search the directory without providing username and password. With autorization disabled, anonymous users may also be able to modify data. It is therefore highly recommended to enable and configure the authorization subsystem as well. Learn more about authorization in the [3.2. Basic authorization] section.
-</DIV>
-
-## How to authenticate a user by uid and password?
-
-If you want to use simple binds with user DN and password within a Java component, in order to authenticate users programatically, in practice one problem arises: Most users do not know their DN. Therefore they will not be able to enter it. And even if they know it, it would be frequently very laborious due to the length of the DN. It would be easier for a user if s/he only has to probvide a short, unique _ID_ and the password, like in this web form
-
-![Confluence Logon](images/confluence-logon.png)
-
-Usually the ID is an attribute within the user's entry. In our sample data (Seven Seas), each user entry contains the _uid_ attribute, for instance uid=hhornblo for Captain Hornblower:
-
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- objectclass: person
- objectclass: organizationalPerson
- objectclass: inetOrgPerson
- objectclass: top
- cn: Horatio Hornblower
- description: Capt. Horatio Hornblower, R.N
- givenname: Horatio
- sn: Hornblower
- uid: hhornblo
- mail: hhornblo@royalnavy.mod.uk
- userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
-
-But how to authenticate a user who provides "hhornblo"/"pass" instead of "cn=Horatio Hornblower,ou=people,o=sevenSeas"/"pass" with the help of ApacheDS?
-
-### An algorithm
-
-In order to accomplish this task programmatically, one option is to perform the following steps
-
-#### Arguments
-* _uid_ of a user (e.g. "hhornblo")
-* _password_ proclaimed to be correct for the user
-
-#### Steps
-
-* Bind to ApacheDS anonymously, or with the DN of a technical user. In both cases it must be possible to search the directory afterwards (authorization has to be configured that way)
-* Perform a search operation with an appropriate filter to find the user entry for the given ID, in our case "(&(objectClass=inetorgperson)(uid=hhornblo))"
- * If the search result is empty, the user does not exist -- terminate
- * If the search result contains more than one entry, the given ID is not unique, this is likely a data error within your directory
-* Bind to ApacheDS with the DN of the entry found in the previous search, and the _password_ provided as argument
- * If the bind operation fails, the password is wrong, and the result is _false_ (not authenticated)
- * If the bind is successful, authenticate the user
-
-### Sample code with JNDI
-
-The algorithm described above is implemented by many software solutions which are able to integrate LDAP directories. You will learn more about some of them and their configuration options within a later section of this guide.
-
-For illustration purposes, here is a simple Java program which performs the steps with the help of JNDI. It uses anonymous bind for the first step, hence it must be enabled (replace with a technical user, if it better meets your requirements).
-
- :::java
- import java.util.Hashtable;
- import javax.naming.Context;
- import javax.naming.NamingEnumeration;
- import javax.naming.NamingException;
- import javax.naming.directory.DirContext;
- import javax.naming.directory.InitialDirContext;
- import javax.naming.directory.SearchControls;
- import javax.naming.directory.SearchResult;
-
- public class AdvancedBindDemo {
-
- public static void main(String[] args) throws NamingException {
-
- if (args.length < 2) {
- System.err.println("Usage: java AdvancedBindDemo <uid> <password>");
- System.exit(1);
- }
-
- Hashtable env = new Hashtable();
- env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
- env.put(Context.PROVIDER_URL, "ldap://zanzibar:10389/");
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
-
- String uid = args[0];
- String password = args[1];
-
- DirContext ctx = null;
-
- try {
- // Step 1: Bind anonymously
- ctx = new InitialDirContext(env);
-
- // Step 2: Search the directory
- String base = "o=sevenSeas";
- String filter = "(&(objectClass=inetOrgPerson)(uid={0}))";
- SearchControls ctls = new SearchControls();
- ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
- ctls.setReturningAttributes(new String[0]);
- ctls.setReturningObjFlag(true);
- NamingEnumeration enm = ctx.search(base, filter, new String[] { uid }, ctls);
-
- String dn = null;
-
- if (enm.hasMore()) {
- SearchResult result = (SearchResult) enm.next();
- dn = result.getNameInNamespace();
-
- System.out.println("dn: "+dn);
- }
-
- if (dn == null || enm.hasMore()) {
- // uid not found or not unique
- throw new NamingException("Authentication failed");
- }
-
- // Step 3: Bind with found DN and given password
- ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, dn);
- ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);
- // Perform a lookup in order to force a bind operation with JNDI
- ctx.lookup(dn);
- System.out.println("Authentication successful");
-
- enm.close();
- } catch (NamingException e) {
- System.out.println(e.getMessage());
- } finally {
- ctx.close();
- }
- }
- }
-
-Some example calls:
-
- $ java AdvancedBindDemo unknown sailor
- Authentication failed
-
- $ java AdvancedBindDemo hornblo pass
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- Authentication successful
-
- $ java AdvancedBindDemo hornblo quatsch
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- [LDAP: error code 49 - Bind failed: null]
-
-The examples consist of an unknown user (an _inetOrgPerson_ entry with uid=unknown does not exist), a successful authenttication, and an attempt with an existing uid but a wrong password.
-
-## Resources
-
-* [RFC 2829](http://www.faqs.org/rfcs/rfc2829.html) Authentication Methods for LDAP
-* [The Secure Hash Algorithm Directory](http://www.secure-hash-algorithm-md5-sha-1.co.uk/) MD5, SHA-1 and HMAC Resources
\ No newline at end of file
diff --git a/content/apacheds/basic-ug/3.2-basic-authorization.mdtext b/content/apacheds/basic-ug/3.2-basic-authorization.mdtext
deleted file mode 100644
index f8d728e..0000000
--- a/content/apacheds/basic-ug/3.2-basic-authorization.mdtext
+++ /dev/null
@@ -1,549 +0,0 @@
-Title: 3.2 - Basic authorization
-Navprev: 3.1-authentication-options.html
-NavPrevText: 3.1 - Authentication options
-NavUp: 3-basic-security.html
-NavUpText: 3 - Basic Security
-NavNext: 3.3-enabling-ssl.html
-NavNextText: 3.3 - How to enable SSL
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.2 - Basic authorization
-
-This section describes the default authorization functionality of ApacheDS 1.5, which is very simple. On the other hand, it is inadequate for most serious deployments. Therefore a basic example to the "real" authorization subsystem is provided as well.
-
-[TOC]
-
-## What is authorization?
-
-After authentication of a user or an application (or more generally an LDAP client) against the directory server (or attaining anonymous access respectively), certain LDAP operations will be granted or rejected, according to configuration and certain rules. This process of granting access is called authorization.
-
-Authorization for directory operations is not strictly standardized in the LDAP world, [RFC 2829 - Authentication Methods for LDAP](http://www.faqs.org/rfcs/rfc2829.html) describes various scenarios and concepts, but does not enforce a concrete implementation. Thus each product comes with its own authorization feature. So does ApacheDS. A powerful authorization subsystem is provided since version 0.9.3, but disabled as a default.
-
-### Authorization for directory operations vs. group membership
-
-In order to accomplish their authorization functionality, software components often take advantage of LDAP groups stored within the directory. _groupOfNames_ and _groupOfUniqueNames_ are common object classes for groups entries; they contain the DNs of their members (users, other groups) as attribute values.
-
-In order to illustrate this, the "Seven Seas" example partition contains such group entries below "ou=groups,o=sevenSeas". Here the entry of a group describing the HMS Bounty crew (before the mutiny) in LDIF format.
-
- dn: cn=HMS Bounty,ou=crews,ou=groups,o=sevenSeas
- objectclass: groupOfUniqueNames
- objectclass: top
- cn: HMS Bounty
- uniquemember: cn=William Bligh,ou=people,o=sevenSeas
- uniquemember: cn=Fletcher Christian,ou=people,o=sevenSeas
- uniquemember: cn=John Fryer,ou=people,o=sevenSeas
- ...
-
-In such a scenario, a user, who is directly or indirectly member of a certain group is permitted to do something. The software component acts as a normal LDAP client and determines group belonging with the help of ordinary search operations. This is widely used but has nothing to do with the authorization for directory operations as described in this section (except that the client needs the permission to search the data). Learn more about best practices in this area in the article [Practices in Directory Groups](http://middleware.internet2.edu/dir/groups/docs/internet2-mace-dir-groups-best-practices-200210.htm). Further examples in this guide are the Tomcat and Apache HTTPD integration sections.
-
-## Default authorization behavior for directory operations
-
-Without access controls enabled all entries are accessible and alterable by all: even anonymous users. There are however some minimal built-in rules for protecting users and groups within the server without having to turn on the ACI subsystem.
-
-### Sample data within "ou=users,ou=system"
-
-In addition to our brave sailors below _ou=people,o=sevenSeas_, assume the following to entries present within _ou=users,ou=system_:
-
-![Authorization Sample Entries](images/authorization-sample-entries.png)
-
- dn: cn=Tori Amos,ou=users,ou=system
- objectclass: person
- objectclass: top
- sn: Amos
- cn: Tori Amos
- userpassword: amos
-
- dn: cn=Kate Bush,ou=users,ou=system
- objectclass: person
- objectclass: top
- sn: Bush
- cn: Kate Bush
- userpassword: bush
-
-They are used in the following examples, in conjunction with _o=sevenSeas_, to describe the default authorization rules.
-
-### Rules and sample operations
-
-Without ACIs the server automatically protects, hides, the admin user from everyone but the admin user. Here a sample search operation in order to demonstrate this protection. The same command is submitted three times with different users.
-
- $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
- -b "ou=system" -s one "(uid=admin)" dn
- version: 1
- dn: uid=admin,ou=system
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -b "ou=system" -s one "(uid=admin)" dn
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Tori Amos,ou=users,ou=system" -w amos \\
- -b "ou=system" -s one "(uid=admin)" dn
-
- $
-
-Users cannot see other user entries under the 'ou=users,ou=system' entry. So placing new users there automatically protects them. Placing new users anywhere else exposes them.
-
- $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
- -b "ou=users,ou=system" -s one "(objectclass=*)" dn
- version: 1
- dn: cn=Tori Amos,ou=users,ou=system
-
- dn: cn=Kate Bush,ou=users,ou=system
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Kate Bush,ou=users,ou=system" -w bush \\
- -b "ou=users,ou=system" -s one "(objectclass=*)" dn
- version: 1
- dn: cn=Kate Bush,ou=users,ou=system
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -b "ou=users,ou=system" -s one "(objectclass=*)" dn
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -b "ou=people,o=sevenSeas" -s one "(objectclass=*)" dn
- version: 1
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
-
- dn: cn=William Bush,ou=people,o=sevenSeas
-
- dn: cn=Thomas Masterman Hardy,ou=people,o=sevenSeas
-
- dn: cn=Cornelius Buckley,ou=people,o=sevenSeas
-
- dn: cn=William Bligh,ou=people,o=sevenSeas
- ...
- $
-
-Groups defined using _groupOfNames_ or _groupOfUniqueNames_ under the 'ou=groups,ou=system' are also protected from access or alteration by anyone other than the admin user. Again this protection is not allowed anywhere else but under these entries.
-
-### Is this sufficient?
-
-For simple configurations the described rules should provide adequate protection but it lacks flexibility. For advanced configurations users should enable the ACI subsystem. This however shuts down access to everything by everyone except the admin user which bypasses the ACI subsystem. Directory administrators should look at the documentation on how to specify access control information in the Advanced User's Guide.
-
-## Simple example for the ACI subsystem
-
-As an appetizer for the stunning ACI subsystem (ACI = access control item) within ApacheDS, we provide a simple yet realistic example. It manifests the following requirements
-
-### Requirements met
-
-* Suffix "o=sevenSeas" used as Access Control Specific Area
-* User "cn=Horatio Nelson,ou=people,o=sevenSeas" should be able to perform all operations (delete, add, ...) below the base "o=sevenSeas"
-* Other users and anonymous users should only be able to search and compare (no add, modify etc.)
-* Other users and anonymous users should not be able to read the userPassword attribute
-
-### Enable the ACI Subsystem
-
-The authorization (ACI) subsystem is disabled by default. It is recommended that you enable it using the _Apache Directory Studio_ configuration editor as follows :
-
-![Enable access control](images/enable-access-control.png)
-
-However, ACI subsystem can also be enabled with an ldapmodify operation. [This technique discussed in the Advanced User Guide](apacheds/advanced-ug/4.2.3-enabling-access-control.html).
-
-A restart of the server is necessary for this change to take effect.
-
-### Further configuration tasks to perform afterwards
-
-1. Create an operational attribute _administrativeRole_ with value "accessControlSpecificArea" in the entry "o=sevenSeas".
-2. Create a subentry subordinate to "o=sevenSeas" to grant all operations' permissions to "cn=Horatio Nelson,ou=people,o=sevenSeas", who acts as directory manager
-
-The subentry should contain the following attributes and values:
-
- cn="sevenSeasAuthorizationRequirementsACISubentry"
- subtreeSpecification="{}"
- prescriptiveACI="{
- identificationTag "directoryManagerFullAccessACI",
- precedence 11,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- name { "cn=Horatio Nelson,ou=people,o=sevenSeas" }
- },
- userPermissions
- {
- {
- protectedItems
- {
- entry, allUserAttributeTypesAndValues
- },
- grantsAndDenials
- {
- grantAdd, grantDiscloseOnError, grantRead,
- grantRemove, grantBrowse, grantExport, grantImport,
- grantModify, grantRename, grantReturnDN,
- grantCompare, grantFilterMatch, grantInvoke
- }
- }
- }
- }
- }"
-
-3. A new attribute value should added to the previously created Subentry's prescriptiveACI attribute to grant search and compare permissions to all users.
-
-The new value:
-
- prescriptiveACI="{
- identificationTag "allUsersSearchAndCompareACI",
- precedence 10,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- allUsers
- },
- userPermissions
- {
- {
- protectedItems
- {
- entry, allUserAttributeTypesAndValues
- },
- grantsAndDenials
- {
- grantRead, grantBrowse, grantReturnDN,
- grantCompare, grantFilterMatch, grantDiscloseOnError
- }
- }
- }
- }
- }"
-
-4. A new attribute value should added to the previously created Subentry's prescriptiveACI attribute to deny search and compare permissions for _userPassword_ attribute to all users.
-
-The new value:
-
- prescriptiveACI="{
- identificationTag "preventAllUsersFromReadingUserPasswordAttributeACI",
- precedence 10,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- allUsers
- },
- userPermissions
- {
- {
- protectedItems
- {
- attributeType { userPassword }
- },
- grantsAndDenials
- {
- denyRead, denyCompare, denyFilterMatch
- }
- }
- }
- }
- }"
-
-The two values given in 3 and 4 can be combined in a single value as:
-
- prescriptiveACI="{
- identificationTag "allUsersACI",
- precedence 10,
- authenticationLevel none,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- allUsers
- },
- userPermissions
- {
- {
- protectedItems { entry, allUserAttributeTypesAndValues },
- grantsAndDenials { grantRead, grantBrowse, grantReturnDN,
- grantCompare, grantFilterMatch, grantDiscloseOnError }
- },
- {
- protectedItems { attributeType { userPassword } },
- grantsAndDenials { denyRead, denyCompare, denyFilterMatch }
- }
- }
- }
- }"
-
-### LDIF for this configuration
-
-The following LDIF file ([^authz_sevenSeas.ldif]) provides a set of changes made to directory entries in the "Seven Seas" data. In total it performs the steps described above.
-
- # File authz_sevenSeas.ldif
- #
- # Create an operational attribute "administrativeRole"
- # with value "accessControlSpecificArea" in the entry "o=sevenSeas".
- #
- dn: o=sevenSeas
- changetype: modify
- add: administrativeRole
- administrativeRole: accessControlSpecificArea
-
- # Create a subentry subordinate to "o=sevenSeas" to grant all operations' permissions
- # to "cn=Horatio Nelson,ou=people,o=sevenSeas", to grant search and compare permissions
- # to all users and to deny search and compare permissions for userPassword attribute to all users.
- #
- dn: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
- changetype: add
- objectclass: top
- objectclass: subentry
- objectclass: accessControlSubentry
- cn: sevenSeasAuthorizationRequirementsACISubentry
- subtreeSpecification: {}
- prescriptiveACI: {
- identificationTag "directoryManagerFullAccessACI",
- precedence 11,
- authenticationLevel simple,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- name { "cn=Horatio Nelson,ou=people,o=sevenSeas" }
- },
- userPermissions
- {
- {
- protectedItems
- {
- entry, allUserAttributeTypesAndValues
- },
- grantsAndDenials
- {
- grantAdd, grantDiscloseOnError, grantRead,
- grantRemove, grantBrowse, grantExport, grantImport,
- grantModify, grantRename, grantReturnDN,
- grantCompare, grantFilterMatch, grantInvoke
- }
- }
- }
- }
- }
- prescriptiveACI: {
- identificationTag "allUsersACI",
- precedence 10,
- authenticationLevel none,
- itemOrUserFirst userFirst:
- {
- userClasses
- {
- allUsers
- },
- userPermissions
- {
- {
- protectedItems { entry, allUserAttributeTypesAndValues },
- grantsAndDenials { grantRead, grantBrowse, grantReturnDN,
- grantCompare, grantFilterMatch, grantDiscloseOnError }
- },
- {
- protectedItems { attributeType { userPassword } },
- grantsAndDenials { denyRead, denyCompare, denyFilterMatch }
- }
- }
- }
- }
-
-To apply this configuration to the sample data partition, you can perform an _ldapmodify_ with the LDIF as agrument:
-
- $ ldapmodify -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret -f authz_sevenSeas.ldif
- modifying entry o=sevenSeas
-
- adding new entry cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
- $
-
-It is also possible to use graphical tools; some of them offer the feature to perform operations given in LDIF.
-
-## Verification, that it works
-
-After successfully applying the changes to the sample partition, one may ask how to check whether it works. We therefore perform some operations with the help of command line tools. Some will be permitted, some will not (and cause an appropriate error message). It would also be able to check this with the help of graphical tools (you might like to do this instead). But it is easier to document the parameters used with the help command line arguments.
-
-### Performing some search operations in order to read data
-
-Bind as user "William Bush" and search for entries which match "(uid=hhornblo)". Expected behavior: We are able to read the attributes of entry "cn=Horatio Hornblower,ou=people,o=sevenSeas" (the only entry which matches the filter). The password attribute should not be visible. It works as desired:
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -b "o=sevenSeas" -s sub "(uid=hhornblo)"
- version: 1
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- mail: hhornblo@royalnavy.mod.uk
- objectclass: person
- objectclass: organizationalPerson
- objectclass: inetOrgPerson
- objectclass: top
- cn: Horatio Hornblower
- uid: hhornblo
- givenname: Horatio
- description: Capt. Horatio Hornblower, R.N
- sn: Hornblower
-
-In the described configuration, the user "Horatio Nelson" acts as a directory manager below "o=sevenSeas". Hence he should basically be allowed to do everything. He should even be able to see other users' _userPassword_ values. In our case, the hash function _SHA_ was applied to them:
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -b "o=sevenSeas" -s sub "(objectclass=person)" uid userPassword
- version: 1
- dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
- userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
- uid: hhornblo
-
- dn: cn=William Bush,ou=people,o=sevenSeas
- userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
- uid: wbush
-
- dn: cn=Thomas Quist,ou=people,o=sevenSeas
- userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
- uid: tquist
- ...
-
-But "Horation Nelson" is not able to perform searches in other areas than "o=sevenSeas" to see the entries. Of course our global ApacheDS administrator "uid=admin,ou=system" is still able to see them:
-
- $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -b "ou=system" -s sub "(objectclass=person)"
-
- $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
- -b "ou=system" -s sub "(objectclass=person)"
- version: 1
- dn: uid=admin,ou=system
- sn: administrator
- cn: system administrator
- objectClass: top
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- userpassword: secret
- uid: admin
- displayName: Directory Superuser
-
- dn: cn=Tori Amos,ou=users,ou=system
- cn: Tori Amos
- userpassword: amos
- objectclass: person
- objectclass: top
- sn: Amos
- ...
-
-### Trying to manipulate data
-
-Until now the authorization only hided data (entries, attributes) from users with insufficient access rights. Let's perform some operations which try to manipulate the directory data!
-
-#### Adding an entry
-
-First we try to add a new user to the "Seven Seas" partition. The data for the entry is inspired by "Peter Pan" and provided by this LDIF file ([Captain hook](resources/captain-hook.ldif)):
-
- # File captain_hook.ldif
- dn: cn=James Hook,ou=people,o=sevenSeas
- objectclass: inetOrgPerson
- objectclass: organizationalPerson
- objectclass: person
- objectclass: top
- cn: James Hook
- description: A pirate captain and Peter Pan's nemesis
- sn: Hook
- mail: jhook@neverland
- userpassword: peterPan
-
-An anonymous user is not allowed to create new entries, as the following error message shows:
-
- $ ldapmodify -h zanzibar -p 10389 -a -f captain_hook.ldif
- adding new entry cn=James Hook,ou=people,o=sevenSeas
- ldap_add: Insufficient access
- ldap_add: additional info: failed to add entry cn=James Hook,ou=people,o=sevenSeas: null
- $
-
-The same holds true for all "Seven Seas"-user other than "Horatio Nelson". The latter is permitted to do so:
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -a -f captain_hook.ldif
- adding new entry cn=James Hook,ou=people,o=sevenSeas
- ldap_add: Insufficient access
- ldap_add: additional info: failed to add entry cn=James Hook,ou=people,o=sevenSeas: null
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -a -f captain_hook.ldif
- adding new entry cn=James Hook,ou=people,o=sevenSeas
- $
-
-Afterwards a new entry is successfully created within the "Seven Seas" partition by user "Horatio Nelson". The '+' sign in the attributes list of the _ldapsearch_ command causes ApacheDS to return the operational attributes, which demonstrate this.
-
-
- $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
- version: 1
- dn: cn=James Hook,ou=people,o=sevenSeas
- accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
- creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
- createTimestamp: 20061203140109Z
-
-#### Modifying an entry
-
-As a further example which tries to write to the directory, we add a new value to the description attribute of the freshly created entry for Captain Hook. With a change entry in an LDIF file, it looks like this (file [Captain Hook](resources/captain-hook-modify.ldif)):
-
- # File captain_hook_modify.ldif
- dn: cn=James Hook,ou=people,o=sevenSeas
- changetype: modify
- add: description
- description: Wears an iron hook in place of his right hand
- -
-
-Performing the modification with the _ldapmodify_ command line tool again fails for users other than "Horation Nelson" (who is allowed to due to the authorization configuration) and "uid=admin,ou=system".
-
- $ ldapmodify -h zanzibar -p 10389 -f captain_hook_modify.ldif
- modifying entry cn=James Hook,ou=people,o=sevenSeas
- ldap_modify: Insufficient access
- ldap_modify: additional info: failed to modify entry cn=James Hook,ou=people,o=sevenSeas: null
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -f captain_hook_modify.ldif
- modifying entry cn=James Hook,ou=people,o=sevenSeas
- ldap_modify: Insufficient access
- ldap_modify: additional info: failed to modify entry cn=James Hook,ou=people,o=sevenSeas: null
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -f captain_hook_modify.ldif
- modifying entry cn=James Hook,ou=people,o=sevenSeas
-
-#### Deleting an entry
-
-Now it is finale time. A demonstration on how to delete the villain's entry from the directory. With an LDIF file ([Captain hook delete](resources/captain-hook-delete.ldif)) with an appropriate change entry, this can easily be accomplished, if the bind user is allowed to do so.
-
- # File captain_hook_delete.ldif
- dn: cn=James Hook,ou=people,o=sevenSeas
- changetype: delete
-
-Applying this file with the help of _ldapmodify_ results in a behavior comparable to the modification. Anonymous or "normal" users (like "William Bush") are not permitted to delete Captain Hook's entry. The user "Horatio Nelson", our directory manager for "Seven Seas", is:
-
- $ ldapmodify -h zanzibar -p 10389 -f captain_hook_delete.ldif
- deleting entry cn=James Hook,ou=people,o=sevenSeas
- ldap_delete: Insufficient access
- ldap_delete: additional info: failed to delete entry cn=James Hook,ou=people,o=sevenSeas: null
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
- -f captain_hook_delete.ldif
- deleting entry cn=James Hook,ou=people,o=sevenSeas
- ldap_delete: Insufficient access
- ldap_delete: additional info: failed to delete entry cn=James Hook,ou=people,o=sevenSeas: null
-
- $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
- -f captain_hook_delete.ldif
- deleting entry cn=James Hook,ou=people,o=sevenSeas
- $
-
-The entry "cn=James Hook,ou=people,o=sevenSeas" has been successfully deleted from the partition. Our little demonstration on how the ACI subsystem with a realistic configuration behaves end here. Learn more about it in the Advanced User's Guide.
-
-## Resources
-
-* [Practices in Directory Groups](http://middleware.internet2.edu/dir/groups/docs/internet2-mace-dir-groups-best-practices-200210.htm) describes how to use groups within LDAP directories. Highly recommended.
-* The [ApacheDS v1.0 Advanced User's Guide](../advanced-users-guide.html) provides a detailed authorization chapter
-* [RFC 2849](http://www.faqs.org/rfcs/rfc2849.html) The LDAP Data Interchange Format (LDIF) is used extensively in this section
diff --git a/content/apacheds/basic-ug/3.3-enabling-ssl.mdtext b/content/apacheds/basic-ug/3.3-enabling-ssl.mdtext
deleted file mode 100644
index ab210ce..0000000
--- a/content/apacheds/basic-ug/3.3-enabling-ssl.mdtext
+++ /dev/null
@@ -1,282 +0,0 @@
-Title: 3.3 - How to enable SSL
-Navprev: 3.2-basic-authorization.html
-NavPrevText: 3.2 - Basic authorization
-NavUp: 3-basic-security.html
-NavUpText: 3 - Basic Security
-NavNext: 4-integrating-apacheds.html
-NavNextText: 4 - Integrating ApacheDS with other programs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.3 - How to enable SSL
-
-This section describes the transport layer security options for LDAP, and especially how to enable LDAPS on ApacheDS.
-
-[TOC]
-
-## Transport layer security and LDAP
-
-Several requirements related to security can be easily accomplished with the help of *SSL* technology (Secure Socket Layer) or its standardized successor *TLS* (Transport Layer Security, RFC 2246). Among these are the protection of data against eavesdropping and modification, when on transit between client and server (data integrity), and the authentication of a server toward a client with the help of a certificate.
-
-There are two approaches to utilize these technologies in the LDAP world.
-
-* ldaps (LDAP over SSL/TLS, generally on port 636)
-* StartTLS (extended operation)
-
-The first option is comparable to HTTPS and inserts an SSL/TLS layer between the TCP/IP protocol and LDAP. Establishing a connection like this is normally provided via a different server port (port 636 is common, it is a well-known port, like port 389 is for LDAP). In URIs the schema "ldaps" is specified (for instance _ldaps://zanzibar:636/_) instead of "ldap". It is possible to write programs which switch between ldap and ldaps without changes in the source, if the connection data is configured external.
-
-In the second option a client establishes at first a "normal" LDAP connection. With a special request (extended operation StartTLS) it tries to switch to secure communication afterwards. It is not necessary to change the port for this, the communication continues on the established connection. The client may go back to the original connection state ("TLS Closure Alert"), in doing so protecting only selected parts of the communication.
-
-Both ways to utilize SSL/TLS within LDAP require the configuration of the server with an appropriate certificate.
-
-<DIV class="warning" markdown="1">
-**LDAPS** is considered as deprecated. You should always favor startTLS instead.
-</DIV>
-
-## Server configuration
-
-ApacheDS 2.0 supports both options and requires a JDK 1.5 or above. The feature is enabled by default, but you may need to configure it. There are some steps to follow in order to obtain a SSL enabled server.
-
-<DIV class="note" markdown="1">
-In order to keep it simple for beginners, you don't need any certificate to get LDAPS working. The latest version generates its own self signed certificate. From the user point of view, it's just a matter of enabling the ldaps service to get it working.
-
-However, if one wants to use a signed certificate, another configuration is needed, where you tell the server about the keystore to use, and the certificate password to use.
-</DIV>
-
-### In case you want ADS to generate the certificate
-
-There is nothing to do but enabling SSL and specifying the port to use in the server configuration file :
-
-![LDAPS configuration](images/studio-apacheds-configuration-ldaps.png)
-
-As soon as the "Enable LDAPS server" checkbox is checked, your server is LDAPS capable !
-
-### In case you want to use an external keystore
-
-A certificate is a signed public key (signed normally by a third party, a certificate authority, CA).
-
-There are different options
-- either you buy a certificate from a Certificate Authority (like Verisign, etc.), or you obtain one from your enterprise CA, if available
-- or you ask for a free certificate from [CACERT organisation](http://www.cacert.org/)
-- or you create your own certificate, self-signed or signed by your private CA, which will not be trusted.
-
-We will do it the last way (self-signed), primarily because it's easy and fast (you won't have to pay nor to wait to obtain your certificate)
-
-#### Key creation
-
-First it is necessary to create a key pair (public/private key) for your server, _zanzibar_ in our case. One option is to use the JDK tool _keytool_ for this task. In the following example, we use these options
-
-| Command Option | Value | Description |
-|:-:|:-:|---|
-| -genkey | - | Command to generate a key pair |
-| -keyalg | "RSA" | Algorithm to be used to generate the key pair, in our case, default is "DSA" |
-| -dname | "cn=zanzibar, ou=ApacheDS, o=ASF, c=US" | The X.500 Distinguished Name to be associated with alias, used as the issuer and subject fields in the self-signed certificate |
-| -alias | zanzibar | Name to refer the entry within the keystore |
-| -keystore | zanzibar.ks | Keystore file location |
-| -storepass | secret | Password used to protect the integrity of the keystore |
-| -validity | 730 | Number of days for which the certificate should be considered valid, default is 90 |
-
-Learn more about keytool at the [manpage](http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html).
-
- $ keytool -genkey -keyalg "RSA" -dname "cn=zanzibar, ou=ApacheDS, o=ASF, c=US" \\
- -alias zanzibar -keystore zanzibar.ks -storepass secret -validity 730
- Enter key password for <zanzibar>
- (RETURN if same as keystore password):
- $ ls -l
- total 4
- -rw-r--r-- 1 stefan users 1275 Jun 10 20:42 zanzibar.ks
- $ keytool -list -keystore zanzibar.ks
- Enter keystore password: secret
-
- Keystore type: jks
- Keystore provider: SUN
-
- Your keystore contains 1 entry
-
- zanzibar, Jun 10, 2007, keyEntry,
- Certificate fingerprint (MD5): 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
- $
-
-Another option is to use graphical tools for key creation like [Portecle](http://portecle.sourceforge.net/), which is basically a user-friendly front-end for keytool with comparable functionality. For a first impression see a screen shot below.
-
-![Portecle Keystore](images/portecle-with-keystore.png)
-
-#### Configuring ApacheDS to use this external keystore
-
-Enabling SSL in Apache Directory Server and using the key pair created as above is quite easy. Simply put the keystore file in the _conf_ directory of ApacheDS, and enable ldaps. Then you just have to setup the configuration using _Apache Directory Studio_, feeling the required input boxes, as shown on the following picture :
-
-![Keystore Configuration](images/keystore-configuration.png)
-
-The following properties were used :
-
-| Property | Default Value | Description |
-|:-:|:-:|---|
-| keystoreFile | none | Path of the X509 (or JKS) certificate file for LDAPS |
-| certificatePassword | changeit | Password which is used to load the LDAPS certificate file |
-| port | 10636 | LDAPS TCP/IP port number to listen to |
-| enableSSL | true | Sets if SSL is enabled or not |
-
-After modification of the configuration, the server has to be restarted in order to take effect.
-
-## Verification, Clients
-
-After restarting the server, you should have a server offering both ldap and ldaps. How to verify whether it works?
-
-### Using Apache Directory Studio to connect
-
-Apache Directory Studio happily supports ldaps connections. Enter the connection data (hostname and port) and select "Use SSL encryption" from the dropdown, if you create or modify a connection:
-
-![Studio SSL](images/studio-ssl.png)
-
-Afterwards the connection behaves like LDAP does. No difference in functionality, but the transmission is secured by SSL.
-
-Because our self-signed certificate is not trustworthy, many tools will present a warning (as Studio). You will likely be able to view the certificate, and decide to continue (accepting the certificate always or this session only), like with web browsers.
-
-### Other clients, Java programs using JNDI
-
-If you use other graphical clients, the behavior will be comparable. Sometimes clients don't allow to connect to a server, if the certificate is not trustworthy. This is for instance the case for Java clients using JNDI.
-
-The following simple Java program tries to connect via JNDI/JSSE (Java Secure Socket Extension) and LDAPS to _ldaps://zanzibar:10636_
-
- import java.util.Hashtable;
- import javax.naming.*;
- import javax.naming.directory.*;
-
- public class ConnectWithLdaps {
-
- public static void main(String[] args) throws NamingException {
-
- Hashtable env = new Hashtable();
-
- // Simple bind
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
- env.put(Context.SECURITY_PRINCIPAL,
- "cn=Horatio Hornblower,ou=people,o=sevenSeas");
- env.put(Context.SECURITY_CREDENTIALS, "pass");
-
- env.put(Context.INITIAL_CONTEXT_FACTORY,
- "com.sun.jndi.ldap.LdapCtxFactory");
- env.put(Context.PROVIDER_URL, "ldaps://zanzibar:636/o=sevenSeas");
-
- DirContext ctx = new InitialDirContext(env);
- NamingEnumeration enm = ctx.list("");
-
- while (enm.hasMore()) {
- System.out.println(enm.next());
- }
-
- enm.close();
- ctx.close();
- }
- }
-
-It causes a _CommunicationException_, if the certificate is not trusted:
-
- $ java ConnectWithLdaps
- Exception in thread "main" javax.naming.CommunicationException:
- simple bind failed: zanzibar:636
- [Root exception is javax.net.ssl.SSLHandshakeException:
- sun.security.validator.ValidatorException: PKIX path building failed:
- sun.security.provider.certpath.SunCertPathBuilderException:
- unable to find valid certification path to requested target]
- at com.sun.jndi.ldap.LdapClient.authenticate(Unknown Source)
- ...
-
-In order to make the client trust our server, one option is to share a self signed certificate.
-So we export the certificate (DER format) using keytool like this:
-
- $ keytool -export -keystore zanzibar.ks -alias zanzibar -file zanzibar.cer
- Enter keystore password: secret
- Certificate stored in file <zanzibar.cer>
- $ ls -l
- total 6
- -rw-r--r-- 1 stefan users 504 Jun 10 21:51 zanzibar.cer
- -rw-r--r-- 1 stefan users 1275 Jun 10 20:42 zanzibar.ks
- $
-
-Please note that you don't want to share the server keystore file itself with arbitrary clients, because it holds the private key. Instead we create a separate keystore _trusted.ks_ with the help of _keytool_. We import the certificate _zanzibar.cer_ like this:
-
- $ keytool -import -file zanzibar.cer -alias zanzibar -keystore trusted.ks -storepass secret
- Owner: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
- Issuer: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
- Serial number: 466c4611
- Valid from: Sun Jun 10 20:42:25 CEST 2007 until: Tue Jun 09 20:42:25 CEST 2009
- Certificate fingerprints:
- MD5: 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
- SHA1: C5:63:E0:DA:BB:C8:0E:E8:27:D0:91:1D:28:DD:11:BB:93:21:13:C9
- Trust this certificate? [no]: yes
- Certificate was added to keystore
- $ keytool -list -keystore trusted.ks -storepass secret
- Keystore type: jks
- Keystore provider: SUN
-
- Your keystore contains 1 entry
-
- zanzibar, Jun 11, 2007, trustedCertEntry,
- Certificate fingerprint (MD5): 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
- $
-
-Instead of using the command line version of keytool, it is also possible to perform the certificate export and import operations with Portecle or any other graphical frontend. This is for instance how the _trusted.ks_ files with the imported certificate looks like in Portecle.
-
-![Portecle with certificate](images/portecle-with-certificate.png)
-
-Clients may use this keystore in order to connect to the server. Therefore they can configure _trusted.ks_ as the trusted store via the environment like this:
-
- $ java -Djavax.net.ssl.trustStore=trusted.ks ConnectWithLdaps
- ou=people: javax.naming.directory.DirContext
- ou=groups: javax.naming.directory.DirContext
-
-Another option would be to import the certificate in the default keystore of the JRE installation (within $JAVA_HOME/jre/lib/security). For a test certificate this proceeding is not appropriate.
-
-#### Troubleshooting
-
-In practice connection establishment with LDAP over SSL may lead to various problems. In order to eliminate the errors it is helpful to see communication-specific debug information. The system property _javax.net.debug_ is available for this task. The value "ssl" provides information about the certificates in the used key store, the server certificate, and the steps during establishing of the SSL connection (handshake):
-
- $ java -Djavax.net.ssl.trustStore=trusted.ks -Djavax.net.debug=ssl ConnectWithLdaps
- setting up default SSLSocketFactory
- use default SunJSSE impl class: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
- class com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl is loaded
- keyStore is :
- keyStore type is : jks
- keyStore provider is :
- init keystore
- init keymanager of type SunX509
- trustStore is: trusted.ks
- trustStore type is : jks
- trustStore provider is :
- init truststore
- adding as trusted cert:
- Subject: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
- Issuer: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
- Algorithm: RSA; Serial number: 0x466c4611
- Valid from Sun Jun 10 20:42:25 CEST 2007 until Tue Jun 09 20:42:25 CEST 2009
-
- init context
- trigger seeding of SecureRandom
- done seeding SecureRandom
- instantiated an instance of class com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
- %% No cached client session
- *** ClientHello, TLSv1
- ...
-
-You should be able to determine any SSL-related configuration problem with the help of this log.
-
-## Resources
-
-* [Java Secure Socket Extension (JSSE)](http://java.sun.com/products/jsse/)
-* [Portecle](http://portecle.sourceforge.net) a free UI application for creating, managing and examining keystores
-* [SSL 3.0 Specification (Netscape)](http://wp.netscape.com/eng/ssl3/)
diff --git a/content/apacheds/basic-ug/4-integrating-apacheds.mdtext b/content/apacheds/basic-ug/4-integrating-apacheds.mdtext
deleted file mode 100644
index 3f47042..0000000
--- a/content/apacheds/basic-ug/4-integrating-apacheds.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 4 - Integrating ApacheDS with other programs
-Navprev: 3.3-enabling-ssl.html
-NavPrevText: 3.3 - How to enable SSL
-NavUp: ../basic-user-guide.html
-NavUpText: Basic User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - Integrating ApacheDS with other programs
-
-In this chapter, we expose various environments that are depending on _Apache Directory Server_, and how to set those environments. As _Apache Directory Server_ is an **LDAP** server, it can be used to manage messaging users, web servers like **Tomcat**, users in a **Unix** environment, etc.
-
-## Table of content
-* [4.1 - Mozilla Thunderbird Integration](4.1-mozilla-thunderbird.html)
diff --git a/content/apacheds/basic-ug/4.1-mozilla-thunderbird.mdtext b/content/apacheds/basic-ug/4.1-mozilla-thunderbird.mdtext
deleted file mode 100644
index b55f89f..0000000
--- a/content/apacheds/basic-ug/4.1-mozilla-thunderbird.mdtext
+++ /dev/null
@@ -1,96 +0,0 @@
-Title: 4.1 - Mozilla Thunderbird Integration
-Navprev: 4-integrating-apacheds.html
-NavPrevText: 4 - Integrating ApacheDS with other programs
-NavUp: 4-integrating-apacheds.html
-NavUpText: 4 - Integrating ApacheDS with other programs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1 - Mozilla Thunderbird Integration
-
-In this section you will learn how to integrate Apache Directory Server into a mail client in order to use the data as an address book. Mozilla Thunderbird is used as an example.
-
-[TOC]
-
-## E-Mail clients and Mozilla Thunderbird
-
-Integrating an LDAP server in an E-Mail client is a very traditionally task, because directories are commonly used as user repositories within companies and organizations. Contact data is stored for all users of the enterprise, and it is quite common to build the companies online phone/address book on this directory. These address books are often web based application within the intranet. But many E-Mail clients allow to connect to an LDAP based directory directly and use its data as an address book. This seamless integration provides better user experience. One of these clients is Mozilla Thunderbird. Other E-Mail clients that support LDAP integration for address books include [Microsoft Outlook Expess](http://www.microsoft.com/windows/oe/), [Eudora Email](http://www.eudora.com/) and [IBM Lotus Notes](http://www.ibm.com/software/lotus/).
-
-Technically, a mail program acts as a normal LDAP client, as described in earlier sections (i.e. the client connects to the server and performs LDAP search operations). Therefore the parameters you have to specify are the same. Main difference between searches with E-Mail clients and searches with LDAP Browsers like Softerra or JXplorer is that most of the complexity of the LDAP search is hidden to the user. Hence these tools are easier to use, but less powerful.
-
-### Mozilla Thunderbird
-
-Mozilla Thunderbird is a popular open source E-Mail client which supports many platforms. Actually it is more than just an E-Mail client (e.g. a news client as well). Features include junk mail control and RSS reading. Learn more about this software at the projects Homepage: [Mozilla Thunderbird](http://www.mozilla.org/products/thunderbird/).
-
-Within this lesson we use Thunderbird primarily because of its broad support for different operation systems and hardware platforms (and because it allows the integration of LDAP servers as address books, of course). You may use other E-Mail clients as well. It is likely that that allow the integration of LDAP directories as well, and even that the configuration is similar to Thunderbird. Check your product documentation for details.
-
-## Prerequisites
-
-We assume that you have Mozilla Thunderbird installed on your system (or you use another E-Mail client and are willing to assimilate the instructions to your situation). You may wish to download the software at the homepage ([Mozilla Thunderbird](http://www.mozilla.org/products/thunderbird/)) and install it, before proceed with this lesson.
-Furthermore you need an LDAP server up and running, which address data should be used as an address book within your E-Mail client. For the instructions it is assumed that you have installed Apache Directory Server as described in the first trail and loaded our sample data. To sum it up the following is assumed for the environment:
-* Apache Directory runs on host *zanzibar*. LDAP and listens to port *10389*
-* Anonymous access to the directory is allowed
-* Data is imported as described in section 2, Base DN is *o=sevenSeas*
-
-You may use this lesson as a blueprint to integrate other directory servers as well. At least you need the data given above in *bold*.
-
-## Define Apache Directory Server as an address book
-
-### Open the address book
-
-After starting Mozilla Thunderbird on your workstation, go to the address book by
-* clicking the adress book icon or
-* activation of the corresponding menu item ("Tools" -- "Address Book") or
-* pressing Ctrl+2
-
-![Thunderbirs open addressbook](images/thunderbird-open-adressbook.png)
-
-### Define a new LDAP directory
-
-Within the adress book window open the dialog to define a new LDAP directory by
-* activation of the corresponding menu item ("File" -- "New" -- "LDAP Directory...")
-
-![thunderbird new ldap directory](images/thunderbird-new-ldap-directory-menu.png)
-
-Thunderbird opens a dialog with three tabbed panes to provide the data of the directory.
-
-### Provide connection data
-
-Within the "General" tab, enter basic connection data to your directory:
-* Name: A name which is used by Thunderbird within the UI, e.g. "Seven Seas"
-* Hostname: the hostname or IP address of the server, "zanzibar" in our case
-* Base DN: Search base for looking up people, we choose "ou=people,o=sevenSeas"
-* Port number: The port the LDAP provider of Apache Directory Server is listening on, "10389" in our case
-
-![Thunderbird new ldap](images/thunderbird-new-ldap-1.png)
-
-In this example we do not provide a Bind DN but let Thunderbird look up the users within our directory anonymously. Apache Directory Server should be appropriately configured for that, or you have to provide a user here.
-
-The advance tab of the dialog provides input fields for result set limits, search scope and search filter. In our example we perform a search with subtree scope and a maximum number of 100 entries within the result set. The search filter restricts the results to person entries only.
-
-![Thunderbird new ldap](images/thunderbird-new-ldap-2.png)
-
-You probably have noticed that the input fields in the two tabbed panes corresponds exactly to the parameters for an LDAP search operation as described in lesson [Search the directory] of this trail.
-
-## Searching your new address book
-
-![Thunderbird new ldap](images/thunderbird-adressbook.png)
-
-## Resources
-
- * [An introduction to Thunderbird](http://opensourcearticles.com/articles/introduction_to_thunderbird), Open Source Articles
- * [LDAP Attribute Mapping](http://www.mozilla.org/projects/thunderbird/specs/ldap.html) for Mozilla Thunderbird
\ No newline at end of file
diff --git a/content/apacheds/basic-user-guide.mdtext b/content/apacheds/basic-user-guide.mdtext
deleted file mode 100644
index fca3007..0000000
--- a/content/apacheds/basic-user-guide.mdtext
+++ /dev/null
@@ -1,64 +0,0 @@
-Title: Basic User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS v2.0 Basic User's Guide
-
-This guide is primarily for people new to ApacheDS 2.0. If you plan to use the server as is, maybe even for your first LDAP experience, you'll (hopefully) find all information necessary to do so. Only basic configuration tasks are covered. Learn more about the options you have (and many other things) in the [ApacheDS v2.0 Advanced User's Guide](advanced-user-guide.html).
-
-**LDAP** is a complex set of technology, _Apache Directory Server_ is offering more than just **LDAP**, so it's good to get a quick grip on the server.
-
-## About this guide
-
-Getting started. Learn how to download and install ApacheDS 2.0 on different platforms, connect to it with various clients (graphical tools among others), manipulate the data within your directory and integrate ApacheDS with other software. The same sample data, provided as a download, is used through the whole guide.
-
-## Table of contents
-
-* [1 - How to begin](basic-ug/1-how-to-begin.html)
- * [1.1 - What Apache Directory Server is](basic-ug/1.1-what-apacheds-is.html)
- * [1.2 - Some Background. Directories, directory services and LDAP](basic-ug/1.2-some-background.html)
- * [1.3 - Installing and starting the server](basic-ug/1.3-installing-and-starting.html)
- * [1.4 - Basic configuration tasks](basic-ug/1.4-basic-configuration-tasks.html)
- * [1.4.1 - Changing the server port for LDAP](basic-ug/1.4.1-changing-server-port.html)
- * [1.4.2 - Changing the admin password](basic-ug/1.4.2-changing-admin-password.html)
- * [1.4.3 - Adding your own partition](basic-ug/1.4.3-adding-partition.html)
- * [1.4.4 - Configure logging](basic-ug/1.4.4-configure-logging.html)
- * [1.4.5 - Enable and disable anonymous access](basic-ug/1.4.5-anonymous-access.html)
- * [1.5 - About the sample configurations and sample directory data](basic-ug/1.5-sample-configuration.html)
- * [1.6 - Backup/Restore](basic-ug/1.6-backup-restore.html)
-* [2 - Handling of data within your directory](basic-ug/2-handling-data.html)
- * [2.1 - Data modification](basic-ug/2.1-data-modification.html)
- * [2.1.1 - Adding Entries](basic-ug/2.1.1-adding-entries.html)
- * [2.1.2 - Deleting Entries](basic-ug/2.1.2-deleting-entries.html)
- * [2.2 - Searching Data](basic-ug/2.2-searching-data.html)
- * [2.2.1 - Simple search](basic-ug/2.2.1-simple-search.html)
- * [2.2.2 - More search options](basic-ug/2.2.2-more-search-options.html)
- * [2.3 - Introducing the Schema ](basic-ug/2.3-introducing-schema.html)
- * [2.3.1 - Adding Schema Elements](basic-ug/2.3.1-adding-schema-elements.html)
- * [2.3.2 - Enabling Schema](basic-ug/2.3.2-enabling-schema.html)
-* [3 - Basic Security](basic-ug/3-basic-security.html)
- * [3.1 - Authentication options](basic-ug/3.1-authentication-options.html)
- * [3.2 - Basic authorization](basic-ug/3.2-basic-authorization.html)
- * [3.3 - How to enable SSL](basic-ug/3.3-enabling-ssl.html)
-* [4 - Integrating ApacheDS with other programs](basic-ug/4-integrating-apacheds.html)
- * [4.1 - Mozilla Thunderbird](basic-ug/4.1-mozilla-thunderbird.html)
-
-### Feedback welcome!
-
-We are quite interested to improve the content of this guide. Feel free to provide us feedback:
-
-![email](../images/email.png) [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
diff --git a/content/apacheds/coding-standards.mdtext b/content/apacheds/coding-standards.mdtext
deleted file mode 100644
index f890173..0000000
--- a/content/apacheds/coding-standards.mdtext
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Coding Standards
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Coding Standards
-
-Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
-
-Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
-
-**eclipse IDE**
-
-Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
-
-**IDEA IDE**
-
-IDEA users can import [this file](settings.jar) to enfore the code formating.
-
-
-## Headers
-
-First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
-
-
- :::java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-### Class/Interface headers
-
-Each **Class** or *Interface* should have an header which must contains :
-
-* A descrption of this class/interface
-* an *author* tag which should be :
-
- :::java
- @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-
-<DIV class="note" markdown="1">
-Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
-</DIV>
-
-If you use **html** tags, remember to escape '<' and '>' characters...
-
-### Static members and other members
-
-Just add a single line javadoc comment like : _/** blah ... */_ before each member
-
-### Methods
-
-Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
-
-Escape **html** characters
-
-## Comments
-
-No special rules, except that you should avoid :
-
-* Useless comments like : i++; /\* Increment i \*/
-* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
-* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
-* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
-
-Basically, use your common sense :-)
-
-## Naming
-
-Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
-
-* Constants are in UPPER CASE with accepted '_'
-* Class starts with an uppercase and each starting word is upper cased. No '_', please !
-* Methods starts with lower case and then follow the same rule than classes. No '_', please !
-* Interfaces should not start with an 'I'
-* Classes which implements an Interface must be followed by the postfix 'impl'
-* Variables follow the method naming convention. No '_', please !
-* Use meaningfull names.
-* No double letter variables like ii, jj etc...
-
-If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
-
-Naming is really important for **APIs**. Be smart. If you are not sure, ask.
-
-## Spaces vs tabs
-
-<DIV class="warning" markdown="1">
-**FOUR SPACES, NO TAB. Final.**
-</DIV>
-
-No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
-
-## Formatting
-
-Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
-
-Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
-
-Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
-
-<DIV class="warning" markdown="1">
-**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
-</DIV>
-
-People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
-
-Some general rules :
-
-* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
-* No more than one instruction on a single line, the only exception is the '?' ':' operation
-* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
-* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
-* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
-* Add spaces in method calls after '(' and before ')'
-* '{' and '}' must be on the same column
-
-This is a code example :
-
- :::java
- ...
- int result = myMethod( param1, param2 )
-
- if ( result > 0 )
- {
- // do something
- }
- ...
-
-
-## Imports
-
-Always declare all the classes you import, do not use **x.y.\***
-
-## What else ?
-
-Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
-
-That's it ! (I wait your comments, guys :-)
diff --git a/content/apacheds/configuration/ads-2.0-configuration.mdtext b/content/apacheds/configuration/ads-2.0-configuration.mdtext
deleted file mode 100644
index bbb36e9..0000000
--- a/content/apacheds/configuration/ads-2.0-configuration.mdtext
+++ /dev/null
@@ -1,957 +0,0 @@
-Title: ADS 2.0 configuration
-<a name="ADS2.0configuration-Introduction"></a>
-# Introduction
-
-ADS 2.0 configuration has been completely reworked since 1.0 and 1.5
-versions. While those two versions were XML based, we decided to store the
-new configuration in the DiT (Directory Information Tree).
-
-It's now available either through an LDAP browser, programatically using an
-LDAP API or simply by editing the LDIF files stored on the disk.
-
-<a name="ADS2.0configuration-Configurationstructure"></a>
-# Configuration structure
-
-ADS is more than a *LDAP* server. It's also a *Kerberos* server, a *DNS*
-Server and a *DHCP* server. In other words, we have to define a
-configuration for many servers, some of them being backed by a *Directory
-Service*.
-
-We can consider that the main service is the *Directory Service*, on top of
-which we have servers. Each server has a specific network configuration. We
-will expose the associated configuration.
-
-<a name="ADS2.0configuration-UsingApacheDirectoryStudiotomanagetheconfiguration"></a>
-## Using Apache DirectoryStudio to manage the configuration
-
-The easiest way to manage a server configuration is to use Studio for that.
-Defining a new server will allow you to configure it, but you can also
-modify an existing server's configuration, as soon as you can connect on to
-this server. Let's see how we process in both cases.
-
-<a name="ADS2.0configuration-Newserverconfiguration"></a>
-### New server configuration
-
-You can define a brand new server configuration using Studio. All you have
-to do is :
-- to create a new Server instance
-- modify it's configuration
-- save the configuration as a file (ldif)
-- move this ldif file in the installed server workspace at the right place
-(under the configuration partition)
-
-<a name="ADS2.0configuration-Creationofanewserver"></a>
-#### Creation of a new server
-
-Click on the 'New Server' icon :
-
-
-![New server icon](../../images/NewServer.png)
-
-This will popup this window :
-
-![New server creation](../../images/NewServerCreation.png)
-
-Select the type of server you want to configure (here, 2.0) and name your
-server.
-
-<a name="ADS2.0configuration-Configurationoverview"></a>
-#### Configuration overview
-
-By double-clicking on the created server, you will see an overview of the
-current configuration (all the value are default values at this point) :
-
-![Overview](../../images/Overview.png)
-
-You can modify the server port here, and access to the advanced
-configurations from this screen.
-
-<a name="ADS2.0configuration-LDAP/LDAPSconfiguration"></a>
-#### LDAP/LDAPS configuration
-
-The LDAP/LDAPS tab let you configure all the SASL and TLS configuration,
-plus the server limits :
-
-![Ldap Ldaps](../../images/LdapLdaps.png)
-
-We manage two kind of limits :
-- The maximum time the server will take to process a request (when this
-time has been expired, the request will be stopped)
-- The maximum number of entries we will return
-
-<a name="ADS2.0configuration-Kerberosconfiguration"></a>
-#### Kerberos configuration
-In this tab, you can setup all the parameters needed to configure your
-Kerberos server :
-
-![Kerberos](../../images/Kerberos.png)
-
-<a name="ADS2.0configuration-Partitionconfiguration"></a>
-#### Partition configuration
-
-This is where you add new partitions and modify them.
-
-There are a few importants elements to configure for a partition :
-- its ID, which is an external name
-- its Suffix, which must be a valid DN
-- the cache size used for this partition (it's the number of page that will
-be kept in memory, considering that a page may contain more than one entry)
-
-Then you also have to configure the index used by this partition. Some of
-them are mandatory (*apacheRdn*, *apacheSubLevel*, *apachePresence*,
-*apacheOneLevel*, *apacheOneAlias*, *apacheSubAlias*, *apacheAlias*,
-*objectClass*, *entryUuid*, *entryCsn*), you can just modify their cache,
-all the others are user index, you have to create them. Each index is
-associated with an existing AttributeType.
-
-![Partition](../../images/Partition.png)
-
-<a name="ADS2.0configuration-Replication"></a>
-#### Replication
-Not yet available
-
-<a name="ADS2.0configuration-Modifyinganexistingserverconfiguration"></a>
-### Modifying an existing server configuration
-
-The server should accept live modification. If this is the case, you just
-have to connect on the server and to modify it.
-
-<a name="ADS2.0configuration-DiTconfigurationstructure"></a>
-## DiT configuration structure
-
-We need to define a directory tree to store the configuration.
-
-Here is the existing structure, where we have defined one *LDAP* server
-(_ldapServer1_), backed by one *Directory Service* (_DS1_), and two
-associated transports (*ldapSrv1* and *ldapsSrv1*) :
-
-
- ou=config
- |
- +--ads-directoryServiceId=default
- |
- +--ads-changeLogId=defaultChangeLog
- |
- +--ads-journalId=defaultJournal
- |
- +--ou=interceptors
- | |
- | +--ads-interceptorId=aciAuthorizationInterceptor
- | |
- | +--ads-interceptorId=authenticationInterceptor
- | | |
- | | +--ou=authenticators
- | | | |
- | | | +--ads-authenticatorid=anonymousauthenticator
- | | | |
- | | | +--ads-authenticatorid=simpleauthenticator
- | | | |
- | | | +--ads-authenticatorid=strongauthenticator
- | | |
- | | +--ou=passwordPolicies
- | | |
- | | +--ads-pwdId=default
- | |
- | +--ads-interceptorId=collectiveAttributeInterceptor
- | |
- | +--ads-interceptorId=defaultAuthorizationInterceptor
- | |
- | +--ads-interceptorId=eventInterceptor
- | |
- | +--ads-interceptorId=exceptionInterceptor
- | |
- | +--ads-interceptorId=keyDerivationInterceptor
- | |
- | +--ads-interceptorId=normalizationInterceptor
- | |
- | +--ads-interceptorId=operationalAttributeInterceptor
- | |
- | +--ads-interceptorId=passwordHashingInterceptor
- | |
- | +--ads-interceptorId=referralInterceptor
- | |
- | +--ads-interceptorId=schemaInterceptor
- | |
- | +--ads-interceptorId=subentryInterceptor
- | |
- | +--ads-interceptorId=triggerInterceptor
- |
- +--ou=partitions
- | |
- | +--ads-partitionId=system
- | | |
- | | +--ou=indexes
- | | |
- | | +--ads-indexAttributeId=apacheRdn
- | | |
- | | +--ads-indexAttributeId=apacheSubLevel
- | | |
- | | +--ads-indexAttributeId=apachePresence
- | | |
- | | +--ads-indexAttributeId=apacheOneLevel
- | | |
- | | +--ads-indexAttributeId=apacheOneAlias
- | | |
- | | +--ads-indexAttributeId=apacheSubAlias
- | | |
- | | +--ads-indexAttributeId=apacheAlias
- | | |
- | | +--ads-indexAttributeId=objectClass
- | | |
- | | +--ads-indexAttributeId=entryUUID
- | | |
- | | +--ads-indexAttributeId=entryCSN
- | | |
- | | +--ads-indexAttributeId=ou
- | | |
- | | +--ads-indexAttributeId=uid
- | |
- | +--ads-partitionId=example
- | |
- | +--ou=indexes
- | |
- | +--ads-indexAttributeId=apacheRdn
- | |
- | +--ads-indexAttributeId=apacheSubLevel
- | |
- | +--ads-indexAttributeId=apachePresence
- | |
- | +--ads-indexAttributeId=apacheOneLevel
- | |
- | +--ads-indexAttributeId=apacheOneAlias
- | |
- | +--ads-indexAttributeId=apacheSubAlias
- | |
- | +--ads-indexAttributeId=apacheAlias
- | |
- | +--ads-indexAttributeId=objectClass
- | |
- | +--ads-indexAttributeId=entryUUID
- | |
- | +--ads-indexAttributeId=entryCSN
- | |
- | +--ads-indexAttributeId=ou
- | |
- | +--ads-indexAttributeId=uid
- | |
- | +--ads-indexAttributeId=dc
- | |
- | +--ads-indexAttributeId=krb5PrincipalName
- |
- +--ou=servers
- |
- +--ads-serverId=changePasswordServer
- | |
- | +--ou=transports
- | |
- | +--ads-transportId=tcp
- | |
- | +--ads-transportId=udp
- |
- +--ads-serverId=dnsServer
- | |
- | +--ou=transports
- | |
- | +--ads-transportId=tcp
- | |
- | +--ads-transportId=udp
- |
- +--ads-serverId=httpServer
- | |
- | +--ou=transports
- | | |
- | | +--ads-transportid=http
- | | |
- | | +--ads-transportid=https
- | |
- | +--ou=httpWebApps
- | |
- | +--ads-id=testapp
- |
- +--ads-serverId=kerberosServer
- | |
- | +--ou=transports
- | |
- | +--ads-transportid=tcp
- | |
- | +--ads-transportid=udp
- |
- +--ads-serverId=ldapServer
- | |
- | +--ou=replConsumers
- | |
- | +--ou=transports
- | | |
- | | +--ads-transportid=ldap
- | | |
- | | +--ads-transportid=ldaps
- | |
- | +--ou=extendedOpHandlers
- | | |
- | | +--ads-extendedOpId=gracefulShutdownHandler
- | | |
- | | +--ads-extendedOpId=starttlshandler
- | | |
- | | +--ads-extendedOpId=storedprochandler
- | |
- | +--ou=saslMechHandlers
- | |
- | +--ads-saslMechName=CRAM-MD5
- | |
- | +--ads-saslMechName=DIGEST-MD5
- | |
- | +--ads-saslMechName=GSS-SPNEGO
- | |
- | +--ads-saslMechName=GSSAPI
- | |
- | +--ads-saslMechName=NTLM
- | |
- | +--ads-saslMechName=SIMPLE
- |
- +--ads-serverId=ntpServer
- |
- +--ou=transports
- |
- +--ads-transportId=tcp
- |
- +--ads-transportId=udp
-
-
-![configuration-schema-dit](../../images/configuration-dit.png)
-
-<a name="ADS2.0configuration-DirectoryService"></a>
-### Directory Service
-
-For every server backed by a directory, this is the place we define this
-service's configuration.
-
-The Directory Service configuration itself depends on some sub-elements,
-which needs their own configuration :
-* changeLog
-* interceptors
-* journal
-* partitions
-* replication
-
-see [configuration schema description](adsconfig.html)
-
-Otherwise, we also have a set of simple parameters, listed in the following
-table :
-
-<a name="ADS2.0configuration-ads-directoryServiceObjectClass"></a>
-#### ads-directoryService ObjectClass
-
-We have many parameters we can configure in order to get the
-DirectoryService functioning. Some parameters are mandatory, other aren't.
-Some may have one single value, others may not.
-
-Here is the list of mandatory and optional parameters
-
-<a name="ADS2.0configuration-Mandatoryparameters"></a>
-##### Mandatory parameters
-
-<table>
-<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
-<tr><td> ads-directoryServiceId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.100 </td><td>
-Yes </td><td> PrintableString </td><td> SV </td><td>
-No </td><td> The unique identifier for this DirectoryService </td></tr>
-<tr><td> ads-dsReplicaId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.112 </td><td> Yes </td><td>
-PrintableString </td><td> SV </td><td> No </td><td> The numeric ID
-(between 000 and 999) for this instance </td></tr>
-<tr><td> ads-interceptors </td><td> 1.3.6.1.4.1.18060.0.4.1.2.116 </td><td> Yes </td><td>
-PrintableString </td><td> MV </td><td> Yes </td><td> The list of
-interceptors </td></tr>
-<tr><td> ads-partitions </td><td> 1.3.6.1.4.1.18060.0.4.1.2.108 </td><td> Yes </td><td>
-PrintableString </td><td> MV </td><td> Yes </td><td> The list of
-partitions </td></tr>
-</table>
-
-<a name="ADS2.0configuration-Optionalparameters"></a>
-##### Optional parameters
-
-<table>
-<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
-<tr><td> ads-servers </td><td> 1.3.6.1.4.1.18060.0.4.1.2.115 </td><td> No </td><td>
-PrintableString </td><td> SV </td><td> Yes </td><td> The servers we
-have to start </td></tr>
-<tr><td> ads-dsAccessControlEnabled </td><td> 1.3.6.1.4.1.18060.0.4.1.2.101 </td><td>
-No </td><td> Boolean </td><td> SV </td><td> No </td><td> Is
-the access control enabled or not (default to no) </td></tr>
-<tr><td> ads-dsAllowAnonymousAccess </td><td> 1.3.6.1.4.1.18060.0.4.1.2.102 </td><td>
-No </td><td> Boolean </td><td> SV </td><td> No </td><td> If
-one can connect with the anonymous account (default to no) </td></tr>
-<tr><td> ads-changeLog </td><td> 1.3.6.1.4.1.18060.0.4.1.2.105 </td><td> No </td><td>
-PrintableString </td><td> SV </td><td> Yes </td><td> The ChangeLog
-configuration </td></tr>
-<tr><td> ads-dsDenormalizeOpAttrsEnabled </td><td> 1.3.6.1.4.1.18060.0.4.1.2.103 </td><td>
-No </td><td> Boolean </td><td> SV </td><td> No </td><td> A
-flag telling the server to return a denormalized version of operational
-attributes </td></tr>
-<tr><td> ads-journal </td><td> 1.3.6.1.4.1.18060.0.4.1.2.117 </td><td> No </td><td>
-PrintableString </td><td> SV </td><td> Yes </td><td> The Journal
-configuration </td></tr>
-<tr><td> ads-dsMaxPDUSize </td><td> 1.3.6.1.4.1.18060.0.4.1.2.110 </td><td> No </td><td>
-Integer </td><td> SV </td><td> No </td><td> The max size for an
-incoming PDU </td></tr>
-<tr><td> ads-dsPasswordHidden </td><td> 1.3.6.1.4.1.18060.0.4.1.2.104 </td><td> No
-</td><td> Boolean </td><td> SV </td><td> No </td><td> Tells if the password
-is hidden </td></tr>
-<tr><td> ads-dsSyncPeriodMillis </td><td> 1.3.6.1.4.1.18060.0.4.1.2.111 </td><td>
-No </td><td> Integer </td><td> SV </td><td> No </td><td>
-Duration between two flush on disk </td></tr>
-<tr><td> ads-dsTestEntries </td><td> 1.3.6.1.4.1.18060.0.4.1.2.113 </td><td> No </td><td>
-PrintableString </td><td> MV </td><td> No </td><td> The set of
-entries to inject at startup (may be obsolete) </td></tr>
-</table>
-
-
-<a name="ADS2.0configuration-Interceptors"></a>
-## Interceptors
-
-Some interceptors can be configured (Authentication and PassowordPolicy).
-They will be described with a specific ObjectClass.
-
-Otherwise, they only have an identifier, and an order number, as the
-interceptors are used in an ordered chain. (we may want later to allow an
-administrator to inject a new interceptor)
-
-This ObjectClass contains the informations relative to a base interceptor.
-It will be extended by each interceptor specific interceptor.
-
-<a name="ADS2.0configuration-Mandatoryparameters"></a>
-#### Mandatory parameters
-
-<table>
-<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
-<tr><td> ads-interceptorId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.130 </td><td> Yes </td><td>
-PrintableString </td><td> SV </td><td> No </td><td> The Interceptor
-identifier </td></tr>
-<tr><td> ads-interceptorOrder </td><td> 1.3.6.1.4.1.18060.0.4.1.2.131 </td><td>
-Yes </td><td> Integer </td><td> SV </td><td> No </td><td>
-The Interceptor order number </td></tr>
-<tr><td> ads-interceptorClassName </td><td> 1.3.6.1.4.1.18060.0.4.1.2.804 </td><td>
-Yes </td><td> PrintableString </td><td> SV </td><td>
-No </td><td> Fully qualified class name of the interceptor </td></tr>
-</table>
-
-<a name="ADS2.0configuration-Authenticationinterceptor"></a>
-### Authentication interceptor
-
-<a name="ADS2.0configuration-ads-authenticationInterceptor"></a>
-#### ads-authenticationInterceptor
-
-<table>
-<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
-<tr><td> ads-authenticators </td><td> 1.3.6.1.4.1.18060.0.4.1.2.933 </td><td> No </td><td>
-N/A </td><td> MV </td><td> Yes </td><td> A
-reference to the authenticators </td></tr>
-<tr><td> ads-passwordPolicies </td><td> 1.3.6.1.4.1.18060.0.4.1.2.313 </td><td> No
-</td><td> PrintableString </td><td> MV </td><td> Yes </td><td> The
-PasswordPolicy configurations </td></tr>
-</table>
-
-
-
-
-
-
-
-<a name="ADS2.0configuration-ChangeLog"></a>
-## ChangeLog
-
-Here is the configuration :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> changeLogStore </td><td> </td><td> A store for change events on the directory (not
-described atm) </td></tr>
-<tr><td> enabled </td><td> true </td><td> Tells if the changeLog system is up and running </td></tr>
-<tr><td> exposed </td><td> false </td><td> Tells if the changeLog system is visible by the clients
-</td></tr>
-<tr><td> partitionSuffix </td><td> ou=changelog </td><td> The prefix of the partition </td></tr>
-<tr><td> revisionsContainerName </td><td> ou=revisions </td><td> The name of the revisions
-container under the partition </td></tr>
-<tr><td> tagsContainerName </td><td> ou=tags </td><td> The name of the tags container under the
-partition </td></tr>
-</table>
-
-{note}
-The _partitionSuffix_, _revisionsContainerName_ and _tagsContainerName_
-should not be exposed. They won't be associated with a schema element. The
-_changeLogStore_ is not defined right now, as we only have a InMemory
-changeLog system working.
-{note}
-
-
-
-<a name="ADS2.0configuration-ChangeLogschema"></a>
-### ChangeLog schema
-
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-Here is the list of AttributeTypes we need for the changeLog :
-
-<table>
-<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-changeLogEnabled](configuration-schema#ads-changelogenabled.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> </td></tr>
-<tr><td> [ads-changeLogExposed](configuration-schema#ads-changelogexposed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClass"></a>
-#### ObjectClass
-
-Here is the ObjectClass we need for the changeLog :
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-changeLog](configuration-schema#ads-changelog.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The ChangeLog
-ObjectClass </td></tr>
-</table>
-
-
-<a name="ADS2.0configuration-Journal"></a>
-## Journal
-
-This is the system storing every modifications in order to be able to
-restore the server if it crashes, or to manage replication. It is backed by
-a store, which needs to be configured too. Here is the configuration :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> enabled </td><td> true </td><td> Tells if the journal system is up and running </td></tr>
-<tr><td> rotation </td><td> 0 </td><td> The size before a journal rotation occurs </td></tr>
-<tr><td> filename </td><td> journal.ldif </td><td> The journal's file name </td></tr>
-<tr><td> workingDirectory </td><td> the DirectoryService working directory </td><td> The place on
-disk where the journal is stored </td></tr>
-</table>
-
-<a name="ADS2.0configuration-Journalschema"></a>
-### Journal schema
-
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-Here is the list of AttributeTypes we need for the journal :
-
-<table>
-<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-journalFileName](configuration-schema#ads-journalfilename.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The journal's file name </td></tr>
-<tr><td> [ads-journalWorkingDirectory](configuration-schema#ads-journalworkingdirectory.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The place on disk where the
-journal is stored </td></tr>
-<tr><td> [ads-journalRotation](configuration-schema#ads-journalrotation.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The size before a journal rotation
-occurs </td></tr>
-<tr><td> [ads-journalEnabled](configuration-schema#ads-journalenabled.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells if the journal system is up
-and running </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClass"></a>
-#### ObjectClass
-
-Here is the ObjectClass we need for the journal :
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-journal](configuration-schema#ads-journal.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The Journal
-ObjectClass </td></tr>
-</table>
-
-
-<a name="ADS2.0configuration-Partition"></a>
-## Partition
-
-The Partition parameters are listed in the following table :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> cacheSize </td><td> 100 </td><td> Number of cached entries </td></tr>
-<tr><td> id </td><td> N/A </td><td> The partition id </td></tr>
-<tr><td> indexedAttributes </td><td> N/A </td><td> The list of indexed attributes </td></tr>
-<tr><td> optimizerEnabled </td><td> true </td><td> Tells if the optimizer is enabled or not </td></tr>
-<tr><td> property </td><td> N/A </td><td> ??? </td></tr>
-<tr><td> suffix </td><td> N/A </td><td> The partition's suffix </td></tr>
-<tr><td> syncOnWrite </td><td> true </td><td> Tells the server to flush on disk for every write </td></tr>
-</table>
-
-the *indexedAttributes* parameter itself is a composite attribute, and will
-be described below.
-
-{note}
-The 'property' parameter will probably be removed.
-{note}
-
-{note}
-The 'optimizerEnabled' parameter will probably be removed.
-{note}
-
-
-<a name="ADS2.0configuration-Partitionschema"></a>
-### Partition schema
-
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> ads-partitionCacheSize </td><td> 100 </td><td> Number of cached entries </td></tr>
-<tr><td> ads-partitionId </td><td> N/A </td><td> The partition Id </td></tr>
-<tr><td> ads-partitionIndexedAttributes </td><td> N/A </td><td> The list of indexed attributes </td></tr>
-<tr><td> ads-partitionOptimizerEnabled </td><td> true </td><td> Tells if the optimizer is enabled
-or not. probably a useless parameter </td></tr>
-<tr><td> ads-partitionProperty </td><td> N/A </td><td> Will be removed </td></tr>
-<tr><td> ads-partitionSuffix </td><td> N/A </td><td> The partition suffix </td></tr>
-<tr><td> ads-partitionSyncOnWrite </td><td> true </td><td> Tells the server to flush on disk for
-every write </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClass"></a>
-#### ObjectClass
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> ads-partition </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The
-Partition ObjectClass </td></tr>
-</table>
-
-<a name="ADS2.0configuration-Index"></a>
-## Index
-
-The Index parameters are listed in the following table :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> attributeId </td><td> N/A </td><td> The attributeType name or OID </td></tr>
-<tr><td> cacheSize </td><td> 100 </td><td> Number of key we cache </td></tr>
-<tr><td> numDupLimit </td><td> 512 </td><td> The number of duplicated element we allow before
-switching to a secondary tree </td></tr>
-<tr><td> filename </td><td> the attributeName </td><td> Name of the index file </td></tr>
-<tr><td> workingDirectory </td><td> The DS's working directory </td><td> The place on disk where
-the index will be stored </td></tr>
-</table>
-
-{note}
-The cacheSize is likely to be removed.
-{note}
-
-<a name="ADS2.0configuration-Indexschema"></a>
-### Index schema
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> [ads-indexAttributeId](configuration-schema#ads-indexattributeid.html)
- </td><td> N/A </td><td> The attributeType name or OID </td></tr>
-<tr><td> [ads-indexCacheSize](configuration-schema#ads-indexcachesize.html)
- </td><td> 100 </td><td> Number of key we cache </td></tr>
-<tr><td> [ads-indexNumDupLimit](configuration-schema#ads-indexnumduplimit.html)
- </td><td> 512 </td><td> The number of duplicated element we allow before switching to a
-secondary tree </td></tr>
-<tr><td> [ads-indexFilename](configuration-schema#ads-indexfilename.html)
- </td><td> the attributeName </td><td> Name of the index file </td></tr>
-<tr><td> [ads-indexWorkingDirectory](configuration-schema#ads-indexworkingdirectory.html)
- </td><td> The DS's working directory </td><td> The place on disk where the index will be
-stored </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClass"></a>
-#### ObjectClass
-
-We will define at least two ObjectClasses, as we may have different kind of
-index (JDBM, Oracle, ...)
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-index](configuration-schema#ads-index.html)
- </td><td> ABSTRACT </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> A global indexed
-attribute (can be JDBM or anything else) </td></tr>
-<tr><td> [ads-jdbmIndex](configuration-schema#ads-jdbmindex.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> A JDBM indexed
-attribute </td></tr>
-</table>
-
-<a name="ADS2.0configuration-LdapServer"></a>
-## LdapServer
-
-The LdapServer parameters are described in the following table :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> id </td><td> N/A </td><td> The LdapServer identifier </td></tr>
-<tr><td> transports </td><td> N/A </td><td> The LdapServer transports </td></tr>
-<tr><td> confidentialityRequired </td><td> false </td><td> Tells the server to accept requests
-using startTLS or LDAPS </td></tr>
-<tr><td> allowAnonymousAccess </td><td> true </td><td> Tells the server to accept Anynymous
-requests or not </td></tr>
-<tr><td> maxSizeLimit </td><td> 1000 </td><td> The maximum number of entries to return </td></tr>
-<tr><td> MaxTimeLimit </td><td> 1000 </td><td> The maximul time before an operation is aborted (in
-seconds) </td></tr>
-<tr><td> extendedOperationHandlers </td><td> ??? </td></tr>
-<tr><td> saslHost </td><td> N/A </td><td> The name of this host, validated during SASL negotiation
-</td></tr>
-<tr><td> saslPrincipal </td><td> ldap/ldap.example.com@EXAMPLE.COM </td><td> The service
-principal, used by GSSAPI </td></tr>
-<tr><td> saslQop </td><td> "auth, "auth-int", "auth-conf" </td><td> The quality of protection
-(QoP), used by DIGEST-MD5 and GSSAPI </td></tr>
-<tr><td> saslRealms </td><td> N/A </td><td> The realms serviced by this SASL host </td></tr>
-<tr><td> saslMechanismHandlers </td><td> N/A </td><td> <String, MechanismHandler> \--> To be
-explicited </td></tr>
-<tr><td> directoryService </td><td> N/A </td><td> The reference to the associated DirectoryService
-</td></tr>
-<tr><td> keystoreFile </td><td> The JVM keystore </td><td> The keystore file to use to store
-certificates </td></tr>
-<tr><td> certificatePassword </td><td> N/A </td><td> The certificate passord </td></tr>
-<tr><td> replicationSystem </td><td> </td><td> ??? Should be associated to the DirectoryService </td></tr>
-</table>
-
-Some of the parameters will not be used : _extendedOperationHandlers_,
-_saslQop_, _saslMechanismHandlers_ and _replicationSystem_.
-
-None of those parameters are composite, except the DirectoryService, which
-has already been described.
-
-<a name="ADS2.0configuration-LdapServerschema"></a>
-### LdapServer schema
-
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-<table>
-<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-ldapServerId](configuration-schema#ads-ldapserverid.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The LdapServer identifier </td></tr>
-<tr><td> [ads-ldapServerId](configuration-schema#ads-ldapserverid.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The LdapServer transports </td></tr>
-<tr><td> [ads-ldapServerTransports](configuration-schema#ads-ldapservertransports.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells the server to accept
-requests using startTLS or LDAPS </td></tr>
-<tr><td> [ads-ldapServerAllowAnonymousAccess](configuration-schema#ads-ldapserverallowanonymousaccess.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells the server to accept
-Anynymous requests or not </td></tr>
-<tr><td> [ads-ldapServerMaxSizeLimit](configuration-schema#ads-ldapservermaxsizelimit.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum number of entries to
-return </td></tr>
-<tr><td> [ads-ldapServerMaxTimeLimit](configuration-schema#ads-ldapservermaxtimelimit.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximul time before an
-operation is aborted (in seconds) </td></tr>
-<tr><td> [ads-ldapServerSaslHost](configuration-schema#ads-ldapserversaslhost.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The name of this host, validated
-during SASL negotiation </td></tr>
-<tr><td> [ads-ldapServerSaslPrincipal](configuration-schema#ads-ldapserversaslprincipal.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The service principal, used by
-GSSAPI </td></tr>
-<tr><td> [ads-ldapServerSaslRealms](configuration-schema#ads-ldapserversaslrealms.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The realms serviced by this SASL
-host </td></tr>
-<tr><td> [ads-ldapServerDirectoryService](configuration-schema#ads-ldapserverdirectoryservice.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The reference to the associated
-DirectoryService </td></tr>
-<tr><td> [ads-ldapServerKeystoreFile](configuration-schema#ads-ldapserverkeystorefile.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The keystore file to use to store
-certificates </td></tr>
-<tr><td> [ads-ldapServerCertificatePassword](configuration-schema#ads-ldapservercertificatepassword.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The certificate passord </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClass"></a>
-#### ObjectClass
-
-Here is the list of ObjectClasses we need for the LdapServer
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-ldapServer](configuration-schema#ads-ldapserver.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> Base class for the
-LdapServer ObjectClass </td></tr>
-</table>
-
-
-<a name="ADS2.0configuration-KerberosServer"></a>
-## KerberosServer
-
-The KerberosServer parameters are described in the following table :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> id </td><td> N/A </td><td> The KerberosServer identifier </td></tr>
-<tr><td> transports </td><td> N/A </td><td> The KerberosServer transports </td></tr>
-<tr><td> AllowableClockSkew </td><td> </td><td> The allowable clock skew </td></tr>
-<tr><td> EncryptionTypes </td><td> </td><td> The encryption types </td></tr>
-<tr><td> EmptyAddressesAllowed </td><td> true </td><td> Whether empty addresses are allowed </td></tr>
-<tr><td> ForwardableAllowed </td><td> true </td><td> Whether forwardable addresses are allowed </td></tr>
-<tr><td> PaEncTimestampRequired </td><td> true </td><td> Whether pre-authentication by encrypted
-timestamp is required </td></tr>
-<tr><td> PostdatedAllowed </td><td> true </td><td> Whether postdated tickets are allowed </td></tr>
-<tr><td> ProxiableAllowed </td><td> true </td><td> Whether proxiable addresses are allowed </td></tr>
-<tr><td> RenewableAllowed </td><td> true </td><td> Whether renewable tickets are allowed </td></tr>
-<tr><td> KdcPrincipal </td><td> krbtgt/EXAMPLE.COM@EXAMPLE.COM </td><td> The service principal
-name </td></tr>
-<tr><td> MaximumRenewableLifetime </td><td> 7 days </td><td> The maximum renewable lifetime </td></tr>
-<tr><td> MaximumTicketLifetime </td><td> 1 day </td><td> The maximum ticket lifetime </td></tr>
-<tr><td> PrimaryRealm </td><td> EXAMPLE.COM </td><td> The primary realm </td></tr>
-<tr><td> BodyChecksumVerified </td><td> true </td><td> Whether to verify the body checksum </td></tr>
-<tr><td> SearchBaseDn </td><td> NA </td><td> The place we are looking for entries </td></tr>
-</table>
-
-<a name="ADS2.0configuration-KerberosServerSchema"></a>
-### KerberosServer Schema
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-Here is the list of AttributeTypes we need for the KerberosServer
-
-<table>
-<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-krbAllowableClockSkew](configuration-schema#ads-krballowableclockskew.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The allowable clock skew </td></tr>
-<tr><td> [ads-krbEncryptionTypes](configuration-schema#ads-krbencryptiontypes.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The encryption types </td></tr>
-<tr><td> [ads-krbEmptyAddressesAllowed](configuration-schema#ads-krbemptyaddressesallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether empty addresses are
-allowed </td></tr>
-<tr><td> [ads-krbForwardableAllowed](configuration-schema#ads-krbforwardableallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether forwardable addresses are
-allowed </td></tr>
-<tr><td> [ads-krbForwardableAllowed](configuration-schema#ads-krbforwardableallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether forwardable addresses are
-allowed </td></tr>
-<tr><td> [ads-krbPaEncTimestampRequired](configuration-schema#ads-krbpaenctimestamprequired.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether pre-authentication by
-encrypted timestamp is required </td></tr>
-<tr><td> [ads-krbPostdatedAllowed](configuration-schema#ads-krbpostdatedallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether postdated tickets are
-allowed </td></tr>
-<tr><td> [ads-krbProxiableAllowed](configuration-schema#ads-krbproxiableallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether proxiable addresses are
-allowed </td></tr>
-<tr><td> [ads-krbRenewableAllowed](configuration-schema#ads-krbrenewableallowed.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether renewable tickets are
-allowed </td></tr>
-<tr><td> [ads-krbKdcPrincipal](configuration-schema#ads-krbkdcprincipal.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The service principal name </td></tr>
-<tr><td> [ads-krbMaximumRenewableLifetime](configuration-schema#ads-krbmaximumrenewablelifetime.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum renewable lifetime </td></tr>
-<tr><td> [ads-krbMaximumTicketLifetime](configuration-schema#ads-krbmaximumticketlifetime.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum ticket lifetime </td></tr>
-<tr><td> [ads-krbPrimaryRealm](configuration-schema#ads-krbprimaryrealm.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The primary realm </td></tr>
-<tr><td> [ads-krbBodyChecksumVerified](configuration-schema#ads-krbbodychecksumverified.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether to verify the body
-checksum </td></tr>
-<tr><td> [ads-kerberosServerId](configuration-schema#ads-kerberosserverid.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The kerberos server identifier </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClasses"></a>
-#### ObjectClasses
-
-Here is the list of ObjectClass we need for the KerberosServer
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-</table>
-
-<a name="ADS2.0configuration-TransportLayer"></a>
-## Transport Layer
-
-The *transport layer* is the layer in charge of managing incoming requests
-and outgoing responses. All the servers are depending on this layer. It
-support *TCP* and *UDP* transports.
-
-The configuration parameters are the following :
-
-<table>
-<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
-<tr><td> address </td><td> localhost </td><td> The listening address. Can be '*' if the server is
-listening on all the interfaces </td></tr>
-<tr><td> port </td><td> \-1 </td><td> The port the server is listening on. </td></tr>
-<tr><td> sslEnabled </td><td> false </td><td> Tells if SSL is enabled for this transport. Only
-available for a TCP transport </td></tr>
-<tr><td> backlog </td><td> 50 </td><td> The number of incoming requests queued when all the
-threads are busy </td></tr>
-<tr><td> threads </td><td> 3 </td><td> The number of threads to use in the executor to handle the
-incoming requests </td></tr>
-</table>
-
-The base transport is determinated by the type of transport object we will
-create :_TcpTransport_ or _UdpTransport_.
-
-For instance, in the current *server.xml* file, we have this configuration
-for the *LDAP* server and for the *Kerberos* server :
-
- ...
- <ldapServer id="ldapServer" ...>
- <transports>
- <tcpTransport address="0.0.0.0" port="10389" nbThreads="8"
-backLog="50" enableSSL="false"/>
- <tcpTransport address="localhost" port="10686" enableSSL="true"/>
- </transports>
- ...
-
-
-
-
- ...
- <kdcServer id="kdcServer">
- <transports>
- <tcpTransport port="60088" nbThreads="4" backLog="50"/>
- <udpTransport port="60088" nbThreads="4" backLog="50"/>
- </transports>
- ...
-
-
-<a name="ADS2.0configuration-Transportschema"></a>
-### Transport schema
-
-To be able to store the transport in the *DiT*, we must define a specific
-set of AttributeTypes and ObjectClasses to store them. Here are those
-definitions.
-
-<a name="ADS2.0configuration-AttributeTypes"></a>
-#### AttributeTypes
-
-Here is the list of AttributeTypes we need for the transport layer
-
-<table>
-<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-transportAddress](configuration-schema#ads-transportaddress.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The IP Address </td></tr>
-<tr><td> [ipServicePort](http://ldap.akbkhome.com/index.php/attribute/ipServicePort.html)
- </td><td> no </td><td> 1.3.6.1.1.1.1.15 </td><td> The IP port </td></tr>
-<tr><td> [ads-transportBacklog](configuration-schema#ads-transportbacklog.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The backlog size </td></tr>
-<tr><td> [ads-transportEnableSSL](configuration-schema#ads-transportenablessl.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells if SSL is on </td></tr>
-<tr><td> [ads-transportNbThreads](configuration-schema#ads-transportnbthreads.html)
- </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The number of threads in the
-executor </td></tr>
-</table>
-
-<a name="ADS2.0configuration-ObjectClasses"></a>
-#### ObjectClasses
-
-Here is the list of ObjectClasses we need for the transport layer
-
-<table>
-<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
-<tr><td> [ads-transport](configuration-schema#ads-transport.html)
- </td><td> ABSTRACT </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> Base class for the
-transport's ObjectClasses </td></tr>
-<tr><td> [ads-tcpTransport](configuration-schema#ads-tcptransport.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The TCP transport </td></tr>
-<tr><td> [ads-udpTransport](configuration-schema#ads-udptransport.html)
- </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The UDP transport </td></tr>
diff --git a/content/apacheds/configuration/adsconfig.mdtext b/content/apacheds/configuration/adsconfig.mdtext
deleted file mode 100644
index 503829e..0000000
--- a/content/apacheds/configuration/adsconfig.mdtext
+++ /dev/null
Binary files differ
diff --git a/content/apacheds/developer-guide.mdtext b/content/apacheds/developer-guide.mdtext
deleted file mode 100644
index 4a9171d..0000000
--- a/content/apacheds/developer-guide.mdtext
+++ /dev/null
@@ -1,533 +0,0 @@
-Title: Developers Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Developers Guide
-
-## Getting the source, Building the trunks
-To get the source, build the *trunks* and get along with Maven, follow the instruction given in this page: [AUG : 0.2. Building trunks](advanced-ug/0.2-building-trunks.html)
-
-## Versioning Scheme
-
-The version number of *ApacheDS* has the following form:
-
-<DIV class="info" markdown="1">
- <major>.<minor>.<micro> \[-M<milestone number> or -RC<release candidate number>]
-</DIV>
-
-This scheme has three number components:
-
-* The __major__ number increases when there are incompatible changes in the API.
-* The __minor__ number increases when a new feature is introduced.
-* The __micro__ number increases when a bug or a trivial change is made.
-
-and an optional label that indicates the maturity of a release:
-
-* __M__ (Milestone) means the feature set can change at any time in the next milestone releases. The last milestone release becomes the first release candidate after a vote.
-* __RC__ (Release Candidate) means the feature set is frozen and the next RC releases will focus on fixing problems unless there is a serious flaw in design. The last release candidate becomes the first GA release after a vote.
-* No label implies __GA__ (General Availability), which means the release is stable enough and therefore ready for production environment.
-
-<DIV class="info" markdown="1">
- A <b>stable</b> version is a version with a frozen set of features, and a frozen <b>API</b>. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
- Although we may add new features between two milestones, and the data structure may change, which may imply that the data have to be extracted and reimported in order for the server to be operational.<BR/>
- The configuration might also evolve between two versions.
-</DIV>
-
-## Coding standards
-
-The applicable coding standards for ADS 2.0 are described in [Coding Standards](coding-standards.html)
-
-There are some more rules, as we are using **Java 6** now :
-
-* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
-* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
-* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
-* Use the new *Enum* type !
-
-## Releasing ApacheDS
-
-Here is a guide on how to cut a new release. This is a long process, expect it to last a few hours !
-
-First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version of the JDK (Java 8 is required, due to some checkstye plugin requiring it. Note that the generated code is Java 7 compliant).
-
-### Maven Settings
-
-You'll need a settings section for the **Nexus** and **people.apache.org** servers with a password or a path to the SSH key used. Here's what my **settings.xml** file in **~/.m2** looks like:
-
- :::text
- <settings>
-
- <servers>
- <!-- To publish a snapshot of some part of Maven -->
- <server>
- <id>apache.snapshots.https</id>
- <username>username</username>
- <password>********</password>
- </server>
-
- <!-- To publish a website using Maven -->
- <server>
- <id>apache.directory</id>
- <username>username</username>
- <privateKey>/Users/username/.ssh/id_rsa</privateKey>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
-
- <!-- To stage a release of some part of Maven -->
- <server>
- <id>apache.releases.https</id>
- <username>username</username>
- <password>********</password>
- </server>
-
- <!-- To stage a website of some part of Maven -->
- <server>
- <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
- <username>elecharny</username>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
-
- </servers>
-
- <profiles>
- <profile>
- <id>apache-public</id>
- <pluginRepositories>
- <pluginRepository>
- <id>apache.public</id>
- <url>https://repository.apache.org/content/groups/public/</url>
- </pluginRepository>
- </pluginRepositories>
- </profile>
-
- <profile>
- <id>apache-release</id>
- <!-- Configuration for artifacts signature -->
- <properties>
- <gpg.passphrase>********</gpg.passphrase>
- <gpg.keyname>elecharny@apache.org</gpg.keyname>
- </properties>
- </profile>
- </profiles>
-
- </settings>
-
-Just replace your username, passwords and paths. Note that the username and password is your Apache LDAP account.
-
-
-<DIV class="info" markdown="1">
-You'll need to provide the passphrase in the <b>settings.xml</b> to access the gpg secret key installed on your host. This is due to a bug with the passphrase prompt in the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase in the <b>settings.xml</b> file in clear text. This should change in the future when this bug is fixed. Note that this passphrase is put into the release profile which we activate to properly sign and release the artifacts and poms via the release plugin.
-</DIV>
-
-### GPG Key
-
-All subprojects are configured to deploy signatures for the artifacts uploaded to the repository. The **gpg** plugin will check use the default gpg key for the user deploying the project with the release:perform directive of the release plugin. This will prompt you for the passphrase for the default key. If you do not have one setup the build will fail.
-
-You can generate and upload a PGP key to a PGP keyserver using the following commands:
-
- :::text
- gpg --gen-key
- gpg --fingerprint
- gpg --keyserver subkeys.pgp.net --send-keys <your key's id from last command>
-
-
-<DIV class="info" markdown="1">
-Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and to have added your public key to the <b>KEYS</b> file.
-See also http://people.apache.org/~henkp/repo/faq.html#4
-</DIV>
-
-### Releasing ApacheDS
-
-Now that your environment has been setup, we will show you how to build and release the ApacheDS subproject. Keep an eye out for warnings and note sections that show version specific differences in this process.
-
-#### Manual Steps
-Some things have not yet been automated with maven and require users to manually edit some files. Below are the steps to follow.
-
-##### Update the apacheds/pom.xml
-
-The current <em>apacheds/pom.xml</em> contains references to LDAP API SNAPSHOTs, which is not good. You have to bump up those references to the latest LDAP-API version.
-
-##### Update service/apacheds.sh and service/apacheds.bat
-
-Edit the <em>apacheds.sh/bat</em> files in the service project directory to update the revision numbers used in that file to reference non-SNAPSHOT releases.
-
-#### Release process
-
-Since we are using Nexus for releases the release process is as follows (see also [Publishing maven artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven).
-
-##### Test the Project
-
- :::text
- $ mvn release:prepare -DdryRun=true
-
-Replace the version by the new version. Be careful, and remove the 'apacheds-parent-' which is proposed for the new tag. We should just use the version number.
-
-##### Deploy a Snapshot
-
- :::text
- $ mvn deploy -Darguments="-DskipTests"
-
-This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
-
-##### Prepare the Release
-
- :::text
- $ mvn release:clean
- $ mvn release:prepare
-
-This creates a tag [here](http://svn.apache.org/viewvc/directory/apacheds/tags/)
-
-##### Stage the Release
-
- $ mvn release:perform -Darguments="-DskipTests"
-
-This deploys the release to a staging repository. Go to [Staging Repositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
-
-(The _-Darguments="-DskipTests"_ parameter is there to avoid running the tests again...)
-
-##### Build the Site
-
-We will now build the site. This will be done from the <em>target/checkout</em> directory :
-
- :::text
- $ cd target/checkout
-
-In order to generate the site, you have to comment some modules in the apacheds <em>pom.xml</em> file :
-
- :::text
- <!--module>all</module-->
- ...
- <!--module>installers-maven-plugin</module-->
- <!--module>installers</module-->
- ...
- <!--module>service</module-->
-
-
-Then you can start the maven command :
-
- :::text
- $ mvn site
-
-This creates the site and the Javadocs.
-
-<DIV class="info" markdown="1">
-Now, you have to sign the sources packages which are in <em>apacheds/target/checkout/target</em>.
-
-Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
-
-Note we should not sign with MD5 or SHA-1.
-</DIV>
-
-You can get the keys by typing :
-
- :::text
- gpg --list-keys
-
-You can use this small script that does the job (copy-paste this code in a file named <em>sign.sh</em> in your path) :
-
- :::text
- #!/bin/sh
-
- echo "PGP Key ID: "
- read DEFAULT_KEY
-
- echo "PGP Key Password: "
- stty -echo
- read PASSWORD
- stty echo
- echo ""
-
- for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" -or -name "*.md5" -or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
-
- if [ -f "$FILE.asc" ]; then
- echo "Skipping: $FILE"
- continue
- fi
-
- echo -n "Signing: $FILE ... "
-
- # SHA-256
- if [ ! -f "$FILE.sha256" ];
- then
- gpg -v --default-key "$DEFAULT_KEY" --print-md SHA256 "$FILE" > "$FILE".sha256
- echo " - Generated '$FILE.sha256'"
- else
- echo " - Skipped '$FILE.sha256' (file already existing)"
- fi
-
- # SHA-512
- if [ ! -f "$FILE.sha512" ];
- then
- gpg -v --default-key "$DEFAULT_KEY" --print-md SHA512 "$FILE" > "$FILE".sha512
- echo " - Generated '$FILE.sha512'"
- else
- echo " - Skipped '$FILE.sha512' (file already existing)"
- fi
-
- # ASC
- if [ ! -f "$FILE.asc" ];
- then
- echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
- echo " - Generated '$FILE.asc'"
- else
- echo " - Skipped '$FILE.asc' (file already existing)"
- fi
- done
-
-Then to sign the packages :
-
- :::text
- $ sign.sh
- PGP Key ID:
- <your PGP key>
- PGP Key Password:
- <Your password>
-
- -n Signing: ./apacheds-parent-<version>-source-release.zip ...
- - Generated './apacheds-parent-<version>-source-release.zip.md5'
- - Generated './apacheds-parent-<version>-source-release.zip.sha1'
- - Generated './apacheds-parent-<version>-source-release.zip.asc'
- $
-
-##### Publish Source Distribution Package
-
-The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by the other committers, in order to be checked while validating the release. As the ~/people.apache.org server is not anymore available for that purpose, we use the [distribution](https://dist.apache.org/repos/dist/dev/directory) space for that purpose.
-
-If you haven't checked out this space, do it now :
-
- :::text
- $ mkdir -p ~/apacheds/dist/dev/directory
- $ svn co https://dist.apache.org/repos/dist/dev/directory ~/apacheds/dist/dev/directory
-
-That will checkout the full project distributions.
-
-You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
-
- :::text
- $ mkdir -p ~/apacheds/dist/dev/directory/apacheds
- $ svn co https://dist.apache.org/repos/dist/dev/directory/apacheds ~/apacheds/dist/dev/directory/apacheds
-
-Now, create a sub-directory for the version you have generated (here, for version 2.0.0-M22) :
-
- :::text
- $ mkdir ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
-
-
-and copy the packages and signature to this area :
-
- :::text
- $ cd target/checkout/target
- $ cp apacheds-parent-<version>-source-release.zip* ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
-
-Last, not least, commit your changes
-
- :::text
- $ svn add ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
- $ svn ci ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22 -m "ApacheDS 2.0.M22 packages"
-
-##### Test the new version
-
-The best way to do that is to download the sources, extract them, build the server and the installers, and check if the installers are correctly working. Then check that the server is correctly running.
-
-##### Create the installers
-
-We now have to create the installers. Go into the <em>target/checkout</em> directory and run :
-
- :::text
- $ cd apacheds/target/checkout/installers
- $ mvn clean install -Pinstallers
-
-This will create the installers in the <em>target/checkout/installers/target/installers</em> directory
-
-<DIV class="info" markdown="1">
- We are meant to create all the installers. It's possible to create installers for a specific platform by using a different profile :
-
- <UL>
- <LI>Debian : mvn clean install -Pdebian</LI>
- <LI>Rpm : mvn clean install -Prpm</LI>
- <LI>Windows : mvn clean install -Pwindows</LI>
- <LI>Mac OS X : mvn clean install -Pmac</LI>
- <LI>Binary : mvn clean install -Pbin</LI>
- <LI>Archive : mvn clean install -Parchive</LI>
- </UL>
-
- This will build only one single target.
-</DIV>
-
-<DIV class="info" markdown="1">
- If the packaging tool path is not correct, you can set it on the command line :
-
- <UL>
- <LI>Debian : mvn clean install -Pdebian -Dinstallers.dpkg=<path to the dpkg installer></LI>
- <LI>Rpm : mvn clean install -Prpm -Dinstallers.rpmbuild=<path to the rpmbuild installer></LI>
- <LI>Windows : mvn clean install -Pwindows -Dinstallers.makensis=<path to the makensis installer></LI>
- <LI>Mac OS X : mvn clean install -Pmac -Dinstallers.packageMaker=<path to the PackageMaker installer></LI>
- </UL>
-
- Typically, recent versions of Mac OSX moved the tools from <EM>/usr/bin</EM> to <EM>/usr/local/bin</EM>
-
- Keep in mind that you will have to sign and move each target package before building the next one, as the <EM>clean</EM> instruction will remove the content of the <EM>target</EM> directory...
-</DIV>
-
-
-
-Sign those installers using the <em>sign.sh</em> script, and copy them in <em>~/apacheds/dist/dev/directory/apacheds/<version></em>
-
- :::text
- $ cd apacheds/target/checkout/target/installers/target/installers
- $ cp apacheds-<version>* ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
-
-Note : you will need a Debian, a Fedora and a Windows server to generate dedicated binaries for those platforms, or you can use rpmbuild, dpkg or nsis if you don't want to use many different servers.
-
-
-##### Vote
-
-Start a 72h vote at the dev mailing list.
-
-##### Release
-
-If the vote succeeds Apacheds project can be released.
-
-Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
-
-The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by users. We use the [distribution](https://dist.apache.org/repos/dist/release/directory) space for that purpose.
-
-Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/apacheds/dist/$(version)
-
-If you haven't checked out this space, do it now :
-
- :::text
- $ mkdir -p ~/apacheds/dist/release/directory
- $ svn co https://dist.apache.org/repos/dist/release/directory ~/apacheds/dist/release/directory
-
-That will checkout the full project distributions.
-
-You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
-
- :::text
- $ mkdir -p ~/apacheds/dist/release/directory/apacheds/dist
- $ svn co https://dist.apache.org/repos/dist/release/directory/apacheds/dist ~/apacheds/dist/release/directory/apacheds/dist
-
-Then move the packages from 'dev' to 'release' :
-
- :::text
- # cd dist/release/directory/apacheds/dist
- # cp ~/apacheds/dist/dev/directory/apacheds/<version> .
- # svn add <version>
- # svn ci <version>
- ...
- # exit
- $
-
-The packages should now be available on http://www.us.apache.org/dist/directory/apacheds/dist/<version>
-
-##### Deploy the Javadocs and XRef
-
-We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
-
- target/checkout/target/site
-
-We will copy two directories :
-
- apidocs
- xref
-
-*Staging or Production?*
-
-Those files will be stored on the production server only !!! And some extra caution must be taken not to delete them when we will publish the staging site too...
-
-First of all, you must checkout the two CMS store for the site : staging and revision.
-
- :::text
- $ cd ~/apacheds
- $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
- ...
- $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
- ...
-
-Now, you will first add the directory for the newly generated version :
-
- :::text
- $ cd ~/apacheds/production/content/apacheds/gen-docs
- $ mkdir <version>
-
-Then copy the generated docs :
-
- :::text
- $ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/apidocs ~/apacheds/production/content/apacheds/gen-docs/<version>
- $ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/xref ~/apacheds/production/content/apacheds/gen-docs/<version>
- $
-
-You have to check in those directories :
-
- :::text
- $ svn add <version>
- $ svn ci <version> -m "Injected <version> javadocs"
-
-Now, you have to update the staging site, but first, do a <em>svn up</em>. Then you have to update the <em>extpaths.txt</em> file.
-
-This file list the files on the production site that will not be overriden by the publication of the staging site. It has to be updated.
-
- :::text
- $ cd ~/apacheds/staging/content/
- $ vi extpaths.txt
-
-Add the following line :
-
- :::text
- ...
- # Apacheds
- apacheds/gen-docs/<version>
- ...
-
-then save and check in the file.
-
-We also have to update the <em>.htaccess</em> file :
-
- :::text
- $ cd ~/apacheds/staging/content/apacheds/gen-docs
- $ vi .htaccess
-
-And update the two last lines to refer to the version you've just released :
-
- RewriteRule ^latest$ <version>/
- RewriteRule ^latest/(.*)$ <version>/$1
-
-Save and commit the file.
-
-##### Update the web site
-
-You can now update the site, add a news on the front page, and publish the site.
-
-There are a few places to modify :
-
-* /lib/path.pm : update the $version_apacheds variable with the new version.
-* /content/index.mdtext : same here, update the <!-- ApacheDS project --> section, which contains the version.
-* /content/apacheds/news.mdtext : add the news on top of thise page
-* /content/apacheds/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
-
-Commit the changes, and publish the web site, you are done !
-
-##### Inform the world !
-
-After 24h, you can now inform the world about the release.
-
-Send a mail to the users and dev mailing list, and one to the <em>announce@apache.org</em>
-
-You are done !
\ No newline at end of file
diff --git a/content/apacheds/download-old-versions.mdtext b/content/apacheds/download-old-versions.mdtext
deleted file mode 100644
index 8331a42..0000000
--- a/content/apacheds/download-old-versions.mdtext
+++ /dev/null
@@ -1,129 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-
-## ApacheDS 2.0
-
-<center>
-
-| Version| Download Link | Date |
-|:-:|:-:|:-:|
-| ApacheDS 2.0.0-M25 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-AM25/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-AM25/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-AM25/xref/) | 18/Aug/2018 |
-| ApacheDS 2.0.0-M24 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M24/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M24/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M24/xref/) | 07/Jun/2017 |
-| ApacheDS 2.0.0-M23 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M23/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M23/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M23/xref/) | 22/Jul/2016 |
-| ApacheDS 2.0.0-M22 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M22/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M22/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M22/xref/) | 21/Dec/2015 |
-| ApacheDS 2.0.0-M20 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M20/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M20/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M20/xref/) | 02/May/2015 |
-| ApacheDS 2.0.0-M19 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M19/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M19/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M19/xref/) | 22/Nov/2014 |
-| ApacheDS 2.0.0-M18 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M18/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M18/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M18/xref/) | 13/Nov/2014 |
-| ApacheDS 2.0.0-M17 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M17/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M17/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M17/xref/) | 04/Jul/2014 |
-| ApacheDS 2.0.0-M16 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M16/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M16/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M16/xref/) | 13/Mar/2014 |
-| ApacheDS 2.0.0-M15 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M15/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M15/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M15/xref/) | 18/Aug/2013 |
-| ApacheDS 2.0.0-M14 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M14/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M14/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M14/xref/) | 01/Jul/2013 |
-| ApacheDS 2.0.0-M13 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M13/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M13/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M1/xref/) | 25/Jun/2013 |
-| ApacheDS 2.0.0-M12 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M12/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M12/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M12/xref/) | 02/May/2013 |
-| ApacheDS 2.0.0-M11 binaries | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M11/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M11/xref/) | 03/Mar/2013 |
-| ApacheDS 2.0.0-M11 sources | [Download](https://archive.apache.org/dist/directory/apacheds/2.0.0-M11/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M11/xref/) | 03/Mar/2013 |
-| ApacheDS 2.0.0-M10 binaries | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M10/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M10/xref/) | 28/Jan/2013 |
-| ApacheDS 2.0.0-M10 sources | [Download](https://archive.apache.org/dist/directory/apacheds/2.0.0-M10/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M10/xref/) | 28/Jan/2013 |
-| ApacheDS 2.0.0-M9 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M9), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M9/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M9/xref/) | 02/Jan/2013 |
-| ApacheDS 2.0.0-M8 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M8), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M8/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M8/xref/) | 12/Oct/2012 |
-| ApacheDS 2.0.0-M7 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M7), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M7/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M7/xref/) | 21/May/2012 |
-| ApacheDS 2.0.0-M6 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M6) | 29/Feb/2012 |
-| ApacheDS 2.0.0-M5 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M5), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M5/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M5/xref/) | 07/Feb/2012 |
-| ApacheDS 2.0.0-M4 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M4), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M4/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M4/xref/) | 09/Jan/2012 |
-| ApacheDS 2.0.0-M3 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M3), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M3/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M3/xref/) | 12/Sep/2011 |
-| ApacheDS 2.0.0-M2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M2), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M2/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M2/xref/) | 22/Aug/2011 |
-| ApacheDS 2.0.0-M1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M1), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M1/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-M1/xref/) | 25/Jun/2011 |
-
-</center>
-
-## ApacheDS 1.5 (not maintained)
-
-<center>
-
-| Version| Download Link | Date |
-|:-:|:-:|:-:|
-| ApacheDS 1.5.7 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.7/) | 24/Apr/2010 |
-| ApacheDS 1.5.6 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.6/) | 22/Mar/2010 |
-| ApacheDS 1.5.5 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.5/) | 19/Aug/2009 |
-| ApacheDS 1.5.4 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.4/) | 07/Sep/2008 |
-| ApacheDS 1.5.3 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.3/) | 13/Jul/2008 |
-| ApacheDS 1.5.2 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.2/) | 17/Apr/2008 |
-| ApacheDS 1.5.1 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.1/) | 02/Sep/2007 |
-| ApacheDS 1.5.0 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.0/) | 11/Apr/2007 |
-
-</center>
-
-## ApacheDS 1.0 (not maintained)
-
-<center>
-
-| Version| Download Link | Date |
-|:-:|:-:|:-:|
-| ApacheDS 1.0.2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.2/) | 26/May/2007 |
-| ApacheDS 1.0.1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.1/) | 22/Feb/2007 |
-| ApacheDS 1.0.0 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.0/) | 06/Oct/2006 |
-| ApacheDS 1.0-RC4 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC4/) | 05/Sep/2006 |
-| ApacheDS 1.0-RC3 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC3/) | 09/May/2006 |
-| ApacheDS 1.0-RC2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC2/) | 30/Apr/2006 |
-| ApacheDS 1.0-RC1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC1/) | 24/Feb/2006 |
-
-</center>
-
-## ApacheDS 0.9 (not maintained)
-
-<center>
-
-| Version| Download Link | Date |
-|:-:|:-:|:-:|
-| ApacheDS 0.9.3 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.3) | 01/Nov/2005 |
-| ApacheDS 0.9.2 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.2) | 30/Aug/2005 |
-| ApacheDS 0.9.1 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.1) | 30/Jul/2005 |
-| ApacheDS 0.9.0 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.0) | 08/May/2005 |
-
-</center>
-
-<DIV class="note" markdown="1">
-We encourage you to verify the integrity of the downloaded file using:
-
-* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-* the MD5 file (checksum).
-</DIV>
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-
-
-Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
\ No newline at end of file
diff --git a/content/apacheds/download/download-archive.mdtext b/content/apacheds/download/download-archive.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/apacheds/download/download-archive.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-linux-bin.mdtext b/content/apacheds/download/download-linux-bin.mdtext
deleted file mode 100644
index db75344..0000000
--- a/content/apacheds/download/download-linux-bin.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Linux Binary Installer
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-linux-deb.mdtext b/content/apacheds/download/download-linux-deb.mdtext
deleted file mode 100644
index ba4ac75..0000000
--- a/content/apacheds/download/download-linux-deb.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Linux Debian Package
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-linux-rpm.mdtext b/content/apacheds/download/download-linux-rpm.mdtext
deleted file mode 100644
index 576da7d..0000000
--- a/content/apacheds/download/download-linux-rpm.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Linux RPM Package
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-macosx.mdtext b/content/apacheds/download/download-macosx.mdtext
deleted file mode 100644
index 7259ee1..0000000
--- a/content/apacheds/download/download-macosx.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Mac OS X
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-sources.mdtext b/content/apacheds/download/download-sources.mdtext
deleted file mode 100644
index 82f23ea..0000000
--- a/content/apacheds/download/download-sources.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Download for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/download/download-windows.mdtext b/content/apacheds/download/download-windows.mdtext
deleted file mode 100644
index 3752996..0000000
--- a/content/apacheds/download/download-windows.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Download for Windows
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/apacheds/downloads.mdtext b/content/apacheds/downloads.mdtext
deleted file mode 100644
index 03d3c1e..0000000
--- a/content/apacheds/downloads.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-ApacheDS is a multi-platform application and runs on Mac OS X, Linux and Windows.
-
-Please select your installer download:
-
-* ![Download](../images/download-linux.png) [Download Linux Binary installer](download/download-linux-bin.html)
-* ![Download](../images/download-linux.png) [Download Linux Debian DEB installer](download/download-linux-deb.html)
-* ![Download](../images/download-linux.png) [Download Linux Fedora RPM installer](download/download-linux-rpm.html)
-* ( we don't have a MAC OSX installer for this version...)
-* ![Download](../images/download-windows.png) [Download Windows installer](download/download-windows.html)
-* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive.html)
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
\ No newline at end of file
diff --git a/content/apacheds/features.mdtext b/content/apacheds/features.mdtext
deleted file mode 100644
index dc36af0..0000000
--- a/content/apacheds/features.mdtext
+++ /dev/null
@@ -1,156 +0,0 @@
-Title: Features
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS Features
-
-The Apache Directory Server is an embeddable LDAP server implemented in pure Java. It has several features that make it unique among LDAP servers. Some of these featurea are as follows:
-
-* Designed as an LDAP and X.500 platform; plugable components and subsystems make ApacheDS extremely modular and ideal for experiments with various aspects of the LDAP protocol.
-* The server's frontend is completely separable from its backend and vice-versa making it very flexible for implementing virtual directories, proxy servers and gateways to X.500 directories.
-* Several backends can be implemented and plugged into the server's partition nexus. The server supports a BTree based partition out of the box but any backing store can be used to implement a partition as long as it conforms to interfaces.
-* The server exposes aspects of administration via a special system backend. LDAP can be used to manage these concerns through the system naming context at ou=system.
-* The server contains a server side JNDI LDAP provider as the facade for the entire backend subsystem. JNDI operations are directly translated by this provider into operations against the nexus and the target partitions storing server entries.
-* The server's networking code, MINA (Multipurpose Infrastructure for Network Applications) was designed for pluggable protocol providers, of all sorts and not just LDAP. MINA gives ApacheDS the ability to handle large amounts of concurrency.
-* LDAP Stored Procedures and Triggers are scheduled for the next major version of ApacheDS.
-* LDAPv3 compatible certified by the OpenGroup
-
-
-# OID assignements Scheme
-
-*OID* strings are unique numeric identifiers based off of a hierarchical numeric namespace controlled by a central authority on the Internet: **IANA** (Internet Assigned Numbers Authority).
-
-**IANA** allows companies and organizations to register for a specific OID base called an enterprise number. There can only be one **IANA** Enterprise Number per organization.
-
-## The ASF's Enterprise Number
-
-**Apache** has such an enterprise number. You can look at the **IANA** assigned numbers here. Here's the record in this database for the *Apache Software Foundation*:
-
-
- :::text
- Apache Software Foundation
-
- 18060
- The Apache Software Foundation
- Alex Karasulu
- akarasulu@apache.org
-
-This means **the ASF** can use the following unique OID base _1.3.6.1.4.1.18060_ for any of it's needs. However we internal here at **the ASF** need some kind of scheme for assigning these numbers internally so we do not have collisions.
-
-
-## Current Assignments
-
-Here's what we've assigned to date:
-
-| Branch Assignement | Assign To | Contact Person |
-|:-:|:-:|:-:|
-| 1.3.6.1.4.1.18060 | ASF | Alex Karasulu |
-| 1.3.6.1.4.1.18060.0 | Directory | Alex Karasulu |
-| 1.3.6.1.4.1.18060.1 | Geronimo | Alan Cabrera |
-| 1.3.6.1.4.1.18060.2 | Apache Infrastructure | Ben Laurie |
-| 1.3.6.1.4.1.18060.3 | Maven | Jason Van Zyl |
-| 1.3.6.1.4.1.18060.4 | Tuscany | Luciano Resende |
-| 1.3.6.1.4.1.18060.5 | Triplesec | Alex Karasulu |
-| 1.3.6.1.4.1.18060.10 | Hadoop | Owen O'Malley |
-| 1.3.6.1.4.1.18060.11 | Tomcat | Bernhard Unger |
-| 1.3.6.1.4.1.18060.12 | HTTPd | Joe Orton |
-| 1.3.6.1.4.1.18060.14 | Synapse | Hiranya Jayathilaka |
-| 1.3.6.1.4.1.18060.15 | CloudStack | David Nalley |
-| 1.3.6.1.4.1.18060.16 | Apache Ambari | Paul Codding |
-| 1.3.6.1.4.1.18060.17 | Apache Fortress | Shawn McKinney |
-| 1.3.6.1.4.1.18060.18 | Apache Guacamole | Mike Jumper |
-
-
-Each contact person is the authority for assigning unique **OID** values and ranges to projects or persons. Contact that person for more assignments.
-
-
-## Making Assignments
-
-Contacts may wonder what scheme is best for making assignments. There is no rule for doing this. However some would recommend assigning the first digit past the enterprise number of an organization to be for identifying a protocol. Obviously we did not do this for **Apache**. The reason for this is because we feel it's better to model the assignments based on the structure of the organization since these are private ranges and need not conform to a global convention.
-
-However this still does not tell us how contacts should make assignments. I think this is up to you. Perhaps a good example will be how the **Directory** TLP does things which is somewhat specific to their products and the nature of their products.
-
-
-### Assignment Scheme For Apache Directory
-
-The ninth component in the **OID** could be reserved for subprojects like **ApacheDS** and **Triplesec**. This might be more attractive in TLPs with many subprojects because a single authority or contact can be used for a specific subproject. So here could be one assignment scheme:
-
-| Branch Assignement | Assign To |
-|:-:|:-:|
-| 1.3.6.1.4.1.18060.0.0 | ApacheDS |
-
-Here's how the ApacheDS OID is branched off:
-
-
-The ninth component in the **OID** could be reserved for subprojects like **ApacheDS** and **Triplesec**. This might be more attractive in TLPs with many subprojects because a single authority or contact can be used for a specific subproject. So here could be one assignment scheme:
-
-| Branch Assignement | Assign To |
-|:-:|:-:|
-| 1.3.6.1.4.1.18060.0.0 | ApacheDS LDAP Controls |
-| 1.3.6.1.4.1.18060.0.1 | ApacheDS LDAP Extended Operations |
-| 1.3.6.1.4.1.18060.0.2 | ApacheDS LDAP Supported Features |
-| 1.3.6.1.4.1.18060.0.3 | ApacheDS LDAP Protocol Mechanisms |
-| 1.3.6.1.4.1.18060.0.4 | ApacheDS LDAP Attribute Values |
-| 1.3.6.1.4.1.18060.0.4.X.0 | ApacheDS LDAP Schema syntaxes |
-| 1.3.6.1.4.1.18060.0.4.X.1 | ApacheDS LDAP Schema matchingRules |
-| 1.3.6.1.4.1.18060.0.4.X.2 | ApacheDS LDAP Schema attributeTypes |
-| 1.3.6.1.4.1.18060.0.4.X.3 | ApacheDS LDAP Schema objectClasses |
-| 1.3.6.1.4.1.18060.0.4.X.4 | ApacheDS LDAP Schema dITStructureRules |
-| 1.3.6.1.4.1.18060.0.4.X.5 | ApacheDS LDAP Schema nameForms |
-
-
-where **X** is a unique number associated with one of the specific **ApacheDS** schema.
-
-NOTE: _dITContentRules_ do not have their own OID, rather they reference the **OID** of the structural _objectClass_ they influence. The same sort of situation exists for _matchingRuleUse_ which uses the **OID** of the _matchingRule_ it is associated with.
-
-And here are the schema **OID**s (where the **X** is substituted by the proper number):
-
-
-| Branch Assignement | Assign To |
-|:-:|:-:|
-| 1.3.6.1.4.1.18060.0.4.0 | ApacheDS LDAP Meta Schema |
-| 1.3.6.1.4.1.18060.0.4.1 | ApacheDS LDAP Apache Schema |
-| 1.3.6.1.4.1.18060.0.4.2 | ApacheDS LDAP Apache DNS Schema |
-| 1.3.6.1.4.1.18060.0.4.3 | Apache Directory Documentation Examples Schema |
-| 1.3.6.1.4.1.18060.0.4.4 | Quartz Schema |
-| 1.3.6.1.4.1.18060.0.4.5 | Bean Schema |
-
-(Some of those schema are long gone, but the assignement is still existing)
-
-
-### OID's for ApacheDS specific controls
-
-Here are the new **OID**s used:
-
-| OID | Control |
-|:-:|:-:|
-| 1.3.6.1.4.1.18060.0.0.1 | Cascade Control |
-
-### OID's for the extended operations
-
-Here are the new **OID**s used:
-
-| OID | Extended Operation |
-|:-:|:-:|
-| 1.3.6.1.4.1.18060.0.1.1 | LaunchDiagnosticUiRequest |
-| 1.3.6.1.4.1.18060.0.1.2 | LaunchDiagnosticUiResponse |
-| 1.3.6.1.4.1.18060.0.1.3 | GracefulShutdownRequest |
-| 1.3.6.1.4.1.18060.0.1.4 | GracefulShutdownResponse |
-| 1.3.6.1.4.1.18060.0.1.5 | GracefulDisconnect |
-| 1.3.6.1.4.1.18060.0.1.6 | StoredProcedureRequest |
-| 1.3.6.1.4.1.18060.0.1.7 | StoredProcedureResponse |
-
diff --git a/content/apacheds/gen-docs/.htaccess b/content/apacheds/gen-docs/.htaccess
deleted file mode 100644
index d98718c..0000000
--- a/content/apacheds/gen-docs/.htaccess
+++ /dev/null
@@ -1,6 +0,0 @@
-RewriteEngine on
-
-RewriteBase /apacheds/gen-docs
-
-RewriteRule ^latest$ 2.0.0.AM25/
-RewriteRule ^latest/(.*)$ 2.0.0.AM25/$1
diff --git a/content/apacheds/index.mdtext b/content/apacheds/index.mdtext
deleted file mode 100644
index 3f0fab8..0000000
--- a/content/apacheds/index.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: Welcome to ApacheDS
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS™
-
-**ApacheDS™** is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-
-<DIV class="info" markdown="1">
-<strong>ApacheDS 1.0</strong> is considered a dead branch. <strong>ApacheDS 1.5.X</strong> are intermediary versions toward <strong>ApacheDS 2.0</strong>, which is currently being developed.
-
-Users should start with the latest *2.0* version, even if it's not stabilized yet.
-</DIV>
\ No newline at end of file
diff --git a/content/apacheds/internal-design-guide/internal-design-guide.mdtext b/content/apacheds/internal-design-guide/internal-design-guide.mdtext
deleted file mode 100644
index ceb7c8f..0000000
--- a/content/apacheds/internal-design-guide/internal-design-guide.mdtext
+++ /dev/null
@@ -1,19 +0,0 @@
-Title: Apache DS - Internal Design Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Internal Design Guide
diff --git a/content/apacheds/kerberos-ug/1-kerberos.mdtext b/content/apacheds/kerberos-ug/1-kerberos.mdtext
deleted file mode 100644
index 46bc4c4..0000000
--- a/content/apacheds/kerberos-ug/1-kerberos.mdtext
+++ /dev/null
@@ -1,53 +0,0 @@
-Title: 1 - What is Kerberos ?
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-NavNext: 1.1-introduction.html
-NavNextText: 1.1 - Introduction
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [1.1 - Introduction](1.1-introduction.html)
- * [1.1.1 - Realms](1.1.1-realms.html)
- * [1.1.2 - Principal](1.1.2-Principal.html)
- * [1.1.3 - Keys](1.1.3-keys.html)
- * [1.1.4 - KDC (Key Distribution Center)](1.1.4-kdc.html)
- * [1.1.5 - Database](1.1.5-database.html)
- * [1.1.6 - AS (Authentication Server)](1.1.6-as.html)
- * [1.1.7 - TGS (Ticket Granting Server)](1.1.7-tgs.html)
- * [1.1.8 - Tickets](1.1.8-tickets.html)
-* [1.2 - Resources](1.2-resources.html)
- * [1.2.1 - Kerberos Articles](1.2.1-kerberos-articles.html)
- * [1.2.2 - Microsoft compatibility](1.2.2-microsoft-compatibility.html)
- * [1.2.3 - Standards](1.2.3-standards.html)
-
-# 1 - What is Kerberos ?
-
-**Kerberos** is the result of an effort by the MIT, known as **Project Athena**. It started in May 1983, and resulted in many internal versions at the MIT, and finally, **Kerberos V4** was openly released in January 1989. **Kerberos V5* is available since 1993.
-
-**Kerberos** is a computer network authentication protocol, which provides a secure Single Sign On(SSO) based on a trusted third-party mutual authentication service.
-
-* It is secure because the user's password is never transmitted over the wire. **Kerberos** uses **Tickets** which are negociated with the server, with a limited time to live.
-
-* It is a SSO system, a single ticket can be used by all the services till its validity expires.
-
-* It acts as a trusted third party cause all the keys of users and services are managed by the **Kerberos** server.
-
-* It is a mutual authentication system that guarantees not only that the user is who he is pretending to be, but also because each user is guaranteed that the services he has access to are the expected services.
-
-**Kerberos** is widely used in the **Microsoft™** world, as all the authentication mechanisms on **Microsoft™** are done through this protocol.
diff --git a/content/apacheds/kerberos-ug/1.1-introduction.mdtext b/content/apacheds/kerberos-ug/1.1-introduction.mdtext
deleted file mode 100644
index efaed7b..0000000
--- a/content/apacheds/kerberos-ug/1.1-introduction.mdtext
+++ /dev/null
@@ -1,69 +0,0 @@
-Title: 1.1 - Introduction
-NavPrev: 1-kerberos.html
-NavPrevText: 1 - What is Kerberos ?
-NavUp: 1-kerberos.html
-NavUpText: 1 - What is Kerberos ?
-NavNext: 1.1.1-realms.html
-NavNextText: 1.1.1 - Realms
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [1.1.1 - Realms](1.1.1-realms.html)
-* [1.1.2 - Principal](1.1.2-Principal.html)
-* [1.1.3 - Keys](1.1.3-keys.html)
-* [1.1.4 - KDC (Key Distribution Center)](1.1.4-kdc.html)
-* [1.1.5 - Database](1.1.5-database.html)
-* [1.1.6 - AS (Authentication Server)](1.1.6-as.html)
-* [1.1.7 - TGS (Ticket Granting Server)](1.1.7-tgs.html)
-* [1.1.8 - Tickets](1.1.8-tickets.html)
-
-# 1.1 - Introduction
-
-The **Kerberos** server is a part of the **Apache Directory Server** : it uses the **LDAP** server as a backend, but has its own network layer. which makes it easy to install, compared to other solutions where you have two components : a backend(typically an LDAP server) on one side, and the Kerberos Server on the other.
-
-We also have decent GUI support for editing the configuration in Studio, which allows administrators to tweak their server's functionality in a convenient way.
-
-The Kerberos server of Apache Directory implements RFC 1510 and RFC 4120, the Kerberos V5 Network Authentication Service. The purpose of Kerberos is to verify the identities of principals (users or services) on an unprotected network. While generally thought of as a single-sign-on technology, Kerberos's true strength is in authenticating users without ever sending their passwords over the network. Kerberos is designed for use in open (untrusted) networks and, therefore, operates under the assumption that packets traveling along the network can be read, modified, and inserted at will. This chart provides a good description of the protocol workflow.
-
-Kerberos is named after the three-headed dog that guards the gates to Hades. The three heads are the client, the Kerberos server, and the network service being accessed.
-
-## What is it all about ?
-
-The idea is to have a server being able to deliver a user some tickets that can be used by services. Those tickets are trusted for a certain period of time. The most important point is that the service does not have to ask any server to validate those tickets : they are trusted because they have been generated by a trusted server.
-
-This is a two round process :
-1 - The client requests a Ticket to the Kerberos server
-2 - The client submits the ticket to the requested service
-
-The the client is authenticated.
-
-In any case, there is no way to fake an identity or to forge a ticket for accessing a service, nor one can reuse a Ticket that has already been used.
-
-## Apache Kerberos Server
-
-The Apache Directory Kerberos server uses **Apache MINA** in networking layer and the **Apache Directory** as the backend
-for storing principals and associated keys.
-
-The Kerberos server provides:
-
-* Authentication service
-* Ticket-granting service
-* Pre-authentication support(PA-ENC-TIMESTAMP)
-* support for des-cbc-md5, des3-cbc-sha1-kd, aes128-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96 and rc4-hmac encryption systems
-* UDP and TCP transports
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/1.1.1-realms.mdtext b/content/apacheds/kerberos-ug/1.1.1-realms.mdtext
deleted file mode 100644
index 1d3c151..0000000
--- a/content/apacheds/kerberos-ug/1.1.1-realms.mdtext
+++ /dev/null
@@ -1,59 +0,0 @@
-Title: 1.1.1 - Realms
-NavPrev: 1.1-introduction.html
-NavPrevText: 1.1 - Introduction
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.2-principals.html
-NavNextText: 1.1.2 - Principals
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.1 - Realms
-
-A **Realm** is associated with a Kerberos administrative domain. In other words, it covers everything the Kerberos server manages :
-* Users
-* Services
-
-Note that a Kerberos Server manages **one** Realm only, a Realm can be managed by more than one Kerberos server : this is mandatory to avoid a single point of failure, if a Kerberos server halts for any reason.
-
-## Realm name
-
-In order to distinguish the **Realms**, we give them a unique name. This name can be anything, but a convention is to use the DNS name of the Kerberos server, and to use uppercase.
-
-For instance, say that th Kerberos server is installed on a machine whose domain name is **apache.org**, then we will use **APACHE.ORG** as the **Realm** name (but you could use **Apache.org** or even **MyApacheDomain**).
-
-<DIV class="info" markdown="1">
-Note that the name is case sensitive. **apache.org** is a different realm than **APACHE.ORG**.
-</DIV>
-
-The **Realm** name wil be used all over Kerberos to name **Principals** and **Services**
-
-## Default Realm for ApacheDS Kerberos Server
-
-When **ApacheDS Kerberos Server** installed, the default **Realm** name is set to **EXAMPLE.COM**. This can be changed either using **Studio**, by accessing the server configuration and changing the 'Primary KDC Realm', as show in this picture :
-
-<DIV align="center">
- <img alt="Kerberos Realm Configuration" src="images/kerberos-realm-config.png">
-</DIV>
-
-or by modifying the LDIF configuration directly, by modifying the following entry :
-
- :::text
- dn: ads-serverId=kerberosServer,ou=servers,ads-directoryServiceId=default,ou=config
- ...
- ads-krbprimaryrealm: EXAMPLE.COM
- ...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/1.1.2-principals.mdtext b/content/apacheds/kerberos-ug/1.1.2-principals.mdtext
deleted file mode 100644
index 9bd96bf..0000000
--- a/content/apacheds/kerberos-ug/1.1.2-principals.mdtext
+++ /dev/null
@@ -1,58 +0,0 @@
-Title: 1.1.2 - Principals
-NavPrev: 1.1.1-realms.html
-NavPrevText: 1.1.1 - Realms
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.3-keys.html
-NavNextText: 1.1.3 - Keys
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.2 - Principals
-
-The Kerberos **Principal** is any entity to which the server can assign a **Ticket**. Typically, we can think of three kinds of **Principals** :
-
- * Users
- * Services
- * Hosts
-
-Each **Principal** is unique in the Kerberos database. This is the way we identify the entity.
-
-A Kerberos **Principal** is a combination of three parts :
-
- * the name (the primary)
- * an optional instance
- * the realm they are associated with
-
-The optional instance is used to provide more than one role to an entity, without having to create N Principals for a single user (an administrator is also a normal user, and it's good to qualify the user by adding his admin qualificiation in one **Principal** to create a new and easy to remember **Principal**)
-
-The **Principal** syntax is the following :
-
- :::text
- <primary> ['/' <instance>]* '@' <realm>
-
-<DIV class="info" markdown="1">
-For hosts, we use "host" as a primary, and the instances are the hostnames.
-</DIV>
-
-Those are examples of valid **Principals**
-
- ::test
- john@APACHE.ORG A user
- john/admin@APACHE.ORG A user who is an admin
- host/www.apache.org/apache.org@APACHE.ORG A host with two hostnames
- ldap/www.apache.org@APACHE.ORG A service (Ldap server)
diff --git a/content/apacheds/kerberos-ug/1.1.3-keys.mdtext b/content/apacheds/kerberos-ug/1.1.3-keys.mdtext
deleted file mode 100644
index 10dd8b6..0000000
--- a/content/apacheds/kerberos-ug/1.1.3-keys.mdtext
+++ /dev/null
@@ -1,105 +0,0 @@
-Title: 1.1.3 - Keys
-NavPrev: 1.1.2-principals.html
-NavPrevText: 1.1.2 - Principals
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.4-kdc.html
-NavNextText: 1.1.4 - KDC (Key Distribution Center)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.3 - Keys
-
-The **Kerberos** server generates keys based on the password we provide. Those keys are stored in the server and used to encrypt and decrypt the data being exchanged with the client.
-
-The Key is computed using either the user's password or a random value, and is salted with the realm.
-
-<DIV class="INFO" markdown="1">
-Using the realm as the salt offers a level of protection : if one's key is broken on a realm, that does not mean the password is compromised. The key on another realm would still be safe.
-</DIV>
-
-## How it works in ApacheDS ?
-
-When you add a new entry in the server, it generates a secret key using the password and the **Principal** of the added entry. For instance, say we add this entry :
-
- :::text
- dn: uid=hnelson,ou=users,dc=example,dc=com
- objectClass: inetOrgPerson
- objectClass: organizationalPerson
- objectClass: person
- objectClass: krb5principal
- objectClass: krb5kdcentry
- objectClass: top
- uid: hnelson
- userPassword: secret
- krb5PrincipalName: hnelson@EXAMPLE.COM
- krb5KeyVersionNumber: 0
- cn: Horatio Nelson
- sn: Nelson
-
-the server will automatically create the keys (each one is encoded in ASN.1 BER format), set them as values of krb5key attribute and add to the entry.
-
-Each value of krb5Key attribbute will be in the following ASN.1 format :
-
- ::text
- EncryptionKey ::= SEQUENCE {
- keytype [0] Int32 -- actually encryption type --,
- keyvalue [1] OCTET STRING
- }
-
-<DIV class="INFO" mardown="1">
-There is a special case : if the password is "randomkey", the key will be generated using a random number created on the fly.
-</DIV>
-
-<DIV class="INFO" mardown="1">
-Note that we will generate more than one key : we generate one key for each of the supported encryption types.
-
-ApacheDS Kerberos server supports the following set of encryption types :
-
- * DES_CBC_MD5
- * DES3_CBC_SHA1_KD
- * RC4_HMAC
- * AES128_CTS_HMAC_SHA1_96
- * AES256_CTS_HMAC_SHA1_96
-
-The default encryption types used by the server are, aes128-cts-hmac-sha1-96, des-cbc-md5 and des3-cbc-sha1-kd DES_CBC_MD5. The supported encryption types can be added or removed by modifying the Kerberos server configuration.
-</DIV>
-
-
-The modified entry will now look like :
-
- :::text
- dn: uid=hnelson,ou=users,dc=example,dc=com
- objectClass: inetOrgPerson
- objectClass: organizationalPerson
- objectClass: person
- objectClass: krb5principal
- objectClass: krb5kdcentry
- objectClass: top
- uid: hnelson
- userPassword: secret
- krb5PrincipalName: hnelson@EXAMPLE.COM
- krb5KeyVersionNumber: 0
- cn: Horatio Nelson
- sn: Nelson
- krb5Key: '0x30 0x29 0xA0 0x03 0x02 0x01 0x12 0xA1 0x22 0x04 0x20 0x3D 0x33 0x31 0x8F 0xBE ...'
- krb5Key: '0x30 0x21 0xA0 0x03 0x02 0x01 0x10 0xA1 0x1A 0x04 0x18 0x57 0x07 0xCE 0x29 0x52 ...'
- krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x17 0xA1 0x12 0x04 0x10 0x87 0x8D 0x80 0x14 0x60 ...'
- krb5Key: '0x30 0x11 0xA0 0x03 0x02 0x01 0x03 0xA1 0x0A 0x04 0x08 0xF4 0xA7 0x13 0x64 0x8A ...'
- krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x11 0xA1 0x12 0x04 0x10 0xAD 0x21 0x4B 0x38 0xB6 ...'
-
-Each of these keys match one of the EncryptionType.
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/1.1.4-kdc.mdtext b/content/apacheds/kerberos-ug/1.1.4-kdc.mdtext
deleted file mode 100644
index adf247b..0000000
--- a/content/apacheds/kerberos-ug/1.1.4-kdc.mdtext
+++ /dev/null
@@ -1,50 +0,0 @@
-Title: 1.1.4 - KDC (Key Distribution Center)
-NavPrev: 1.1.3-keys.html
-NavPrevText: 1.1.3 - Keys
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.5-database.html
-NavNextText: 1.1.5 - Database
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.4 - KDC (Key Distribution Center)
-
-The **KDC** contains three components :
-* an Authentication Service
-* a Ticket Granting Service
-* a database (ApacheDS)
-
-The **KDC** role is to authenticate users and distribute tickets based on the information stored in its database.
-
-The **Apache Kerberos Server** contains all these three components and hence is a **KDC**.
-
-<DIV class="info" markdown="1">
-We could allow the **Kerberos Server** to manage more than one **KDC**, but this is not currently possible.
-</DIV>
-
-The **KDC** is associated with a **Realm**.
-
-The following schema expose the way the **KDC** works :
-
-<DIV align="center">
- <img alt="KDC usage" src="images/kerberos-auth.png">
-</DIV>
-
-In order to use a service, the client needs to get a ticket for this service from the **KDC**. This requires a two step process, where the client first authenticates himself, and then get back a ticket to use with the targeted server.
-
-Though the Autehntication and Ticket Granting services look like running in separate servers, a signle Kerberos server implementation oftent contains both.
diff --git a/content/apacheds/kerberos-ug/1.1.5-database.mdtext b/content/apacheds/kerberos-ug/1.1.5-database.mdtext
deleted file mode 100644
index 7827f40..0000000
--- a/content/apacheds/kerberos-ug/1.1.5-database.mdtext
+++ /dev/null
@@ -1,111 +0,0 @@
-Title: 1.1.5 - Database
-NavPrev: 1.1.4-kdc.html
-NavPrevText: 1.1.4 - KDC (Key Distribution Center)
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.6-as.html
-NavNextText: 1.1.6 - AS (Authentication Server)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.5 - Database
-
-This is the place where all the private keys are stored. It is very common to store all the keys in an LDAP server, even more natural when the **Kerberos** server is a part of an existing LDAP server, like **Apache Directory Server* !
-
-When **Apache Directory Server** was started, it was also thought as a repository for **Kerberos** keys, so we just had to develop the logic to manage those keys, and the Kerberos protocol.
-
-In other words, you have everything embedded in a single server :
-* The LDAP server to store the keys and other related information
-* The Kerberos protocol
-* The Authentication Server
-* The Ticket Granting Server
-
-We will focus on the database in this section.
-
-## Storage
-
-We store everthing related to users, hosts and services in the LDAP base, as entries. In order to be able to retrieve them, we have to store them in a known place in the hierarchy. This position is fknown by the kerberos server using the
-**Search Base DN** parameter.
-
-Everytime the **Kerberos** server received a request for a ticket from a principal, it will do a LDAP search starting from the **Search Base DN**, looking for any entry matching the filter _'(krb5PrincipalName=<the principal>)'_. This entry should contain the Kerberos keys that will be used to generate the ticket.
-
-One more requirement : the key as a version which allows a user to keep going with a previous key when he just changed its password (an operation that will change the Kerberos keys).
-
-So for an LDAP entry to be seen as a valid Kerberos entry, it has to contain a _Krb5PrincipalName_, a _Krb5Key_ and one more attribute, the _Krb5KeyVersionNumber_.
-
-
-## Structure
-
-There is an existing **LDAP** schema to manage the keys and other information, named **krb5kdc**. It contains 3 ObjectClasses and 15 AttributeTypes.
-
-All the ObjectClasses are auxilliary.
-
-### krb5Principal
-
-This ObjectClass is used to store a Principal. It contains one mandatory AttributeType, _krb5PrincipalName_, and two optionnal (_cn_ and _krb5PrincipalRealm_)
-
-### krb5Realm
-
-This ObjectClass describes a Kerberos Realm. It just contains the Realm's name (_krb5RealName_ AttributeType).
-
-## krb5kdcEntry
-
-This ObjectClass is used to store all the information needed to manage a Kerberos user or service. It has one mandatory AttributeType, _krb5KeyVersioNumber_, which is set to 0 for newly crated users or services, and incremented after each modification done on the password (which leads to the generation of new keys).
-
-Here is a list of optional AttributeTypes the entry can have :
-
-| AttributeType | Description |
-|---|---|
-| krb5ValidStart | The date at which the keys are valid |
-| krb5ValidEnd | The date at which the keys aren't valid any more |
-| krb5PasswordEnd | The end of password validity |
-| krb5MaxLife | The maximum duration |
-| krb5MaxRenew | Th maximum number of renew |
-| krb5KDCFlags | The KDC flags |
-| krb5EncryptionType | The EncryptionTypes |
-| krb5Key | The generated keys |
-| krb5AccountDisabled | The account has been disabled |
-| krb5AccountLockedOut | The account has been locked out |
-| krb5AccountExpirationTime | The account expiration time |
-
-## Sample
-
-Here is a sample entry, which has the _Krb5KdcEntry_ and _Krb5Principal_ ObjectClasses set :
-
-
- :::text
- dn: uid=hnelson,ou=users,dc=example,dc=com
- objectClass: inetOrgPerson
- objectClass: organizationalPerson
- objectClass: person
- objectClass: krb5principal
- objectClass: krb5kdcentry
- objectClass: top
- uid: hnelson
- userPassword: secret
- krb5PrincipalName: hnelson@EXAMPLE.COM
- krb5KeyVersionNumber: 0
- cn: Horatio Nelson
- sn: Nelson
- krb5Key: '0x30 0x29 0xA0 0x03 0x02 0x01 0x12 0xA1 0x22 0x04 0x20 0x3D 0x33 0x31 0x8F 0xBE ...'
- krb5Key: '0x30 0x21 0xA0 0x03 0x02 0x01 0x10 0xA1 0x1A 0x04 0x18 0x57 0x07 0xCE 0x29 0x52 ...'
- krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x17 0xA1 0x12 0x04 0x10 0x87 0x8D 0x80 0x14 0x60 ...'
- krb5Key: '0x30 0x11 0xA0 0x03 0x02 0x01 0x03 0xA1 0x0A 0x04 0x08 0xF4 0xA7 0x13 0x64 0x8A ...'
- krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x11 0xA1 0x12 0x04 0x10 0xAD 0x21 0x4B 0x38 0xB6 ...'
-
-
-
diff --git a/content/apacheds/kerberos-ug/1.1.6-as.mdtext b/content/apacheds/kerberos-ug/1.1.6-as.mdtext
deleted file mode 100644
index 83da3dc..0000000
--- a/content/apacheds/kerberos-ug/1.1.6-as.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: 1.1.6 - AS (Authentication Server)
-NavPrev: 1.1.5-database.html
-NavPrevText: 1.1.5 - Database
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.7-tgs.html
-NavNextText: 1.1.7 - TGS (Ticket Granting Server)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.6 - AS (Authentication Server)
-
-One of the two server components of a **Kerberos** server is the Authentication Server, which authenticates clients, and issues tickets (**TGT**, or _Ticket Granting Ticket_) that the user can send to the **TGS** to get a service ticket.
-
-<DIV class="info" markdown="1">
-The <B>TGT</B>, or <EM>Ticket Granting Ticket</EM>, is a ticket that a client can use to get a service ticket. In fact, the authentication server considers the <B>TGS</B> as just another service, and generates a ticket for the user to access this service.
-</DIV>
-
-The beauty of the **AS** is that it does not verify that the client issuing a request is a valid client : it just returns a tickat that an attacker won't be able to process if he does not have the client's password.
-
-## Exhanges between the client and the AS
-
-As we can see, for the client to get a **TGT**, it's just a matter of sending a simple request, which is sent without any encryption whatsoever (some might consider that a BER encoded message is already cryptic enough, though ;-).
-
-Here is the standard exchange :
-
-<DIV align="center">
- <img alt="Kerberos Authentication with no pre-auth" src="images/kerberos-as-no-padata.png">
-</DIV>
-
-There is still a potential security breach in this scenario : as the server issues a **TGT** to the client, containing the secret key built using the user's password, it is possible to decrypt the ticket using a brute force attack (and this is more likely to happen if the password is weak...)
-
-Of course, as each ticket has a limited life time, the ticket won't be valid when the attaker successfully cracked the ticket, but that doesn't matter : the user's password is now known, and a new ticket can be requested safely, giving access to the services.
-
-**Kerberos 5** introduced a mechanism to workaround this issue : the user has to provide a proof that he is who he pretends to be. As we can see, it defeats the premise we made : the **Kerberos** still wants to check the users...
-
-Note that it's an option, so if you trust your users' password strength, then you don't need to send the server this proof.
-
-### Pre-Authentication
-
-Now, let's see how does a client 'proves' that he is who he pretends to be. The protocol allows the server to ask for some proof, by the means of asking the client to send the server a timestamp encrypted with the user's secret key : if the server can decrypt the timestamp using the client's secret key, then that proves the client's identity, and now the server can send the **TGT**. This exchange is called PreAuthentication.
-
-Here is the exchange, when :
-
-<DIV align="center">
- <img alt="Kerberos Authentication with pre-auth" src="images/kerberos-as-padata.png">
-</DIV>
-
-
-
-
diff --git a/content/apacheds/kerberos-ug/1.1.7-tgs.mdtext b/content/apacheds/kerberos-ug/1.1.7-tgs.mdtext
deleted file mode 100644
index 01876be..0000000
--- a/content/apacheds/kerberos-ug/1.1.7-tgs.mdtext
+++ /dev/null
@@ -1,44 +0,0 @@
-Title: 1.1.7 - TGS (Ticket Granting Server)
-NavPrev: 1.1.6-as.html
-NavPrevText: 1.1.6 - As (Authentication Server)
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.1.8-tickets.html
-NavNextText: 1.1.8 - Tickets
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.7 - TGS (Ticket Granting Server)
-
-The second major service is the **Ticket Granting Server**, which is the service that delivers tickets for all the managed services to the users.
-
-A client can access to this service fater having been authenticated - ie, after having received a ticket allowing it to access the **TGS** from the **AS** -.
-
-At this point, all the exchanges are encrypted using the user session key.
-
-Ther is not too much to tell about this service, except that ach request sent by the client contains the targeted service principal name, and the ticket issued by the **AS**.
-
-## How it works ?
-
-When the **TGS** receives a request, it will read the ticket contained in the request, and will validate it. If the ticket has been issued by the **AS**, then the **TGS** has the **AS** secret key and can decrypt the ticket, otherwise it's potentially a forged ticket, and it will be discarded.
-
-The **TGS** then generate a ticket for the targted service, and enncryt it using the service's secret key, then encapsulate this encypted ticket into a response which will be itself encrypted using the client's secret key.
-
-The client will receive this response, will decrypt it and extract the encypted ticket, and will send this encrypted ticket to the targeted service, which will be able to decrypt it and validate it.
-
-Of course, in the mean time, many checks will be done relative to the ticket validity, so one can be assured that the service is only accessible by those with the credential to do so.
-
diff --git a/content/apacheds/kerberos-ug/1.1.8-tickets.mdtext b/content/apacheds/kerberos-ug/1.1.8-tickets.mdtext
deleted file mode 100644
index 0ddea84..0000000
--- a/content/apacheds/kerberos-ug/1.1.8-tickets.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 1.1.8 - Tickets
-NavPrev: 1.1.7-tgs.html
-NavPrevText: 1.1.7 - TGS (Ticket Granting Server)
-NavUp: 1.1-introduction.html
-NavUpText: 1.1 - Introduction
-NavNext: 1.2-resources.html
-NavNextText: 1.2 - Resources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1.8 - Tickets
-
-All the **kerberos** system is based on the dstribution of tickets.
-
-A **Ticket** is an encrypted data generated by the Kerberos Server and used by a service. It gives the right for a user to access a service, assuming the service can decrypt the ticket.
-
-It also contains many other fields, like the ticket's expiration date, for instance.
-
-## What's inside a Ticket ?
-
-Here are the information that can be found in a ticket. Most of them are encrypted using the service's secret key.
-
-<DIV align="center">
- <img alt="Ticket" src="images/ticket.png">
-</DIV>
-
-The blue boxes are optionnal informations.
diff --git a/content/apacheds/kerberos-ug/1.2-resources.mdtext b/content/apacheds/kerberos-ug/1.2-resources.mdtext
deleted file mode 100644
index e27c023..0000000
--- a/content/apacheds/kerberos-ug/1.2-resources.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: 1.2 - Resources
-NavPrev: 1.1-intoduction.html
-NavPrevText: 1.1 - Introduction
-NavUp: 1-kerberos.html
-NavUpText: 1 - What is Kerberos ?
-NavNext: 1.2.1-kerberos-articles.html
-NavNextText: 1.2.1 - Kerberos Articles
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [1.2.1 - Kerberos Articles](1.2.1-kerberos-articles.html)
-* [1.2.2 - Microsoft compatibility](1.2.2-microsoft-compatibility.html)
-* [1.2.3 - Standards](1.2.3-standards.html)
diff --git a/content/apacheds/kerberos-ug/1.2.1-kerberos-articles.mdtext b/content/apacheds/kerberos-ug/1.2.1-kerberos-articles.mdtext
deleted file mode 100644
index cd5ff38..0000000
--- a/content/apacheds/kerberos-ug/1.2.1-kerberos-articles.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: 1.2.1 - Kerberos Articles
-NavPrev: 1.2-resources.html
-NavPrevText: 1.2 - Resources
-NavUp: 1.2-resources.html
-NavUpText: 1.2 - Resources
-NavNext: 1.2.2-microsoft-compatibility.html
-NavNextText: 1.2.2 - Microsoft compatibility
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2.1 - Kerberos Articles
-
-Here are some articles that are interesting to read :
-
-* [Centralized Authentication with Kerberos 5, Part I](http://www.linuxjournal.com/article/7336)
-
-* [Centralized Authorization Using a Directory Service, Part II](http://www.linuxjournal.com/article/7334)
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.mdtext b/content/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.mdtext
deleted file mode 100644
index 3ef340e..0000000
--- a/content/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: 1.2.2 - Microsoft Compatibility
-NavPrev: 1.2.1-kerberos-articles.html
-NavPrevText: 1.2.1 - Kerberos Articles
-NavUp: 1.2-resources.html
-NavUpText: 1.2 - Resources
-NavNext: 1.2.3-standards.html
-NavNextText: 1.2.3 - Standards
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2.2 - Microsoft Compatibility
-
-Some articles to expose the way Kerberos is used by Microsoft ™ :
-
-* [HTTP-Based Cross-Platform Authentication via the Negotiate Protocol](http://msdn.microsoft.com/library/default.asp?url=%2Flibrary%2Fen-us%2Fdnsecure%2Fhtml%2Fhttp-sso-2.asp)
-
-* [RFC 2478 - The Simple and Protected GSS-API Negotiation Mechanism](http://www.ietf.org/rfc/rfc2478.txt)
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/1.2.3-standards.mdtext b/content/apacheds/kerberos-ug/1.2.3-standards.mdtext
deleted file mode 100644
index ad067b5..0000000
--- a/content/apacheds/kerberos-ug/1.2.3-standards.mdtext
+++ /dev/null
@@ -1,77 +0,0 @@
-Title: 1.2.3 - Standards
-NavPrev: 1.2.2-microsoft-compatibility.html
-NavPrevText: 1.2.2 - Microsoft compatibility
-NavUp: 1.2-resources.html
-NavUpText: 1.2 - Resources
-NavNext: 2-kerberos-config.html
-NavNextText: 2 - Kerberos Configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2.3 - Standards
-
-The **Kerberos** Protocol is based on public RFCs. There is also a Kerberos woking group at the IETF, you can check [this page](http://datatracker.ietf.org/wg/krb-wg/).
-
-## Obsoleted RFCs
-
-* [RFC 1411](http://www.ietf.org/rfc/rfc1411.txt) - Telnet Authentication: Kerberos Version 4
-* [RFC 1510](http://www.ietf.org/rfc/rfc1510.txt) - The Kerberos Network Authentication Service (V5) (Obsoleted by 4120, 6649)
-
-## Valid RFS and updates
-
-* [RFC 1964](http://www.ietf.org/rfc/rfc1964.txt) - The Kerberos Version 5 GSS-API Mechanism (updated by 4121, 6649)
-* [RFC 2623](http://www.ietf.org/rfc/rfc2623.txt) - NFS Version 2 and Version 3 Security Issues and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5
-* [RFC 2712](http://www.ietf.org/rfc/rfc2712.txt) - Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)
-* [RFC 2942](http://www.ietf.org/rfc/rfc2942.txt) - Telnet Authentication: Kerberos Version 5
-* [RFC 3244](http://www.ietf.org/rfc/rfc3244.txt) - Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols
-* [RFC 3961](http://www.ietf.org/rfc/rfc3961.txt) - Encryption and Checksum Specifications for Kerberos 5
-* [RFC 3962](http://www.ietf.org/rfc/rfc3962.txt) - Advanced Encryption Standard (AES) Encryption for Kerberos 5
-* [RFC 4120](http://www.ietf.org/rfc/rfc4120.txt) - The Kerberos Network Authentication Service (V5) (Updated by 4537, 5021, 5896, 6111, 6112, 6113, 6649, 6806)
-* [RFC 4121](http://www.ietf.org/rfc/rfc4121.txt) - The Kerberos Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2 (Updated by 6112, 6542, 6649)
-* [RFC 4402](http://www.ietf.org/rfc/rfc4402.txt) - A Pseudo-Random Function (PRF) for the Kerberos V Generic Security Service Application Program Interface (GSS-API) Mechanism
-* [RFC 4537](http://www.ietf.org/rfc/rfc4537.txt) - Kerberos Cryptosystem Negotiation Extension
-* [RFC 4556](http://www.ietf.org/rfc/rfc4556.txt) - Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) (updated by 6612)
-* [RFC 4557](http://www.ietf.org/rfc/rfc4557.txt) - Online Certificate Status Protocol (OCSP) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
-* [RFC 4559](http://www.ietf.org/rfc/rfc4559.txt) - SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows
-* [RFC 4752](http://www.ietf.org/rfc/rfc4752.txt) - The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer (SASL) Mechanism
-* [RFC 4757](http://www.ietf.org/rfc/rfc4757.txt) - The RC4-HMAC Kerberos Encryption Types Used by Microsoft Windows (updated by 6649)
-* [RFC 5021](http://www.ietf.org/rfc/rfc5021.txt) - Extended Kerberos Version 5 Key Distribution Center (KDC) Exchanges over TCP
-* [RFC 5179](http://www.ietf.org/rfc/rfc5179.txt) - Generic Security Service Application Program Interface (GSS-API) Domain-Based Service Names Mapping for the Kerberos V GSS Mechanism
-* [RFC 5349](http://www.ietf.org/rfc/rfc5349.txt) - Elliptic Curve Cryptography (ECC) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
-* [RFC 5868](http://www.ietf.org/rfc/rfc5868.txt) - Problem Statement on the Cross-Realm Operation of Kerberos
-* [RFC 5896](http://www.ietf.org/rfc/rfc5896.txt) - Generic Security Service Application Program Interface (GSS-API): Delegate if Approved by Policy
-* [RFC 6111](http://www.ietf.org/rfc/rfc6111.txt) - Additional Kerberos Naming Constraints
-* [RFC 6112](http://www.ietf.org/rfc/rfc6112.txt) - Anonymity Support for Kerberos
-* [RFC 6113](http://www.ietf.org/rfc/rfc6113.txt) - A Generalized Framework for Kerberos Pre-Authentication
-* [RFC 6251](http://www.ietf.org/rfc/rfc6251.txt) - Using Kerberos Version 5 over the Transport Layer Security (TLS) Protocol
-* [RFC 6448](http://www.ietf.org/rfc/rfc6448.txt) - The Unencrypted Form of Kerberos 5 KRB-CRED Message
-* [RFC 6542](http://www.ietf.org/rfc/rfc6542.txt) - Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Channel Binding Hash Agility
-* [RFC 6560](http://www.ietf.org/rfc/rfc6560.txt) - One-Time Password (OTP) Pre-Authentication
-* [RFC 6649](http://www.ietf.org/rfc/rfc6649.txt) - Deprecate DES, RC4-HMAC-EXP, and Other Weak Cryptographic Algorithms in Kerberos
-* [RFC 6784](http://www.ietf.org/rfc/rfc6784.txt) - Kerberos Options for DHCPv6
-* [RFC 6803](http://www.ietf.org/rfc/rfc6803.txt) - Camellia Encryption for Kerberos 5
-* [RFC 6806](http://www.ietf.org/rfc/rfc6806.txt) - Kerberos Principal Name Canonicalization and Cross-Realm Referrals
-
-## Here are some drafts :
-
-* [draft-burgin-kerberos-aes-cbc-hmac-sha2](http://www.ietf.org/id/draft-burgin-kerberos-aes-cbc-hmac-sha2-02.txt) - AES Encryption with HMAC-SHA2 for Kerberos 5
-* [draft-burgin-kerberos-suiteb](http://www.ietf.org/id/draft-burgin-kerberos-suiteb-01.txt) - Suite B Profile for Kerberos 5
-* [draft-ietf-kitten-kerberos-iana-registries](http://www.ietf.org/id/draft-ietf-kitten-kerberos-iana-registries-00.txt) - Move Kerberos protocol parameter registries to IANA
-* [draft-ietf-krb-wg-cammac](http://www.ietf.org/id/draft-ietf-krb-wg-cammac-03.txt) - Kerberos Authorization Data Container Authenticated by Multiple MACs
-* [draft-ietf-krb-wg-kdc-model](http://www.ietf.org/id/draft-ietf-krb-wg-kdc-model-16.txt) - An information model for Kerberos version 5
-* [draft-ietf-krb-wg-pkinit-alg-agility](http://www.ietf.org/id/draft-ietf-krb-wg-pkinit-alg-agility-07.txt) - PKINIT Algorithm Agility
-* [draft-perez-krb-wg-gss-preauth](http://www.ietf.org/id/draft-perez-krb-wg-gss-preauth-02.txt) - GSS-API pre-authentication for Kerberos draft-perez-krb-wg-gss-preauth-02
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2-kerberos-config.mdtext b/content/apacheds/kerberos-ug/2-kerberos-config.mdtext
deleted file mode 100644
index 847fa52..0000000
--- a/content/apacheds/kerberos-ug/2-kerberos-config.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: 2 - Kerberos Configuration
-NavPrev: 1.2.3-standards.html
-NavPrevText: 1.2.3 - Standards
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-NavNext: 2.1-installing.html
-NavNextText: 2.1 - Installing the server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [2.1 - Installing the server](2.1-installing.html)
-* [2.2 - LDAP server configuration](2.2-ldap-server-config.html)
-* [2.3 - Kerberos server configuration](2.3-kerberos-server-config.html)
-* [2.4 - Kerberos and Unlimited Strength Policy](2.4-kerberos-ulp.html)
-* [2.5 - PKINIT](2.5-pkinit.html)
-* [2.6 - Cross Realm](2.6-cross-realm.html)
-
-# 2 - Kerberos Configuration
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.1-installing.mdtext b/content/apacheds/kerberos-ug/2.1-installing.mdtext
deleted file mode 100644
index 57904db..0000000
--- a/content/apacheds/kerberos-ug/2.1-installing.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.1 - Installing the server
-NavPrev: 2-kerberos-config.html
-NavPrevText: 2 - Kerberos Configuration
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 2.2-ldap-server-config.html
-NavNextText: 2.2 - LDAP server configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - Installing the server
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.2-ldap-server-config.mdtext b/content/apacheds/kerberos-ug/2.2-ldap-server-config.mdtext
deleted file mode 100644
index 3cbf5a1..0000000
--- a/content/apacheds/kerberos-ug/2.2-ldap-server-config.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.2 - LDAP server configuration
-NavPrev: 2.1-installing.html
-NavPrevText: 2.1 - Installing the server
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 2.3-kerberos-server-config.html
-NavNextText: 2.3 - Kerberos server configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - LDAP server configuration
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.3-kerberos-server-config.mdtext b/content/apacheds/kerberos-ug/2.3-kerberos-server-config.mdtext
deleted file mode 100644
index b97a539..0000000
--- a/content/apacheds/kerberos-ug/2.3-kerberos-server-config.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.3 - Kerberos server configuration
-NavPrev: 2.2-ldap-server-config.html
-NavPrevText: 2.2 - LDAP server configuration
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 2.4-kerberos-ulp.html
-NavNextText: 2.4 - Kerberos and Unlimited Strength Policy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3 - Kerberos server configuration
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.4-kerberos-ulp.mdtext b/content/apacheds/kerberos-ug/2.4-kerberos-ulp.mdtext
deleted file mode 100644
index 01d0660..0000000
--- a/content/apacheds/kerberos-ug/2.4-kerberos-ulp.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.4 - Kerberos and Unlimited Strength Policy
-NavPrev: 2.3-kerberos-server-config.html
-NavPrevText: 2.3 - Kerberos server configuration
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 2.5-pkinit.html
-NavNextText: 2.5 - PKINIT
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.4 - Kerberos and Unlimited Strength Policy
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.5-pkinit.mdtext b/content/apacheds/kerberos-ug/2.5-pkinit.mdtext
deleted file mode 100644
index aa7e307..0000000
--- a/content/apacheds/kerberos-ug/2.5-pkinit.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.5 - PKINIT
-NavPrev: 2.4-kerberos-ulp.html
-NavPrevText: 2.4 - Kerberos and Unlimited Strength Policy
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 2.6-cross-realm.html
-NavNextText: 2.6 - Cross Realm
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.5 - PKINIT
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/2.6-cross-realm.mdtext b/content/apacheds/kerberos-ug/2.6-cross-realm.mdtext
deleted file mode 100644
index 6cbb8ae..0000000
--- a/content/apacheds/kerberos-ug/2.6-cross-realm.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 2.6 - Cross Realm
-NavPrev: 2.5-pkinit.html
-NavPrevText: 2.5 - PKINIT
-NavUp: 2-kerberos-config.html
-NavUpText: 2 - Kerberos Configuration
-NavNext: 3-kerberos-admin.html
-NavNextText: 3 - Kerberos administration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.6 - Cross Realm
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3-kerberos-admin.mdtext b/content/apacheds/kerberos-ug/3-kerberos-admin.mdtext
deleted file mode 100644
index 50006e9..0000000
--- a/content/apacheds/kerberos-ug/3-kerberos-admin.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: 3 - Kerberos administration
-NavPrev: 2.6-cross-realm.html
-NavPrevText: 2.6 - Cross Realm
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-NavNext: 3.1-start-stop.html
-NavNextText: 3.1 - Starting and Stopping the server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [3.1 - Starting and Stopping the server](3.1-start-stop.html)
-* [3.2 - Managing Clients and Services](3.2-managing-clients-services.html)
-* [3.3 - Changing passwords](3.3-change-password.html)
-* [3.4 - Logs](3.4-logs.html)
-* [3.5 - Replication](3.5-replication.html)
-* [3.6 - Backup/Restore](3.6-backup-restore.html)
-
-# 3 - Kerberos administration
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.1-start-stop.mdtext b/content/apacheds/kerberos-ug/3.1-start-stop.mdtext
deleted file mode 100644
index d412976..0000000
--- a/content/apacheds/kerberos-ug/3.1-start-stop.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.1 - Starting and Stopping the server
-NavPrev: 3-kerberos-admin.html
-NavPrevText: 3 - Kerberos administration
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 3.2-managing-clients-services.html
-NavNextText: 3.2 - Managing Clients and Services
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1 - Starting and Stopping the server
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.2-managing-clients-services.mdtext b/content/apacheds/kerberos-ug/3.2-managing-clients-services.mdtext
deleted file mode 100644
index 66d665a..0000000
--- a/content/apacheds/kerberos-ug/3.2-managing-clients-services.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.2 - Managing Clients and Services
-NavPrev: 3.1-start-stop.html
-NavPrevText: 3.1 - Starting and Stopping the server
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 3.3-change-password.html
-NavNextText: 3.3 - Changing passwords
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.2 - Managing Clients and Services
-
- TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.3-change-password.mdtext b/content/apacheds/kerberos-ug/3.3-change-password.mdtext
deleted file mode 100644
index ed510d0..0000000
--- a/content/apacheds/kerberos-ug/3.3-change-password.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.3 - Changing passwords
-NavPrev: 3.2-managing-clients-services.html
-NavPrevText: 3.2 - Managing Clients and Services
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 3.4-logs.html
-NavNextText: 3.4 - Logs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.3 - Changing passwords
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.4-logs.mdtext b/content/apacheds/kerberos-ug/3.4-logs.mdtext
deleted file mode 100644
index 4f73946..0000000
--- a/content/apacheds/kerberos-ug/3.4-logs.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.4 - Logs
-NavPrev: 3.3-change-password.html
-NavPrevText: 3.3 - Changing passwords
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 3.5-replication.html
-NavNextText: 3.5 - Replication
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.4 - Logs
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.5-replication.mdtext b/content/apacheds/kerberos-ug/3.5-replication.mdtext
deleted file mode 100644
index 7054c35..0000000
--- a/content/apacheds/kerberos-ug/3.5-replication.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.5 - Replication
-NavPrev: 3.4-logs.html
-NavPrevText: 3.4 - Logs
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 3.6-backup-restore.html
-NavNextText: 3.6 - Backup/Restore
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.5 - Replication
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/3.6-backup-restore.mdtext b/content/apacheds/kerberos-ug/3.6-backup-restore.mdtext
deleted file mode 100644
index 761340e..0000000
--- a/content/apacheds/kerberos-ug/3.6-backup-restore.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3.6 - Backup/Restore
-NavPrev: 3.5-replication.html
-NavPrevText: 3.5 - Replication
-NavUp: 3-kerberos-admin.html
-NavUpText: 3 - Kerberos administration
-NavNext: 4-using-kerberos.html
-NavNextText: 4 - Using Kerberos
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.6 - Backup/Restore
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/4-using-kerberos.mdtext b/content/apacheds/kerberos-ug/4-using-kerberos.mdtext
deleted file mode 100644
index 0778e95..0000000
--- a/content/apacheds/kerberos-ug/4-using-kerberos.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 4 - Using Kerberos
-NavPrev: 3.6-backup-restore.html
-NavPrevText: 3.6 - Backup/Restore
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-NavNext: 4.1-authenticate-kinit.html
-NavNextText: 4.1 - Authenticate with kinit on Linux
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-* [4.1 - Authenticate with kinit on Linux](4.1-authenticate-kinit.html)
-* [4.2 - Authenticate with Studio](4.2-authenticate-studio.html)
-
-# 4 - Using Kerberos
-
-We will now describe how to use kerberos, namely how to obtain tickets.
-
-We will use either the **kinit** program installed on **Linux** or **Studio** for that.
-
diff --git a/content/apacheds/kerberos-ug/4.1-authenticate-kinit.mdtext b/content/apacheds/kerberos-ug/4.1-authenticate-kinit.mdtext
deleted file mode 100644
index 42a96a1..0000000
--- a/content/apacheds/kerberos-ug/4.1-authenticate-kinit.mdtext
+++ /dev/null
@@ -1,102 +0,0 @@
-Title: 4.1 - Authenticate with kinit on Linux
-NavPrev: 4-using-kerberos
-NavPrevText: 4 - Using Kerberos
-NavUp: 4-using-kerberos.html
-NavUpText: 4 - Using Kerberos
-NavNext: 4.2-authenticate-studio.html
-NavNextText: 4.2 - Authenticate with Studio
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1 - Authenticate with kinit on Linux
-
-##Setup
-
-You first have to make sure **kinit** is installed.
-
-You can check that by typing **kinit** in a console :
-
- :::text
- $ kinit --version
- kinit (Heimdal 1.4.1apple1)
- Copyright 1995-2010 Kungliga Tekniska Högskolan
- Send bug-reports to heimdal-bugs@h5l.org
- $
-
-Then, you have to configure the **krb5.conf** file (it can be found in **/etc/krb5.conf**, if not just add it).
-
-
-A minimal /etc/krb5.conf file looks as follows (make sure the port and host name matches!):
-
- :::text
- [libdefaults]
- default_realm = EXAMPLE.COM
-
- [realms]
- EXAMPLE.COM = {
- kdc = example.net:60088
- }
-
- [domain_realm]
- .example.com = EXAMPLE.COM
- example.com = EXAMPLE.COM
-
-
-Check that the **Kerberos** sevrer is started, then try to get a ticket from a user that exists in the base (here, we use hnelson, which is a user we created for test purposes. His password is 'secret')
-
- :::text
- $ kinit hnelson@EXAMPLE.COM
- Password for hnelson@EXAMPLE.COM:
- $
-
-You should not get any error. If you've get some, see later in this chapter.
-
-Now, let's check that we have correctly obtained a ticket. We will use the **klist** tool for that :
-
- :::text
- $ klist -v
- Credentials cache: API:501:9
- Principal: hnelson@EXAMPLE.COM
- Cache version: 0
-
- Server: krbtgt/EXAMPLE.COM@EXAMPLE.COM
- Client: hnelson@EXAMPLE.COM
- Ticket etype: aes128-cts-hmac-sha1-96
- Ticket length: 256
- Auth time: Feb 11 16:11:36 2013
- End time: Feb 12 02:11:22 2013
- Renew till: Feb 18 16:11:36 2013
- Ticket flags: pre-authent, initial, renewable, forwardable
- Addresses: addressless
- $
-
-As we can see, we have obtained a ticket which will expire 6 hours after its creation, which can be renexed for 7 days, encrypted using AES-128 algorithm, ticket that can be used by the **TGS**.
-
-All is good !
-
-## Troubleshooting
-
-So it does not work...
-
-There are many possible reason why you can't get a ticket.
-
-### kinit: krb5_get_init_creds: unable to reach any KDC in realm EXAMPLE.COM
-
-Such a error says that the server is not reachable. Check those points :
-
-* Is the server started ?
-* Is the EXAMPLE.COM domain declared in your DNS (or /etc/hosts file) ?
diff --git a/content/apacheds/kerberos-ug/4.2-authenticate-studio.mdtext b/content/apacheds/kerberos-ug/4.2-authenticate-studio.mdtext
deleted file mode 100644
index 6f2297f..0000000
--- a/content/apacheds/kerberos-ug/4.2-authenticate-studio.mdtext
+++ /dev/null
@@ -1,313 +0,0 @@
-Title: 4.2 - Authenticate with Studio
-NavPrev: 4.1-authenticate-kinit.html
-NavPrevText: 4.1 - Authenticate with kinit on Linux
-NavUp: 4-using-kerberos.html
-NavUpText: 4 - Using Kerberos
-NavNext: 5-interoperability.html
-NavNextText: 5 - Interoperability
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1 - Authenticate with Studio
-
-We will explain how to use the kerberos server to authentify users on a LDAP server. Let's first define the way we will store data in the LDAP server
-
-<DIV class="info" markdown="1">
-We will suppose that the <strong>Kerberos</strong> server is installed on a server which <em>hostName</em> is <strong>example.net</strong> and the <em>realm</em> is <strong>EXAMPLE.COM</strong> in the following paragraphes.
-</DIV>
-
-## Servers configuration
-
-We first have to configure the **LDAP** and **Kerberos** server, in order to be able to use the kerberos server to authenticate on the ldap server.
-
-If you have installed the **ApacheDS** package, the simplest way is to start the server, and to connect on it using Studio, using the _uid=admin,ou=system_ user with _secret_ as a password (this password will have to be changed later !).
-
-<DIV align="center">
- <img alt="Admin Connection" src="images/admin-connection.png">
-</DIV>
-
-and :
-
-<DIV align="center">
- <img alt="Admin Authentication" src="images/admin-authentication.png">
-</DIV>
-
-Once connected, right click on the connection :
-
-<DIV align="center">
- <img alt="Open Configuration" src="images/open-config.png">
-</DIV>
-
-On the **Overview** tab, check the **Enable Kerberos Server** box :
-
-<DIV align="center">
- <img alt="Enable Kerberos Server" src="images/enable-kerberos.png">
-</DIV>
-
-### LDAP Server configuration
-
-There are a few parameters that are to be set in the **LDAP** configuration :
-
- * The SASL host must be the local server name (here, example.net)
- * The SASL principal is ldap/example.net@EXAMPLE.COM
- * The Search Base DN should point to the place under which we store users and services (dc=security,dc=example,dc=com)
-
-<DIV class="warning" markdown="1">
-The <em>SASL principal</em> instance part (ie, <strong>example.net</strong>) is in lower case, as the hostname is not case sensitive. Sadly, the <em>KrbPrincipalName</em> attributeType is case sensitive, so if the left part is not lowercased, the server won't be able to retrieve the information from the LDAP server.
-</DIV>
-
-Here is a snapshot of this configuration :
-
-<DIV align="center">
- <img alt="LDAP configuration" src="images/ldap-config.png" style="width: 100%; height: 100%">
-</DIV>
-
-
-### Kerberos Server configuration
-
-Now, you can switch to the Kerberos tab, where some more configuration must be set :
-
- * The Primary KDC Realm is EXAMPLE.COM
- * The Search Base DN is the same as for the LDAP server : dc=security,dc=example,dc=com
-
-Here is a Ssnapshot of this configuration :
-
-<DIV align="center">
- <img alt="Kerberos configuration" src="images/kerberos-config.png" style="width: 100%; height: 100%">
-</DIV>
-
-The Kerberos server also requires a minimal **krb5.conf** file. The default location of that file is **/etc/krb5.conf**, alternatively you can also put it to **JAVA_HOME/jre/lib/security/krb5.conf**.
-
- :::text
- [libdefaults]
- default_realm = EXAMPLE.COM
-
- [realms]
- EXAMPLE.COM = {
- kdc = example.net:60088
- }
-
-
-Once those modifications have been done, you must restart the server.
-
-### Other configuration
-
-There is one more thing that you need to configure : your domain name (here, example.net_) has to be reachable on your machine. Either you define in on a **DNS** server, or you can also add it in your _/etc/hosts_ file.
-
-Here is a way to add it on a local host :
-
- :::
- ...
- 127.0.0.1 localhost example.net
- ...
-
-<DIV class="warning" markdown="1">
-It's largely preferable to declare the server in a DNS.
-</DIV>
-
-## LDAP Hierarchy
-
-We will distinguish between **users** and **services** :
-* Users are human beings, or applications that can log on a service
-* Services are applications on which a user can log in
-
-In our case, the ldap server and the **TGS** are services.
-
-Each user and each service will be declared using an _entry_ in the ldap server.
-
-We will store those entries in a part of the **DIT** where the kerberos server and the ldap server will be able to find them. Assuming we have created our own partition named **dc=example,dc=com**, we will define this hierarchy starting from there :
-
-<DIV align="center">
- <img alt="Authentification hierarchy" src="images/authent-hierarchy.png">
-</DIV>
-
-This can be injected in the LDAP server using this LDIF :
-
- :::text
- dn: dc=security,dc=example,dc=com
- objectClass: top
- objectClass: domain
- dc: security
-
- dn: ou=services,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: organizationalUnit
- ou: services
-
- dn: ou=users,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: organizationalUnit
- ou: users
-
-## Users and Service declaration
-
-Now that we have built our container for users and services, we have to declare the users and services so that they can be used through **kerberos**.
-
-### Users
-
-Each user must have the **krb5KDCEntry** objectclass, and the **userPassword** attributeType (which is present in one of the following objectclasses : _dmd_, _domain_, _organization_, _organizationalUnit_, _person_, _posixAccount_, _posixGroup_ and _shadowAccount_, or one of their inheriting objectclass. You can also add it to your own objectclass).
-
-Our users will be _organizationalPerson_, which inherits from _person_.
-
-For our sample test, here is a person we will inject in the LDAP server :
-
- :::text
- dn: uid=hnelson,ou=users,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: krb5KDCEntry
- objectClass: inetOrgPerson
- objectClass: krb5Principal
- objectClass: person
- objectClass: organizationalPerson
- cn: Horatio Nelson
- krb5KeyVersionNumber: 1
- krb5PrincipalName: hnelson@EXAMPLE.COM
- sn: Nelson
- uid: hnelson
- userPassword: secret
-
-This user does not have a password yet.
-
-<DIV class="info" markdown="1">
-The import thing is the <em>krb5PrincipalName</em>, which is the one that will be used to bind the user. It has a user login (<strong>hnelson</strong>) and a realm (<strong>EXAMPLE.COM</strong>).
-</DIV>
-
-Once the user has been injected, we can see that the server has created some krb5Key attributes :
-
- :::text
- dn: uid=hnelson,ou=users,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: krb5KDCEntry
- objectClass: inetOrgPerson
- objectClass: krb5Principal
- objectClass: person
- objectClass: organizationalPerson
- cn: Horatio Nelson
- krb5KeyVersionNumber: 0
- krb5PrincipalName: hnelson@EXAMPLE.COM
- sn: Nelson
- krb5Key:: MBGgAwIBA6EKBAj0pxNkimHOWw==
- krb5Key:: MBmgAwIBEaESBBCtIUs4tp38yqzxXzRtQXuQ
- krb5Key:: MCGgAwIBEKEaBBhXB84pUpIsHIy/Q8I9j4xenoz3XT5KXiU=
- krb5Key:: MBmgAwIBF6ESBBCHjYAUYGzaKWd6RO+hNT/H
- uid: hnelson
- userPassword:: e1NTSEF9VnhjYUl4U3JxUnAraWh1dXo2NEhzN1EwbXE0ZHBBQTNsUHJXMGc9P
- Q==
-
-Those keys have been computed automatically by the Kerberos server. Every time you will change the password, the keys will be updated.
-
-We can add as many users as we want, but keep in mind that the login name should be the first part of the **krb5PrincipalName** attributeType.
-
-### Services
-
-We now have to declare some services : the **krbtgt** service, which delivers tickets, and the **ldap** service.
-
-A user (or a service) which will try to authenticate on the LDAP server will first get a ticket from the **krbtgt** service, then will access the **ldap** service with the provided ticket.
-
-#### krbtgt service
-
-It's pretty much the same operation than for the user : create the entry, define a _krb5PrincipalName_, create a _userPassword_ and inject the entry into the LDAP server.
-
-Here is the associated LDIF file :
-
- :::text
- dn: uid=ldap,ou=services,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: organizationalUnit
- objectClass: krb5KDCEntry
- objectClass: uidObject
- objectClass: krb5Principal
- krb5KeyVersionNumber: 0
- krb5PrincipalName: ldap/example.net@EXAMPLE.COM
- uid: ldap
- userPassword: randomKey
- ou: TGT
-
- dn: uid=krbtgt,ou=services,dc=security,dc=example,dc=com
- objectClass: top
- objectClass: organizationalUnit
- objectClass: krb5KDCEntry
- objectClass: uidObject
- objectClass: krb5Principal
- krb5KeyVersionNumber: 0
- krb5PrincipalName: krbtgt/EXAMPLE.COM@EXAMPLE.COM
- uid: krbtgt
- userPassword:: randomkey
- ou: LDAP
-
-<DIV class="info" markdown="1">
-Three important things :
-<ul>
-<li>- the userPassword is 'randomkey'. The key will not be generated based on a know password, they will use a random key.</li>
-<li>- the <em>krb5PrincipalName</em> has one more information, after the / character : <em>EXAMPLE.COM</em> for
- the <strong>krbtgt</strong> service, and <em>example.net</em> for the <strong>ldap</strong> service. For the <strong>krbtgt</strong> principal, the instance is always the realm name. For the <strong>ldap</strong> principal, the instance is the hostname, in lowercase.</li>
-<li>- the krb5KeyVersionNumber is 0</li>
-</ul>
-</DIV>
-
-Again, once those entries have been injected in the LDAP server, the _krb5Key_ attributeTypes will be created
-
-## Login using Studio
-
-Now that the server is set, and the services and users are stored into it, we can create a new connection using the Kerberos authentication for the created users.
-
-### Create a new connection
-
-On the "Connections" tab, right click and select 'New Connection...'
-
-<DIV align="center">
- <img alt="New Connection" src="images/new-connection.png">
-</DIV>
-
-You will now have to set the network parameters, as in the following popup. Typically, set :
-
- * The connection name (here, Kerberos User)
- * The LDAP server host (example.net)
- * The LDAP server port (10389)
- * The Provider (pick Apache Directory LDAP Client API)
-
-You can check the connection on cliking the 'check network connection' button, you should get back a popup stating that the connection was established successfully.
-
-Here is the screenshot :
-
-
-<DIV align="center">
- <img alt="Network Parameters" src="images/network-parameters.png">
-</DIV>
-
-Then click on Next to setup the authentication part.
-Select the following parameters and values :
-
- * Authentication method : GSSAPI
- * Bind DN : the user name (here, hnelson)
- * Bind password : here, secret
- * Do not change anything in the SASL settings
- * Kerberos settings
- * Obtain TGT from KDC
- * Use following configuration :
- * Kerberos Realm : EXAMPLE.COM
- * KDC Host : example.net
- * KDC port : 60088
-
-Here is the resulting screen :
-
-<DIV align="center">
- <img alt="Kerberos authentification" src="images/kerberos-authent.png">
-</DIV>
-
-Clinking in the 'Check Authentication' button should be succesfull.
-
diff --git a/content/apacheds/kerberos-ug/5-interoperability.mdtext b/content/apacheds/kerberos-ug/5-interoperability.mdtext
deleted file mode 100644
index 42d40e0..0000000
--- a/content/apacheds/kerberos-ug/5-interoperability.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 5 Interoperability
-NavPrev: 4.2-authenticate-studio.html
-NavPrevText: 4.2 - Authenticate with Studio
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-NavNext: 6-glossary.html
-NavNextText: 6 - Kerberos Glossary
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-
-# 5 Interoperability
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-ug/6-glossary.mdtext b/content/apacheds/kerberos-ug/6-glossary.mdtext
deleted file mode 100644
index e7c9108..0000000
--- a/content/apacheds/kerberos-ug/6-glossary.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6 - Kerberos Glossary
-NavPrev: 5-interopability.html
-NavPrevText: 5 - Interopability
-NavUp: ../kerberos-user-guide.html
-NavUpText: Kerberos User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Table of content
-
-# 6 - Kerberos Glossary
-
-TODO...
\ No newline at end of file
diff --git a/content/apacheds/kerberos-user-guide.mdtext b/content/apacheds/kerberos-user-guide.mdtext
deleted file mode 100644
index 576613a..0000000
--- a/content/apacheds/kerberos-user-guide.mdtext
+++ /dev/null
@@ -1,60 +0,0 @@
-Title: Kerberos User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS 2.0 Kerberos User Guide
-This guide will help you to configure and use the embedded Kerberos Server.
-
-ApacheDS is not only a LDAP server, it also support the Kerberos Protocl, and is a KDC (Key DIstribution Center), containing a TGS (Ticket Granting Server) and a AS (Authentication Server).
-
-This guide will describe how it works.
-
-# Table of content
-
-* [1 - What is Kerberos](kerberos-ug/1-kerberos.html)
- * [1.1 - Introduction](kerberos-ug/1.1-introduction.html)
- * [1.1.1 - Realms](kerberos-ug/1.1.1-realms.html)
- * [1.1.2 - Principals](kerberos-ug/1.1.2-principals.html)
- * [1.1.3 - Keys](kerberos-ug/1.1.3-keys.html)
- * [1.1.4 - KDC (Key Distribution Center)](kerberos-ug/1.1.4-kdc.html)
- * [1.1.5 - Database](kerberos-ug/1.1.5-database.html)
- * [1.1.6 - AS (Authentication Server)](kerberos-ug/1.1.6-as.html)
- * [1.1.7 - TGS (Ticket Granting Server)](kerberos-ug/1.1.7-tgs.html)
- * [1.1.8 - Tickets](kerberos-ug/1.1.8-tickets.html)
- * [1.2 - Resources](kerberos-ug/1.2-resources.html)
- * [1.2.1 - Kerberos Articles](kerberos-ug/1.2.1-kerberos-articles.html)
- * [1.2.2 - Microsoft compatibility](kerberos-ug/1.2.2-microsoft-compatibility.html)
- * [1.2.3 - Standards](kerberos-ug/1.2.3-standards.html)
-* [2 - Kerberos Configuration](kerberos-ug/2-kerberos-config.html)
- * [2.1 - Installing the server](kerberos-ug/2.1-installing.html)
- * [2.2 - LDAP server configuration](kerberos-ug/2.2-ldap-server-config.html)
- * [2.3 - Kerberos server configuration](kerberos-ug/2.3-kerberos-server-config.html)
- * [2.4 - Kerberos and Unlimited Strength Policy](kerberos-ug/2.4-kerberos-ulp.html)
- * [2.5 - PKINIT](kerberos-ug/2.5-pkinit.html)
- * [2.6 - Cross Realm](kerberos-ug/2.6-cross-realm.html)
-* [3 - Kerberos administration](kerberos-ug/3-kerberos-admin.html)
- * [3.1 - Starting and Stopping the server](kerberos-ug/3.1-start-stop.html)
- * [3.2 - Managing Clients and Services](kerberos-ug/3.2-managing-clients-services.html)
- * [3.3 - Changing passwords](kerberos-ug/3.3-change-password.html)
- * [3.4 - Logs](kerberos-ug/3.4-logs.html)
- * [3.5 - Replication](kerberos-ug/3.5-replication.html)
- * [3.6 - Backup/Restore](kerberos-ug/3.6-backup-restore.html)
-* [4 - Using Kerberos](kerberos-ug/4-using-kerberos.html)
- * [4.1 - Authenticate with kinit](kerberos-ug/4.1-authenticate-kinit.html)
- * [4.2 - Authenticate with Studio](kerberos-ug/4.2-authenticate-studio.html)
-* [5 - Interoperability](kerberos-ug/5-interoperability.html)
-* [6 - Kerberos Glossary](kerberos-ug/6-glossary.html)
diff --git a/content/apacheds/news.mdtext b/content/apacheds/news.mdtext
deleted file mode 100644
index f4d8255..0000000
--- a/content/apacheds/news.mdtext
+++ /dev/null
@@ -1,775 +0,0 @@
-# News
-<h2 class="news">ApacheDS 2.0.0.AM26 released <em>posted on March 7th, 2020</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0.AM26, the 26th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This is a major release of ApacheDS. It brings many bug fixes, and is the first version implementing LDAP transactions,
-which are now used internally for atomic operations, but can also be used through an extended operation, to apply many
-operations in one transaction.
-We also have changed the Cache system we were using (ehcache) to use the more efficient and lighter [Caffeine]
-(https://github.com/ben-manes/caffeine/wiki).
-Otherwise, we don't anymore store certificates in the server by default, but use an external keystore.
-
-We can't anymore produce the Mac OSX installer package, we are working on finding a solution for that issue (Apple
-deprecated the MakePackage tool and is now applying way more stringent checks and controls for packages, like
-and Apple signature). This will most certainly be fixed in the next revision.
-
-It uses the Apache LDAP API 2.0.0 release
-
-Here is the release note for Apache Directory ApacheDS 2.0.0.AM26:
-
-<b>Bugs :</b>
-
-* [DIRSERVER-1414](https://issues.apache.org/jira/browse/DIRSERVER-1414] - Normalization is not handling correctly (buit this has no impact)
-* [DIRSERVER-1580](https://issues.apache.org/jira/browse/DIRSERVER-1580] - Numerous JUnit tests failing on Windows, again.
-* [DIRSERVER-1878](https://issues.apache.org/jira/browse/DIRSERVER-1878] - Bad warning from 'maven-shade-plugin' when creating the 'apacheds-service' jar
-* [DIRSERVER-1924](https://issues.apache.org/jira/browse/DIRSERVER-1924] - The MavibotPartition entry cache is not correctly set
-* [DIRSERVER-1974](https://issues.apache.org/jira/browse/DIRSERVER-1974] - Rename Operation Issue - ApacheDS
-* [DIRSERVER-2049](https://issues.apache.org/jira/browse/DIRSERVER-2049] - Queries interrupted with delete/add operations
-* [DIRSERVER-2066](https://issues.apache.org/jira/browse/DIRSERVER-2066] - Maven 3.3.x produces Invalid installers/archives
-* [DIRSERVER-2070](https://issues.apache.org/jira/browse/DIRSERVER-2070] - Null pointer exception on kerberos password changing
-* [DIRSERVER-2071](https://issues.apache.org/jira/browse/DIRSERVER-2071] - MinaKerberosDecoder fails with NullPointerException if the kerberos message is split in multiple packets
-* [DIRSERVER-2074](https://issues.apache.org/jira/browse/DIRSERVER-2074] - small default TCP receive/send buffer size causing TCP packet fragmentation on some platforms
-* [DIRSERVER-2089](https://issues.apache.org/jira/browse/DIRSERVER-2089] - AttributeType breaks the equals/hashCode override contract
-* [DIRSERVER-2099](https://issues.apache.org/jira/browse/DIRSERVER-2099] - NOTICE and LICENSE files for DS 2.0.0-M20 are incorrect
-* [DIRSERVER-2146](https://issues.apache.org/jira/browse/DIRSERVER-2146] - Using special chars in uid makes problem
-* [DIRSERVER-2197](https://issues.apache.org/jira/browse/DIRSERVER-2197] - Debian installer package contains the binary 4 times
-* [DIRSERVER-2237](https://issues.apache.org/jira/browse/DIRSERVER-2237] - Application opens but can't 'Open Connection' - IllegalArgumentException
-* [DIRSERVER-2247](https://issues.apache.org/jira/browse/DIRSERVER-2247] - Invalid signature file digest for Manifest main attributes - When switching from 2.0.0-M24 to 2.0.0-AM25
-* [DIRSERVER-2253](https://issues.apache.org/jira/browse/DIRSERVER-2253] - NIS schema object class and attribute problem
-* [DIRSERVER-2264](https://issues.apache.org/jira/browse/DIRSERVER-2264] - missing schema type for NIS: nisMapName
-* [DIRSERVER-2273](https://issues.apache.org/jira/browse/DIRSERVER-2273] - Le serveur ne démarre plus
-* [DIRSERVER-2275](https://issues.apache.org/jira/browse/DIRSERVER-2275] - Les schemas LDIF générés à partir du schema browser font planter Directory au démarrage
-* [DIRSERVER-2289](https://issues.apache.org/jira/browse/DIRSERVER-]2289 - Paging support to retrieve all the entries available in ApacheDS between different client and LDAP server connections
-
-<b>Improvements :</b>
-
-* [DIRSERVER-959](https://issues.apache.org/jira/browse/DIRSERVER-959] - We nedd a global cache
-* [DIRSERVER-1639](https://issues.apache.org/jira/browse/DIRSERVER-1639] - Add support for specifying cipher suites in LdapServer's configuration
-* [DIRSERVER-1892](https://issues.apache.org/jira/browse/DIRSERVER-1892] - We don't need to clone the full entry when returning it from the backen
-* [DIRSERVER-1916](https://issues.apache.org/jira/browse/DIRSERVER-1916] - Don't drop 'top' from ObjectClass index, it's never present in the BTree
-* [DIRSERVER-2044](https://issues.apache.org/jira/browse/DIRSERVER-2044] - The CacheService.initialize() method takes an unused InstanceID argument
-* [DIRSERVER-2132](https://issues.apache.org/jira/browse/DIRSERVER-2132] - Add the structuralObjectClass attribute to every returned entry
-* [DIRSERVER-2133](https://issues.apache.org/jira/browse/DIRSERVER-2133] - Add the hasSubordinates operational attribute to entries
-* [DIRSERVER-2145](https://issues.apache.org/jira/browse/DIRSERVER-2145] - A BIND request will do 2 lookups of the entry trying to bind
-* [DIRSERVER-2168](https://issues.apache.org/jira/browse/DIRSERVER-2168] - Possible performance improvement in the Add operation
-* [DIRSERVER-2262](https://issues.apache.org/jira/browse/DIRSERVER-2262] - The LdapServer.loadkeyStore() method do the work twice if there is no KeyStore defined
-* [DIRSERVER-2270](https://issues.apache.org/jira/browse/DIRSERVER-2270] - Inconsistent log level practices
-
-<b>New features :</b>
-
-* [DIRSERVER-279](https://issues.apache.org/jira/browse/DIRSERVER-279] - Transaction support
-* [DIRSERVER-1422](https://issues.apache.org/jira/browse/DIRSERVER-1422] - Delegation of Authentication
-* [DIRSERVER-1956](https://issues.apache.org/jira/browse/DIRSERVER-1956] - Add support for rfc4525 (increment)
-* [DIRSERVER-2245](https://issues.apache.org/jira/browse/DIRSERVER-2245] - Implement the transaction support in ApachedS
-* [DIRSERVER-2248](https://issues.apache.org/jira/browse/DIRSERVER-2248] - The server generates some errors when starting (Schema isues)
-
-
-<b>Tasks :</b>
-
-* [DIRSERVER-1245](https://issues.apache.org/jira/browse/DIRSERVER-1245] - Source audit
-* [DIRSERVER-2063](https://issues.apache.org/jira/browse/DIRSERVER-2063] - Automat testing of installers
-* [DIRSERVER-2097](https://issues.apache.org/jira/browse/DIRSERVER-2097] - Fix usage of default charset|locale|timezone and enable forbiddenapis check
-* [DIRSERVER-2271](https://issues.apache.org/jira/browse/DIRSERVER-2271] - Replace Ehcache with Caffeine
-
-<b>Tests :</b>
-
-* [DIRSERVER-1847](https://issues.apache.org/jira/browse/DIRSERVER-1847] - Introduce time provider for time dependent tests
-
-<h2 class="news">ApacheDS 2.0.0.AM25 released <em>posted on August 18th, 2018</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0.AM25, the 25th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This is a major release of ApacheDS.
-
-It uses the Apache LDAP API 2.0.0.AM1 release, which itself brings a lot of improvements and bug fixes.
-
-But the major improvement is the cross-indexes transaction support that has been added, which is expecting to solve the database corruption issue we are facing for years.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0.AM25:
-
-<b>Bugs :</b>
-
-* [DIRSERVER-2109](https://issues.apache.org/jira/browse/DIRSERVER-2109) - Apply LDIF with special crafted DN creates two CN attributes
-* [DIRSERVER-2220](https://issues.apache.org/jira/browse/DIRSERVER-2220) - ApacheDS should not log credentials
-* [DIRSERVER-2231](https://issues.apache.org/jira/browse/DIRSERVER-2231) - NPE in AbstractBTreePartition when cacheService is not used
-* [DIRSERVER-2234](https://issues.apache.org/jira/browse/DIRSERVER-2234) - Kinit via TCP causes ApacheDS to create a
-NioProcessor thread at 100% CPU
-
-<b>Improvements :</b>
-
-* [DIRSERVER-2242](https://issues.apache.org/jira/browse/DIRSERVER-2242) - Keystore change from JKS to PKCS12
-* [DIRSERVER-2225](https://issues.apache.org/jira/browse/DIRSERVER-2225) - Usage of maven-source-plugin goal jar-no-fork instead of jar
-* [DIRSERVER-2230](https://issues.apache.org/jira/browse/DIRSERVER-2230) - SCM pointing to gitbox instead of svn
-* [DIRSERVER-2229](https://issues.apache.org/jira/browse/DIRSERVER-2229) - Remove duplicated declaration of
-versions-maven-plugin in pom.xml
-
-<b>Tasks :</b>
-
-* [DIRSERVER-2244](https://issues.apache.org/jira/browse/DIRSERVER-2244) - Support AES Encryption with HMAC-SHA2 for Kerberos
-5 defined in RFC 8009
-
-
-<h2 class="news">ApacheDS 2.0.0-M24 released <em>posted on June 7th, 2017</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M24, the 24th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This is mainly a maintenance release, and it's needed to be able to release Studio with many fixes related to the server itself. The main fixes are related to SyntaxCheckers, which are now immutable, and the switch to LDAP 1.0.0 which fixes a critical SSL issue. Otherwise, the 'repair' command has been fixed, and a thread leak has been fixed.
-
-In order to repair the database, one has just to start the server passing the 'repair' command to the apacheds script, instead of the 'start' command. The server will start after having repaired the database.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M24:
-
-<b>Bugs :</b>
-
- * [DIRSERVER-2190](https://issues.apache.org/jira/browse/DIRSERVER-2190) - there is thread leak when did following operations: ADD,DELETE,MODIFY,MOVE,RENAME
- * [DIRSERVER-2173](https://issues.apache.org/jira/browse/DIRSERVER-2173) - Linux binary installation fails because RUN_AS_GROUP not used in chown commands
- * [DIRSERVER-2121](https://issues.apache.org/jira/browse/DIRSERVER-2121) - ApacheDS fails to start after upgrading to 2.0.0-M21
- * [DIRSERVER-2072](https://issues.apache.org/jira/browse/DIRSERVER-2072) - Documentation For Kerberos Configuration Needs To Be Updated
-
-
-<b>Improvements :</b>
-
- * [DIRSERVER-2186](https://issues.apache.org/jira/browse/DIRSERVER-2186) - Fix repair command
-
-
-<h2 class="news">ApacheDS 2.0.0-M23 released <em>posted on July 22th, 2016</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M23, the 23th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This release is a bug fix release. It fixes the installers that were broken on Linux. It also fixes teh 'repair' command, that allows user who have a broken backend to fix it (We still have some use case where the database can get corrupted. We are working on fixing this, but it's far from being easy...)
-
-In order to repair the database, one has just to start the server passing the 'repair' command to the apacheds script, instead of the 'start' comamnd. The server will start after having repaired the database.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M23:
-
-<b>Bugs :</b>
-
- * [DIRSERVER-2158](https://issues.apache.org/jira/browse/DIRSERVER-2158) - unable to start ApacheDS M22 x64
-
-
-<b>Improvements :</b>
-
- * [DIRKRB-595](https://issues.apache.org/jira/browse/DIRKRB-595) - Add mode to allow KerberosString's to contain UTF-8 for MSFT KDC interop
-
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M22 released <em>posted on June 28th, 2016</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M22, the 22th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This release is a bug fix release. We also added a 'repair' mode taht can be used to fix a database corruption : you just have to start the server with the 'repair' parameter.
-
-This release also fixed the painful problem we have in Studio, when trying
-to save the configuration.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M22:
-
-<b>Bugs :</b>
-
- * [DIRSERVER-2120](https://issues.apache.org/jira/browse/DIRSERVER-2120) - apacheds init.d script always returning 0
- * [DIRSERVER-2125](https://issues.apache.org/jira/browse/DIRSERVER-2125) - More than one value has been provided for the single-valued attribute: pwdAccountLockedTime
- * [DIRSERVER-2139](https://issues.apache.org/jira/browse/DIRSERVER-2139) - IBM with IPV6
- * [DIRSERVER-2141](https://issues.apache.org/jira/browse/DIRSERVER-2141) - Some tests are declaring user index with reverse
-
-
-<b>Improvements :</b>
-
- * [DIRSERVER-2124](https://issues.apache.org/jira/browse/DIRSERVER-2124) - Add support for modular crypt format password
- * [DIRSERVER-2128](https://issues.apache.org/jira/browse/DIRSERVER-2128) - Uplift dependency on commons-io from 2.4 to 2.5
-
-
-
-<b>New features :</b>
-
- * [DIRSERVER-2113](https://issues.apache.org/jira/browse/DIRSERVER-2113) - Integrate the 'partition-plumber' into ApacheDS
- * [DIRSERVER-2129](https://issues.apache.org/jira/browse/DIRSERVER-2129>) - Add the number of descendant and the number of children to entries
-
-
-<b>Task : </b>
- * [DIRSERVER-2123](https://issues.apache.org/jira/browse/DIRSERVER-2123) - Remove reference to commons.io and use the LDAP API Fileutils class instead
-
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M21 released <em>posted on December 21th, 2015</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M21, the 21th milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This release is a bug fix release. We fixed some random failures on startup, and some fixes in the start scripts, beside many other smaller issues.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M21:
-
-<b>Bugs :</b>
-
- * [DIRSERVER-2108](https://issues.apache.org/jira/browse/DIRSERVER-2108) - Update Apache Commons Collections to 3.2.2 due to vulnerability in 3.2.1
- * [DIRSERVER-2100](https://issues.apache.org/jira/browse/DIRSERVER-2100) - Zip file does not unpack cleanly on case-insensitive OSes
- * [DIRSERVER-2085](https://issues.apache.org/jira/browse/DIRSERVER-2085) - The PasswordPolicyConfiguration holds the password attribute as a String
- * [DIRSERVER-2082](https://issues.apache.org/jira/browse/DIRSERVER-2082) - User is allowed to perform all operations even when password must be reset
- * [DIRSERVER-2075](https://issues.apache.org/jira/browse/DIRSERVER-2075) - apacheds.sh creates a file called '0' during stop action
-
-
-<b>Improvements :</b>
-
- * [DIRSERVER-1901](https://issues.apache.org/jira/browse/DIRSERVER-1901>) - subschemaSubentry attribute only available under root DSE
- * [DIRSERVER-2080](https://issues.apache.org/jira/browse/DIRSERVER-2080>) - Add a way to politely stop apacheds from apacheds.sh
- * [DIRSERVER-2084](https://issues.apache.org/jira/browse/DIRSERVER-2084>) - Admin user should be exempt from the pwdHistory check
-
-
-<b>Tasks :</b>
-
-
- * [DIRSERVER-2096](https://issues.apache.org/jira/browse/DIRSERVER-2096>) - Fix violations of coding standards and enable checkstyle check
-
-
-<h2 class="news">ApacheDS 2.0.0-M20 released <em>posted on May 2nd, 2015</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M20, the twentieth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This release is a bug fix release. We fixed some random failures on startup, and some fixes in the start scripts, beside many other smaller issues.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M19:
-
-<b>Bugs :</b>
-
- * [DIRSERVER-2025](https://issues.apache.org/jira/browse/DIRSERVER-2025) - ApacheDS fails to return sortedResults when searched against a certain number of entries
- * [DIRSERVER-2026](https://issues.apache.org/jira/browse/DIRSERVER-2026) - Version M19 does not allow eszet (ß) in any tested field of inetOrgPerson
- * [DIRSERVER-2034](https://issues.apache.org/jira/browse/DIRSERVER-2034) - ReplayCache entries can't be written to disk
- * [DIRSERVER-2035](https://issues.apache.org/jira/browse/DIRSERVER-2035) - Sporadic test failure due to fix for DIRSERVER-2034
- * [DIRSERVER-2047](https://issues.apache.org/jira/browse/DIRSERVER-2047) - Some data can be lost when using ldapadd command to insert data into apacheds
- * [DIRSERVER-2048](https://issues.apache.org/jira/browse/DIRSERVER-2048) - Searching for entries with numerous MV attributes can be long
- * [DIRSERVER-2055](https://issues.apache.org/jira/browse/DIRSERVER-2055) - Apacheds M19 not starting
- * [DIRSERVER-2057](https://issues.apache.org/jira/browse/DIRSERVER-2057) - Server returns search continuation only if 'ref' or '+' attributes are requested
- * [DIRSERVER-2060](https://issues.apache.org/jira/browse/DIRSERVER-2060) - Bind not working after server startup
- * [DIRSERVER-2065](https://issues.apache.org/jira/browse/DIRSERVER-2065) - apacheds.sh in tar.gz archive is not executable
-
-
-<b>Improvements :</b>
-
- * [DIRSERVER-1809](https://issues.apache.org/jira/browse/DIRSERVER-1809) - Allow password policy changes to take effect without server restart.
- * [DIRSERVER-2030](https://issues.apache.org/jira/browse/DIRSERVER-2030) - Remove the casting in generateResponse() method of SearchRequestHandler
- * [DIRSERVER-2031](https://issues.apache.org/jira/browse/DIRSERVER-2031) - Use a properly random port when creating a KDCServer via annotation
- * [DIRSERVER-2033](https://issues.apache.org/jira/browse/DIRSERVER-2033) - Upgrade BouncyCastle dependency
- * [DIRSERVER-2036](https://issues.apache.org/jira/browse/DIRSERVER-2036) - Upgrade EhCache dependency
- * [DIRSERVER-2050](https://issues.apache.org/jira/browse/DIRSERVER-2050) - Move configuration from single LDIF to multiple LDIF structure
- * [DIRSERVER-2061](https://issues.apache.org/jira/browse/DIRSERVER-2061) - Logging config bundled with installers is too strict
-
-
-<b>Tasks :</b>
-
- * [DIRSERVER-2024](https://issues.apache.org/jira/browse/DIRSERVER-2024) - Add some configuration for the list of supported TLS protocol
- * [DIRSERVER-2039](https://issues.apache.org/jira/browse/DIRSERVER-2039) - Replace non-OSGi dependencies
- * [DIRSERVER-2041](https://issues.apache.org/jira/browse/DIRSERVER-2041) - Add OSGi tests
- * [DIRSERVER-2064](https://issues.apache.org/jira/browse/DIRSERVER-2064) - Uninstallof deb package incomplete
-
-
-<b>Test :</b>
-
- * [DIRSERVER-2037](https://issues.apache.org/jira/browse/DIRSERVER-2037) - ClientInitialRefreshIT test failures
-
-
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M19 released <em>posted on November 22th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M19, the nineteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-This release is a security fix release : the server is not anymore accepting SSLv3 as a valid protocol.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M19:
-
-<b>Bugs</b>
-
- * [DIRSERVER-2020](https://issues.apache.org/jira/browse/DIRSERVER-2020) - Poodle remediation for ApacheDS 2.X
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M18 released <em>posted on November 13th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M18, the eighteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M18:
-
-<b>Bugs</b>
-
- * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2018) Race condition in PasswordPolicy Bind handling
- * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2017) Another Java 8 only error (with Kerberos)
- * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2016) Java 7 vs Java 8 : failure in Java 8
- * [DIRSERVER-2014](https://issues.apache.org/jira/browse/DIRSERVER-2014) Synchronization is stopped if remote server was not restored during refresh interval
- * [DIRSERVER-2012](https://issues.apache.org/jira/browse/DIRSERVER-2012) Replication ignores startTLS when ads replStrictCertValidation is true
- * [DIRSERVER-2010](https://issues.apache.org/jira/browse/DIRSERVER-2010) LdifFileLoader cannot load LDIFS from the classpath unless they are very specific location
- * [DIRSERVER-2006](https://issues.apache.org/jira/browse/DIRSERVER-2006) Licencing for apacheds-all
- * [DIRSERVER-2003](https://issues.apache.org/jira/browse/DIRSERVER-2003) Remove ONE and SUB level index configuration from default configuration file
- * [DIRSERVER-2002](https://issues.apache.org/jira/browse/DIRSERVER-2002) OutOfMemory error while loading more than 70K entries at once
- * [DIRSERVER-2001](https://issues.apache.org/jira/browse/DIRSERVER-2001) Replication using TLS does not work when confidentiality is enforced
- * [DIRSERVER-1992](https://issues.apache.org/jira/browse/DIRSERVER-1992) LRUMap used as Entry DN cache in AbstractBTreePartition is going into an inconsistent state
- * [DIRSERVER-1986](https://issues.apache.org/jira/browse/DIRSERVER-1986) Delegated authentication fails when password policy is enabled
- * [DIRSERVER-1978](https://issues.apache.org/jira/browse/DIRSERVER-1978) Unable to import ldif when operational attribute pwdChangedTime is present
-
-<b>Improvement</b>
-
- * [DIRSERVER-1965](https://issues.apache.org/jira/browse/DIRSERVER-1965) An Index should speed up searches starting with '*'
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M17 released <em>posted on July 4th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M17, the seventeenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M17:
-
-<b>Bugs</b>
-
- * [DIRSERVER-1971](https://issues.apache.org/jira/browse/DIRSERVER-1971) - Allow any sort of modification on operational attriutes while processing replication events in the consumer
- * [DIRSERVER-1976](https://issues.apache.org/jira/browse/DIRSERVER-1976) - JDBM partition is not building new indices added to the configuration
- * [DIRSERVER-1979](https://issues.apache.org/jira/browse/DIRSERVER-1979) - Adding child entries can't be found after restarting server
- * [DIRSERVER-1980](https://issues.apache.org/jira/browse/DIRSERVER-1980) - pwdReset isn't replicated properly
- * [DIRSERVER-1982](https://issues.apache.org/jira/browse/DIRSERVER-1982) - Couldn't see KDC Principal field under Kerberos settings
- * [DIRSERVER-1986](https://issues.apache.org/jira/browse/DIRSERVER-1986) - Delegated authentication fails when password policy is enabled
-
-<b>New Features</b>
-
- * [DIRSERVER-1967](https://issues.apache.org/jira/browse/DIRSERVER-1967) - Add the support for the WhoAmI extended operation
-
-# News
-<h2 class="news">ApacheDS 2.0.0-M16 released <em>posted on March 13th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M16, the sixteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Downloads are available [here](downloads.html)
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M16:
-
-<b>Bugs</b>
-
- * DIRSERVER-1092 - org.apache.directory.server.dns.store.RecordStore not support ordered multiple resource record answers
- * DIRSERVER-1252 - Server tools dump command broken due to use of old paths
- * DIRSERVER-1412 - Modifying the schema with more than one mod may fail
- * DIRSERVER-1471 - Providing a right fix for DIRSERVER-1459
- * DIRSERVER-1761 - Unable to use external keystore for SSL
- * DIRSERVER-1810 - Test case org.apache.directory.server.replication.ClientServerReplicationIT.testModDn() fails permanently
- * DIRSERVER-1845 - Sporadic failure on CollectivAttributeServiceIT
- * DIRSERVER-1855 - java.lang.IllegalStateException: Can't overwrite cause at org.apache.directory.server.core.authz.GroupCache.initialize(GroupCache.java:190)
- * DIRSERVER-1860 - Invalid DN in returned entry
- * DIRSERVER-1870 - Persistent control is not decoded properly
- * DIRSERVER-1873 - Searching on member attribute (multivalued) for groups is not working as expected
- * DIRSERVER-1884 - Incorrect length specified in PaswordUtil.splitCredentials
- * DIRSERVER-1885 - The JDBM index cache configuration is not used at all
- * DIRSERVER-1888 - Some pwdPolicy schema AT are incorrect
- * DIRSERVER-1894 - Multi-Master replicated startup does not complete
- * DIRSERVER-1900 - Password hashing interceptor is not encrypting the passwords
- * DIRSERVER-1902 - Concurrent reads cause LDAP:Error 80, LDAP: Error 1 and LDAP: error code 49 errors
- * DIRSERVER-1905 - KeytabDecoder should use '/' instead of '\' to separate principal name components
- * DIRSERVER-1906 - We still store entryUUID associated with 'top' in the OC index
- * DIRSERVER-1909 - Integer cannot be cast to java.lang.Long in JdbmTable prevents service start
- * DIRSERVER-1911 - Incorrect installation presumption toward user naming convention
- * DIRSERVER-1917 - Class Cast Exception when doing paged search
- * DIRSERVER-1921 - Indexes dont work on distinguishedNameMatch attributeType
- * DIRSERVER-1922 - Not Operator in Ldap Filter on Indexed Attributes
- * DIRSERVER-1928 - PasswordPolicy should be ignored from Admin session
- * DIRSERVER-1932 - Password policy pwdMinAge check should check for required reset
- * DIRSERVER-1948 - NPE in AuthenticationInterceptor when password policy is in place and user does not have a pwdChangedTime
- * DIRSERVER-1953 - "entryDn" attribute is not returned when requested along with wildcard attribute symbol *
- * DIRSERVER-1954 - Second startup of an embedded server fails (after an ungraceful shutdown of the first startup)
- * DIRSERVER-1955 - Directory Apacheds sends wrong empty response for password policy request
- * DIRSERVER-1957 - chpass/passwd failure (Linux)
- * DIRSERVER-1959 - Certificates corruption during replication
- * DIRSERVER-1961 - Searches wth Object level scope and non-existing attribute assertion in filter are not working
- * DIRSERVER-1962 - Replication Consumer "Enabled" checkbox not working
- * DIRSERVER-1963 - Add contextCSN attribute to the list of ignored attributes in ReplicationConsumerImpl
-
-<b>Improvements</b>
-
- * DIRSERVER-1081 - Injecting more information in the opContext structure
- * DIRSERVER-1294 - Add size() and hasNext() methods to cursors
- * DIRSERVER-1338 - Allow non-Jdbm schema partition
- * DIRSERVER-1460 - Add locale to configuration
- * DIRSERVER-1534 - Improving implementation of loading LDIF files during startup
- * DIRSERVER-1601 - New index to add : PrescriptiveACI, member, uniqueMember
- * DIRSERVER-1634 - Add a DN cache for Stores
- * DIRSERVER-1676 - Provide a set of error codes along with an AuthenticationException to indicate its root cause.
- * DIRSERVER-1716 - Add a ParentIdAndRdn cache
- * DIRSERVER-1920 - Refactor DefaultDirectoryServiceFactory/DefaultDirectoryService for extensability
- * DIRSERVER-1926 - Supply Entry to PasswordValidator instead of username
- * DIRSERVER-1935 - Include password policy control in the password modify extended operation response if requested
-
-<b>New Features</b>
-
- * DIRSERVER-264 - Add Support for Sort Control
- * DIRSERVER-265 - In-memory backend storage support
- * DIRSERVER-442 - Synchronize suffix entries in configuration with entry on disk
- * DIRSERVER-1030 - Add CascadeControl and add functionality to cascade modify and delete effects
- * DIRSERVER-1246 - Add shell scripts and batch files for clients
- * DIRSERVER-1263 - Add authz schema
- * DIRSERVER-1852 - Sort the entry based on the DN before returning them
- * DIRSERVER-1886 - Add configuration schema elements for Mavibot partition
- * DIRSERVER-1889 - Credentials cache for Kerberos
- * DIRSERVER-1898 - Authentication mechanism: PKCS5S2
-
-<b>Task</b>
-
- * DIRSERVER-575 - Convert all non-forwarding (out of band) nextInterceptor calls to use the proxy with bypass instructions
-
-We have also fixed many Kerberos related issues :
-
-<b>Bugs</b>
-
- * DIRKRB-28 - Allow setting searchBaseDN
- * DIRKRB-30 - Decoding incoming request over TCP fails
- * DIRKRB-96 - Unable to obtain ticket after changing the password
-
-<b>Tasks</b>
-
- * DIRKRB-31 - Create the Authenticator grammar
- * DIRKRB-32 - Create the EncTicketPart grammar
- * DIRKRB-33 - Create the AS-REQ grammar
- * DIRKRB-34 - Create the AS-REP grammar
- * DIRKRB-35 - Create the TGS-REQ grammar
- * DIRKRB-36 - Create the TGS-REP grammar
- * DIRKRB-37 - Create the AP-REQ grammar
- * DIRKRB-38 - Create the AP-REP grammar
- * DIRKRB-39 - Create the KRB-SAFE grammar
- * DIRKRB-40 - Create the KRB-PRIV grammar
- * DIRKRB-41 - Create the KRB-CRED grammar
- * DIRKRB-42 - Create the EncASRepPart grammar
- * DIRKRB-43 - Create the EncTGSRepPart grammar
- * DIRKRB-44 - Create the EncAPRepPart grammar
- * DIRKRB-45 - Create the EncKrbPrivPart grammar
- * DIRKRB-46 - Create the EncKrbCredPart grammar
- * DIRKRB-47 - Create the KRB-ERROR grammar
- * DIRKRB-48 - Create the PA-DATA grammar
- * DIRKRB-49 - Create the Checksum grammar
- * DIRKRB-50 - Create the TransitedEncoding grammar
- * DIRKRB-51 - Create the KDC-REQ-BODY grammar
- * DIRKRB-52 - Create the KDC-REP grammar
- * DIRKRB-53 - Create the EncKDCRepPart grammar
- * DIRKRB-54 - Create the LastReq grammar
- * DIRKRB-55 - Create the KRB-SAFE-BODY grammar
- * DIRKRB-56 - Create the KrbCredInfo grammar
- * DIRKRB-57 - Create the METHOD-DATA grammar
- * DIRKRB-58 - Create the TYPED-DATA grammar
- * DIRKRB-59 - Create the PA-ENC-TIMESTAMP grammar
- * DIRKRB-60 - Create the PA-ENC-TS-ENC grammar
- * DIRKRB-61 - Create the ETYPE-INFO-ENTRY grammar
- * DIRKRB-62 - Create the ETYPE-INFO grammar
- * DIRKRB-63 - Create the ETYPE-INFO2-ENTRY grammar
- * DIRKRB-64 - Create the ETYPE-INFO2 grammar
- * DIRKRB-65 - Create the AD-IF-RELEVANT grammar
- * DIRKRB-66 - Create the AD-KDCIssued grammar
- * DIRKRB-67 - Create the AD-AND-OR grammar
- * DIRKRB-68 - Create the AD-MANDATORY-FOR-KDC grammar
- * DIRKRB-69 - Create the Ticket grammar
- * DIRKRB-70 - Create the EncryptedData grammar
- * DIRKRB-71 - Create the PrincipalName grammar
- * DIRKRB-72 - Create the HostAddresses grammar
- * DIRKRB-73 - Create the HostAddress grammar
- * DIRKRB-74 - Create the AuthorizationData grammar
- * DIRKRB-75 - Create the EncryptionKey grammar
- * DIRKRB-76 - Create the KDC-REQ grammar
- * DIRKRB-77 - Adapt the error messages we use in grammars
- * DIRKRB-78 - Add tests for all the grammars
-
-
-<h2 class="news">ApacheDS 2.0.0-M15 released <em>posted on August 18th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M15, the fifteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M15:
-
-<b>Bugs</b>
-
- * DIRSERVER-1325 - Simple Authentication can not be disabled
- * DIRSERVER-1490 - Not 100% sure, but the DN caches we have in the server might not be updated when doing a Move
- * DIRSERVER-1871 - Logging Not Working in M14
- * DIRSERVER-1872 - The JournalInterceptor is not present in the configuration
- * DIRSERVER-1874 - Persistent search is not considering the scope of the search
- * DIRSERVER-1875 - Persistent search is not filtering the attributes before returning entries
- * DIRSERVER-1879 - Incorrect check on result code done in the PwdModifyResponseImpl constructor
- * DIRSERVER-1880 - ApacheDS failed to start on boot
- * DIRSERVER-1882 - KertabEncoder.write() method should take into account the size of the entries list to determine the buffer size
- * DIRSERVER-1883 - Searching for entries starting at the rootDSE does not work
-
-
-<b>Improvement</b>
-
- * DIRSERVER-1049 - [PERF] Speed improvement in Search operation
- * DIRSERVER-1519 - [perf] The MoveAndRename operation is not optimal
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">ApacheDS 2.0.0-M14 released <em>posted on July 1st, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M14, the fourteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-This release does not contain any change, but it depends on a new version of the Apache LDAP API, which contains a fix
-for a critical bug.
-
-This is a critical version, and anyone using 2.0.0-M13 should replace it with this version.
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">ApacheDS 2.0.0-M13 released <em>posted on June 25th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M13, the thirteenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M13:
-
-<b>Bugs</b>
-
- * DIRSERVER-1325 - Simple Authentication can not be disabled
- * DIRSERVER-1490 - Not 100% sure, but the DN caches we have in the server might not be updated when doing a Move
- * DIRSERVER-1491 - Improve schema extractor
- * DIRSERVER-1500 - Error searching children of known element.
- * DIRSERVER-1521 - dc=example,dc=com DIT no longer exists as a default partition (DIT) in 1.5.7?
- * DIRSERVER-1579 - Various problems using moddn operation
- * DIRSERVER-1661 - Kerberos tests not working with JDK 1.6.0_27 and JDK 1.7.0
- * DIRSERVER-1806 - The DelegatedAuthIT test does not test a delegated authentication
- * DIRSERVER-1829 - bug in initializing authenticators for AuthenticatorInterceptor
- * DIRSERVER-1836 - When extedning an interceptor, the operation are executed twice
- * DIRSERVER-1840 - Wrong default duration for ads-repllogmaxidle
- * DIRSERVER-1846 - Configuring SSL/Start TLS keystore does not accept backward slash (\) in path
- * DIRSERVER-1849 - Invalid prefixes format for password stored using SHA-2 hashing mechanisms (SHA-256, SHA-384, SHA-512)
- * DIRSERVER-1862 - Concurrent searches and adds may break the backend
-
-
-<b>Improvement</b>
-
- * DIRSERVER-289 - Configure an optional password message digest algorithm which is applied on userPassword attribute values at add and modify operations.
- * DIRSERVER-1236 - Store an AttributeEntry object in filter's node
- * DIRSERVER-1310 - Improve the way we handle controls encoding/decoding
- * DIRSERVER-1346 - Use ServiceLifecycleListener to avoid having System.out messages for service start/stop events.
- * DIRSERVER-1447 - loadAllEnabled() method is taking way too long
- * DIRSERVER-1489 - Provide access to remote connection info
- * DIRSERVER-1511 - Some operations are present in the Partition interface when they should not
- * DIRSERVER-1617 - Add a feature to support TLS in DelegatingAuthenticator
- * DIRSERVER-1801 - The authenticator cache is invalidated too frequently
-
-
-<b>New Feature</b>
-
- * DIRSERVER-275 - Add Support for LDAP Password Modify Extended Operation
- * DIRSERVER-434 - Add Support for Paged Search Results Control
- * DIRSERVER-866 - Initialization with another backend than JDBM for the system partition
- * DIRSERVER-1203 - RFC2307bis Support is missing
- * DIRSERVER-1837 - The DelegatingAuthenticator does not support SSL/StartTLS/SASL
-
-
-<b>Task</b>
-
- * DIRSERVER-710 - Exception tree should be reviewed
-
-
-
-This is a critical version, and anyone using 2.0.0-M12 should replace it with this version.
-
-Downloads are available [here](downloads.html)
-
-
-
-<h2 class="news">ApacheDS 2.0.0-M12 released <em>posted on May 2nd, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M12, the twelwth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M12:
-
-<b>Bugs</b>
-
- * DIRSERVER-1798 - The AdministrativePoint interceptor is always activated, even if it's not part of the config
- * DIRAPI-80] - Cannot issue a direct operation without having connected to the server
- * DIRSERVER-1143 - ldappasswd fails to bind
- * DIRSERVER-1584 - document how to limit the available ciphers for ldaps (how to disable SSL3_RSA_RC4_40_MD5 : SSL_EXPORT SSL3_RSA_DES_40_CBC_SHA)
- * DIRSERVER-1812 - The default admin account should never get locked forever
- * DIRSERVER-1814 - Using anon connection results in UnbindRequestHandler reporting 'LdapNoSuchObjectException: ERR_268 Cannot find a partition for '
- * DIRSERVER-1826 - The ads-pwdFailureCountInterval is not taken into account
- * DIRSERVER-1834 - Broken backend when using AT with no EQUALITY MR
-
-This is a critical version, and anyone using 2.0.0-M11 should replace it with this version.
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">ApacheDS 2.0.0-M11 released <em>posted on March 3rd, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M11, the eleventh milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M11:
-
-<b>Bugs</b>
-
- * DIRSERVER-1281 - StreamCorruptedException after brutal shutdown
- * DIRSERVER-1797 - The AdministrativeRole AT is not indexed, leadings to huge delay when starting the server
- * DIRSERVER-1798 - The AdministrativePoint interceptor is always activated, even if it's not part of the config
- * DIRSERVER-1799 - When deleting values from an existing entry, the presence index might get out of date
- * DIRSERVER-1802 - Disabling an authenticator results in a NPE
- * DIRSERVER-1803 - When the SimpleAuthenticator is disabled, and the auth level is set to SIMPLE, we can bind freely
- * DIRSERVER-1804 - [patch] Fix ApacheDS code to allow control and reduce number of outputted logs
- * DIRSERVER-1805 - The replication janitor thread is not stopped correctly when the server is stopped
- * DIRSERVER-1321 - Clarify relationship between partition.syncOnWrite and apacheDS.syncPeriodMillis configuration attributes
- * DIRSERVER-1322 - Auto inferring context entry
- * DIRSERVER-1808 - We should evaluate the Scope and any other index in a fliter only when the # of candidate is above a threshold
- * DIRKRB-85 - @CreateKdcServer should include searchBaseDn attribute
- * DIRKRB-86 - The Kerberos server badly need some logging...
-
-Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">ApacheDS 2.0.0-M10 released <em>posted on January 29th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M10, the tenth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M10:
-
-<b>Bugs</b>
-
-* DIRSERVER-1704 - Inconistency in Master-Slave Replication
-* DIRSERVER-1740 - REPLICATION data loss
-* DIRSERVER-1772 - Improve the replication logs
-* DIRSERVER-1788 - ConfigurationReader fails to correctly read byte[] values
-* DIRSERVER-1789 - Changes to an existing replication consumer may not be taken into account
-* DIRSERVER-1790 - When we restart the server, some user index are lost
-* DIRSERVER-1791 - Interrupting a search on the client side cause the connection to be closed by the server
-* DIRSERVER-1792 - Replication and Modification of ACIs
-
-Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">ApacheDS 2.0.0-M8 released <em>posted on October 12th, 2012</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M8, the eigth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M8:
-
-<b>Bugs</b>
-
-* DIRSERVER-1458 - Cursor API generic usage is totally wrong
-* DIRSERVER-1624 - Index are not created when added after the server has been started
-* DIRSERVER-1655 - Possible incorrect insertion of modifications in the consumer log
-* DIRSERVER-1659 - the apacheds.sh/bat files contains a hard coded revision. This is not good
-* DIRSERVER-1663 - NPE when doing add/delete and search at the same time on the same entries
-* DIRSERVER-1677 - Dependencies cleanup
-* DIRSERVER-1689 - testNoSearchByNonAdmin does not throw an LdapNoPermissionException, as expected
-* DIRSERVER-1706 - be sure we close the cursors when the session expires and if we have paged searches or persistent search going on
-* DIRSERVER-1709 - Adding an index does not create the index if the server is already started
-* DIRSERVER-1710 - The memory default (128M) is not enouh in most case
-* DIRSERVER-1715 - Implement backward browse for DescendantCursor and ChildrenCursor
-* DIRSERVER-1718 - Problems when adding a schema containing one or more uppercased letters
-* DIRSERVER-1722 - The PagedSearchIT.testPagedSearchWrongCookie() test blocks randomly the build
-* DIRSERVER-1723 - Potential LRUCache exhaustion with searches
-* DIRSERVER-1726 - DefaultPasswordValidator always throws PasswordPolicyException when consecutive non-letter chars are in RDN
-* DIRSERVER-1727 - LDAP Searches against boolean attributes with booleanMatch equality never return matches
-* DIRSERVER-1732 - ERR_04131 The value is expected to be a String
-* DIRSERVER-1735](https://issues.apache.org/jira/browse/DIRSERVER-1735) - When ads-pwdmaxage attribute is set to more then 2147483, then all user passwords are expirer forever.
-* DIRSERVER-1737 - ApacheDS should be able to start even when one of its indexed attributes can't be found in the schema manager
-* DIRSERVER-1738 - Can't restart ApacheDS after setting a value superior to Integer.MAX_VALUE in an AT with Integer syntax
-* DIRSERVER-1739 - LDAP Searches Slow
-* DIRSERVER-1744 - Compex LDAP search filters returning unmatched objects
-* DIRSERVER-1747 - Presence index is not up to date when the server is started
-* DIRSERVER-1748 - EqualityEvaluator does not work correctly
-
-Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">ApacheDS 2.0.0-M7 released <em>posted on May 21st, 2012</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M7, the seventh milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M7:
-
-<b>Bugs</b>
-
-* DIRSERVER-1093 - the ResourceRecordEncoder and QuestionRecordEncoder have bug for empty domainName
-* DIRSERVER-1697 - Creation of new syntax fails due to ERR_277 Attribute m-obsolete not declared in objectClasses of entry
-* DIRSERVER-1698 - Search on entries with multiple AVA in RDN does not work correctly if the initial RDN order is not used
-* DIRSERVER-1702 - Adding an index through annotation does not work
-* DIRSERVER-1712 - If the index are created using their alias, they are deleted immediately
-* DIRSERVER-1711 - Index initialization is taking way too much time
-* DIRSERVER-1713 - Error on console with first start of clean system
-
-Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">ApacheDS 2.0.0-M6 released <em>posted on February 29th, 2012</em></h2>
-
-The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M6, the sixth milestone towards a 2.0 version.
-
-ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
-
-Here is the release note for Apache Directory ApacheDS 2.0.0-M6:
-
-<b>Bugs</b>
-
-* DIRSERVER-1644 - User provided value is not retained during rename operation
-* DIRSERVER-1681 - adding entries with attribute userCertificate;binary fails with "No such attribute"
-* DIRSERVER-1692 - Unable to add a JPEG image to an entry due to an 'Invalid Attribute Syntax' error
-* DIRSERVER-1693 - Renaming an entry when the RDN uses a case insensitive AT should be possible
-* DIRSERVER-1694 - Renaming an existing entry with a DN containing upper cased chars will not store the CN as provided
-* DIRSERVER-1696 - Creation of an entry like cn=test1+cn=test2, ou=system should not be allowed
-* DIRSERVER-1699 - DN/RDN handling is incorrect when there are some escaped values into them
-* DIRSERVER-1700 - Version in Root DSE is reported as '$pom.version'
-
-Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
-
-Downloads are available [here](downloads.html)
diff --git a/content/api/coding-standards.mdtext b/content/api/coding-standards.mdtext
deleted file mode 100644
index d5dd433..0000000
--- a/content/api/coding-standards.mdtext
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Coding Standards
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Coding Standards
-
-Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
-
-Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
-
-**eclipse IDE**
-
-Eclipse users can import those two files to enfore the code formating : [formatting.xml](https://github.com/apache/directory-project/blob/master/resources/formatting.xml) and [codetemplates.xml](https://github.com/apache/directory-project/blob/master/resources/codetemplates.xml)
-
-**IDEA IDE**
-
-IDEA users can import [this file](settings.jar) to enfore the code formating.
-
-
-## Headers
-
-First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
-
-
- :::java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-### Class/Interface headers
-
-Each **Class** or *Interface* should have an header which must contains :
-
-* A descrption of this class/interface
-* an *author* tag which should be :
-
- :::java
- @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-
-<DIV class="note" markdown="1">
-Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
-</DIV>
-
-If you use **html** tags, remember to escape '<' and '>' characters...
-
-### Static members and other members
-
-Just add a single line javadoc comment like : _/** blah ... */_ before each member
-
-### Methods
-
-Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
-
-Escape **html** characters
-
-## Comments
-
-No special rules, except that you should avoid :
-
-* Useless comments like : i++; /\* Increment i \*/
-* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
-* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
-* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
-
-Basically, use your common sense :-)
-
-## Naming
-
-Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
-
-* Constants are in UPPER CASE with accepted '_'
-* Class starts with an uppercase and each starting word is upper cased. No '_', please !
-* Methods starts with lower case and then follow the same rule than classes. No '_', please !
-* Interfaces should not start with an 'I'
-* Classes which implements an Interface must be followed by the postfix 'impl'
-* Variables follow the method naming convention. No '_', please !
-* Use meaningfull names.
-* No double letter variables like ii, jj etc...
-
-If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
-
-Naming is really important for **APIs**. Be smart. If you are not sure, ask.
-
-## Spaces vs tabs
-
-<DIV class="warning" markdown="1">
-**FOUR SPACES, NO TAB. Final.**
-</DIV>
-
-No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
-
-## Formatting
-
-Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
-
-Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
-
-Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
-
-<DIV class="warning" markdown="1">
-**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
-</DIV>
-
-People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
-
-Some general rules :
-
-* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
-* No more than one instruction on a single line, the only exception is the '?' ':' operation
-* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
-* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
-* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
-* Add spaces in method calls after '(' and before ')'
-* '{' and '}' must be on the same column
-
-This is a code example :
-
- :::java
- ...
- int result = myMethod( param1, param2 )
-
- if ( result > 0 )
- {
- // do something
- }
- ...
-
-
-## Imports
-
-Always declare all the classes you import, do not use **x.y.\***
-
-## What else ?
-
-Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
-
-That's it ! (I wait your comments, guys :-)
diff --git a/content/api/developer-guide.mdtext b/content/api/developer-guide.mdtext
deleted file mode 100644
index 9fffc60..0000000
--- a/content/api/developer-guide.mdtext
+++ /dev/null
@@ -1,508 +0,0 @@
-Title: LDAP Java API - Developer Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Developer Guide
-
-This guide is intened to be read by those who participate into the development of the LDAP API. Users of the API are expected to read the [User guide](user-guide.html).
-
-## Getting the source, Building the trunks
-To get the source, build the *trunks/api* and get along with Maven.
-
-## Versioning Scheme
-
-The version number of **LDAP API** has the following form:
-
-<DIV class="info" markdown="1">
- <major>.<minor>.<micro> \[-M<milestone number> or -RC<release candidate number>]
-</DIV>
-
-This scheme has three number components:
-
-* The __major__ number increases when there are incompatible changes in the API.
-* The __minor__ number increases when a new feature is introduced.
-* The __micro__ number increases when a bug or a trivial change is made.
-
-and an optional label that indicates the maturity of a release:
-
-* __M__ (Milestone) means the feature set can change at any time in the next milestone releases. The last milestone release becomes the first release candidate after a vote.
-* __RC__ (Release Candidate) means the feature set is frozen and the next RC releases will focus on fixing problems unless there is a serious flaw in design. The last release candidate becomes the first GA release after a vote.
-* No label implies __GA__ (General Availability), which means the release is stable enough and therefore ready for production environment.
-
-<DIV class="info" markdown="1">
- A <b>stable</b> version is a version with a frozen set of features, and a frozen <b>API</b>. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
- Although we may add new features between two milestones, and the data structure may change, which may imply that the data have to be extracted and reimported in order for the server to be operational.<BR/>
- The configuration might also evolve between two versions.
-</DIV>
-
-## Coding standards
-
-The applicable coding standards for LDAP API 1.0 are described in [Coding Standards](coding-standards.html)
-
-There are some more rules, as we are using **Java 6** now :
-
-* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
-* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
-* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
-* Use the new *Enum* type !
-
-## Releasing the LDAP API
-
-**Note: The release guide needs to be updated after git migration!**
-
-Here is a guide on how to cut a new release. This is a long process, expect it to last a couple of hours !
-
-First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version of the JDK (1.7 is ok, it should also build with 1.6).
-
-### Maven Settings
-
-You'll need a settings section for the **Nexus** and **people.apache.org** servers with a password or a path to the SSH key used. Here's what my **settings.xml** file in **~/.m2** looks like:
-
- :::text
- <settings>
-
- <servers>
- <!-- To publish a snapshot of some part of Maven -->
- <server>
- <id>apache.snapshots.https</id>
- <username>username</username>
- <password>********</password>
- </server>
-
- <!-- To publish a website using Maven -->
- <server>
- <id>apache.directory</id>
- <username>username</username>
- <privateKey>/Users/username/.ssh/id_rsa</privateKey>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
-
- <!-- To stage a release of some part of Maven -->
- <server>
- <id>apache.releases.https</id>
- <username>username</username>
- <password>********</password>
- </server>
-
- <!-- To stage a website of some part of Maven -->
- <server>
- <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
- <username>elecharny</username>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
-
- </servers>
-
- <profiles>
- <profile>
- <id>apache-public</id>
- <pluginRepositories>
- <pluginRepository>
- <id>apache.public</id>
- <url>https://repository.apache.org/content/groups/public/</url>
- </pluginRepository>
- </pluginRepositories>
- </profile>
-
- <profile>
- <id>apache-release</id>
- <!-- Configuration for artifacts signature -->
- <properties>
- <gpg.passphrase>********</gpg.passphrase>
- <gpg.keyname>elecharny@apache.org</gpg.keyname>
- </properties>
- </profile>
- </profiles>
-
- </settings>
-
-Just replace your username, passwords and paths. Note that the username and password is your Apache LDAP account.
-
-
-<DIV class="info" markdown="1">
-You'll need to provide the passphrase in the <b>settings.xml</b> to access the gpg secret key installed on your host. This is due to a bug with the passphrase prompt in the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase in the <b>settings.xml</b> file in clear text. This should change in the future when this bug is fixed. Note that this passphrase is put into the release profile which we activate to properly sign and release the artifacts and poms via the release plugin.
-</DIV>
-
-### GPG Key
-
-All subprojects are configured to deploy signatures for the artifacts uploaded to the repository. The **gpg** plugin will check use the default gpg key for the user deploying the project with the release:perform directive of the release plugin. This will prompt you for the passphrase for the default key. If you do not have one setup the build will fail.
-
-You can generate and upload a PGP key to a PGP keyserver using the following commands:
-
- :::text
- gpg --gen-key
- gpg --fingerprint
- gpg --keyserver subkeys.pgp.net --send-keys <your key's id from last command>
-
-
-<DIV class="info" markdown="1">
-Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and to have added your public key to the <b>KEYS</b> file.
-See also http://people.apache.org/~henkp/repo/faq.html#4
-</DIV>
-
-## Release process
-
-Since we are using Nexus for releases the release process is as follows (see also [Publishing maven artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven)).
-
-### Test the Project
-
- :::text
- $ mvn release:prepare -DdryRun=true
-
-Be aware that this phase will ask you about the next version, and most important, for the next SCM tag :
-
- :::text
- ...
- [INFO] Checking dependencies and plugins for snapshots ...
- What is the release version for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent) 1.0.0-M16: :
- What is the release version for "Apache Directory LDAP API I18n"? (org.apache.directory.api:api-i18n) 1.0.0-M16: :
- What is the release version for "Apache Directory LDAP API Utilities"? (org.apache.directory.api:api-util) 1.0.0-M16: :
- ...
- What is SCM release tag or label for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent) 1.0.0-M16: :
- ...
-
-### Deploy a Snapshot
-
- :::text
- $ mvn deploy
-
-This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
-
-### Prepare the Release
-
- :::text
- $ mvn release:clean
- $ mvn release:prepare
-
-This creates a tag [here](https://gitbox.apache.org/repos/asf?p=directory-ldap-api.git)
-
-### Stage the Release
-
- :::text
- $ mvn release:perform
-
-This deploys the release to a staging repository.
-
-Go to [the nexus server](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
-
-### Build the Site
-
-In order to be able to generate the site, you will have to modify the target/checkout/pom.xml file, by adding a line to the javadoc configuration (in two places) :
-
- :::text
- $ vi target/checkout/pom.xml
- ...
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <show>private</show>
- <nohelp>true</nohelp>
- <doclint>none</doclint> <---- This line
- ...
-
-and
-
- :::text
- ...
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <configuration>
- <windowtitle>Apache LDAP API ${project.version} API Documentation</windowtitle>
- <doctitle>Apache LDAP API ${project.version} API Documentation</doctitle>
- <minmemory>512m</minmemory>
- <maxmemory>1g</maxmemory>
- <linksource>true</linksource>
- <doclint>none</doclint> <---- This line too
- ...
-
-
-then run the maven site goal :
-
- :::text
- $ cd target/checkout
- $ mvn site
-
-This creates the site.
-
-### Sign the packages
-
-Now, you have to sign the binary packages which are in target/checkout/distribution/target.
-
-Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
-
-You can get the keys by typing :
-
- gpg --list-keys
-
-The produced packages already have .asc signature that you will need to remove :
-
- :::text
- $ cd target/checkout/distribution/target
- $ rm *.asc
- $ ~/sign.sh
- PGP Key ID:
- <You public key>
- PGP Key Password:
- <Your password>
- -n Signing: ./apache-ldap-api-1.0.0-M25-bin.tar.gz ...
- - Generated './apache-ldap-api-1.0.0-M25-bin.tar.gz.md5'
- - Generated './apache-ldap-api-1.0.0-M25-bin.tar.gz.asc'
- -n Signing: ./apache-ldap-api-1.0.0-M25-bin.zip ...
- - Generated './apache-ldap-api-1.0.0-M25-bin.zip.md5'
- - Generated './apache-ldap-api-1.0.0-M25-bin.zip.asc'
- ...
-
-You are done with the signature.
-
-For the record, here is the script shell you can use to sign the packages. Name it sign.sh, and put it into your home directory (on a unix based computer) :
-
- #!/bin/sh
-
- echo "PGP Key ID: "
- read DEFAULT_KEY
-
- echo "PGP Key Password: "
- stty -echo
- read PASSWORD
- stty echo
- echo ""
-
- for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" -or -name "*.asc" ')' -and -type f) ; do
- if [ -f "$FILE.asc" ]; then
- echo "Skipping: $FILE"
- continue
- fi
-
- echo -n "Signing: $FILE ... "
-
- # SHA-256
- if [ ! -f "$FILE.sha256" ];
- then
- gpg -v --default-key "$DEFAULT_KEY" --print-md SHA256 "$FILE" > "$FILE".sha256
- echo " - Generated '$FILE.sha256'"
- else
- echo " - Skipped '$FILE.sha256' (file already existing)"
- fi
-
- # SHA-512
- if [ ! -f "$FILE.sha512" ];
- then
- gpg -v --default-key "$DEFAULT_KEY" --print-md SHA512 "$FILE" > "$FILE".sha512
- echo " - Generated '$FILE.sha512'"
- else
- echo " - Skipped '$FILE.sha512' (file already existing)"
- fi
-
- # ASC
- if [ ! -f "$FILE.asc" ];
- then
- echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
- echo " - Generated '$FILE.asc'"
- else
- echo " - Skipped '$FILE.asc' (file already existing)"
- fi
- done
-
-
-### Publish Source and Binary Distribution Packages
-
-The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by the other committers, in order to be checked while validating the release. As the ~/people.apache.org server is not anymore available for that purpose, we use the [distribution](https://dist.apache.org/repos/dist/dev/directory) space for that purpose.
-
-If you haven't checked out this space, do it now :
-
- :::text
- $ mkdir -p ~/apacheds/dist/dev/directory
- $ svn co https://dist.apache.org/repos/dist/dev/directory ~/apacheds/dist/dev/directory
-
-That will checkout the full project distributions.
-
-You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
-
- :::text
- $ mkdir -p ~/apacheds/dist/dev/directory/api
- $ svn co https://dist.apache.org/repos/dist/dev/directory/api ~/apacheds/dist/dev/directory/api
-
-Now, create a sub-directory for the version you have generated (here, for version 1.0.0-RC1) :
-
- :::text
- $ mkdir ~/apacheds/dist/dev/directory/api/1.0.0-RC1
-
-and copy the packages and signature to this area :
-
- :::text
- $ cd distributions/target
- $ cp apache-ldap-api-<version>-* ~/apacheds/dist/dev/directory/api/1.0.0-RC1
-
-Last, not least, commit your changes
-
- :::text
- $ svn add ~/apacheds/dist/dev/directory/api/1.0.0-RC1
- $ svn ci ~/apacheds/dist/dev/directory/api/1.0.0-RC1 -m "Apache LDAP API 1.0.0-RC1 packages"
-
-### Test the New Version in ApacheDS and Studio
-
-In <em>apacheds/pom.xml</em> change the <org.apache.directory.api.version> property, build ApacheDS, go into <em>apacheds/service</em>, and run <em>./apachds.sh</em> to start the server.
-
-In <em>studio/pom.xml</em> change the <org.apache.directory.api.version> and <org.apache.directory.api.validversion> properties, build Studio, and start Studio in <em>applications/applications_<your platform>/target/ApacheDirectoryStudio-<your platform>/<executable></em>. Connect to the started **ApacheDS**.
-
-### Stage the release
-
-Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
-
-### Vote
-
-Start a 72h vote at the dev mailing list.
-
-### Release
-
-If the vote succeeds LDAP API project can be released.
-
-Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
-
-The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by users. We use the [distribution](https://dist.apache.org/repos/dist/release/directory) space for that purpose.
-
-Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/api/dist/$(version)
-
-If you haven't checked out this space, do it now :
-
- :::text
- $ mkdir -p ~/apacheds/dist/release/directory
- $ svn co https://dist.apache.org/repos/dist/release/directory ~/apacheds/dist/release/directory
-
-That will checkout the full project distributions.
-
-You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
-
- :::text
- $ mkdir -p ~/apacheds/dist/release/directory/api/dist
- $ svn co https://dist.apache.org/repos/dist/release/directory/api/dist ~/apacheds/dist/release/directory/api/dist
-
-Then move the packages from 'dev' to 'release' :
-
- :::text
- # cd dist/release/directory/api/dist
- # cp ~/apacheds/dist/dev/directory/api/<version> .
- # svn add <version>
- # svn ci <version>
- ...
- # exit
- $
-
-The packages should now be available on http://www.us.apache.org/dist/directory/api/dist/<version>
-
-### Deploy the Javadocs and XRef
-
-We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
-
- target/checkout/target/site
-
-We will copy two directories :
-
- apidocs
- xref
-
-*Staging or Production?*
-
-<DIV class="info" markdown="1">
-Those files will be stored on the production server only !!! And some extra caution ust be taken not to delete them when we will publish the staging site too...
-</DIV>
-
-First of all, you must checkout the two CMS store for the site : staging and production.
-
- :::text
- $ cd ~/apacheds
- $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
- ...
- $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
- ...
-
-Now, you will first add the directory for the newly generated version :
-
- :::text
- $ cd ~/apacheds/production/content/api/gen-docs
- $ mkdir <version>
- $ svn add <version>
-
-Then copy the generated docs :
-
- :::text
- $ cp -r ~/apacheds/trunks/api/target/checkout/target/site/apidocs ~/apacheds/production/content/api/gen-docs/<version>
- $ cp -r ~/apacheds/trunks/api/target/checkout/target/site/xref ~/apacheds/production/content/api/gen-docs/<version>
- $
-
-You have to check in those directories :
-
- :::text
- $ svn add <version>/*
- $ svn ci <version> -m "Injected <version> javadocs"
-
-Now, you have to update the staging site <em>extpaths.txt</em>
-
-This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
-
- :::text
- $ cd ~/apacheds/staging/content/
- $ vi extpaths.txt
-
-Add the following line :
-
- :::text
- ...
- # API
- api/gen-docs/<version>
- ...
-
-then save and check in the file <em>extpaths.txt</em>
-
-We also have to update the <em>.htaccess</em> file :
-
- :::text
- $ cd ~/apacheds/staging/content/api/gen-docs
- $ vi .htaccess
-
-And update the two last lines to refer to the version you've just released :
-
- :::text
- RewriteRule ^latest$ <version>/
- RewriteRule ^latest/(.*)$ <version>/$1
-
-Save and commit the file.
-
-### Update the web site
-
-You can now update the site, add a news on the front page, and publish the site.
-
-There are a few places to modify :
-
-* /lib/path.pm : update the $version_api variable with the new version.
-* /content/index.mdtext : same here, update the <!-- LDAP API project --> section, which contains the version.
-* /content/api/news.mdtext : add the news on top of this page
-* /content/api/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
-
-Commit the changes, and publish the web site, you are done !
-
-### Inform the world !
-
-After 24h, you can now inform the world about the release.
-
-Send a mail to the users and dev mailing list, and one to the **announce@apache.org**
-
-You are done !
diff --git a/content/api/download-old-versions.mdtext b/content/api/download-old-versions.mdtext
deleted file mode 100644
index 5847d77..0000000
--- a/content/api/download-old-versions.mdtext
+++ /dev/null
@@ -1,122 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-
-## LDAP API 2.0
-
-<center>
-
-| Version| Download Link | Javadoc & XRef | Date |
-|:-:|:-:|:-:|:-:|
-| Apache LDAP API 2.0.0 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0/xref/) |13/Nov/2019 |
-| Apache LDAP API 2.0.0.AM4 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM4) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM4/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0.AM4/xref/) |09/Jun/2019 |
-| Apache LDAP API 2.0.0.AM3 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM3) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM3/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0.AM3/xref/) |15/May/2019 |
-| Apache LDAP API 2.0.0.AM2 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM2) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM2/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0.AM2/xref/) |03/Sep/2018 |
-| Apache LDAP API 2.0.0.AM1 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM1) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM1/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0.AM1/xref/) |26/Jul/2018 |
-
-</center>
-
-## LDAP API 1.0
-
-<center>
-
-| Version| Download Link | Javadoc & XRef | Date |
-|:-:|:-:|:-:|:-:|
-| Apache LDAP API 1.0.2 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.2/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.2/xref/) |06/Jun/2018 |
-| Apache LDAP API 1.0.1 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.1/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.1/xref/) |19/May/2018 |
-| Apache LDAP API 1.0.0 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0/xref/) |07/June/2017 |
-| Apache LDAP API 1.0.0-RC2 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-RC2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-RC2/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-RC2/xref/) |02/Nov/2016 |
-| Apache LDAP API 1.0.0-RC1 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-RC1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-RC1/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-RC1/xref/) |17/Jun/2016 |
-| Apache LDAP API 1.0.0-M33 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M33) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M33/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M33/xref/) |21/Dec/2015 |
-| Apache LDAP API 1.0.0-M32 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M32) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M32/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M32/xref/) |19/Oct/2015 |
-| Apache LDAP API 1.0.0-M31 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M31) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M31/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M31/xref/) |05/Jul/2015 |
-| Apache LDAP API 1.0.0-M30 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M30) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M30/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M30/xref/) |02/May/2015 |
-| Apache LDAP API 1.0.0-M29 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M29) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M29/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M29/xref/) |02/Apr/2015 |
-| Apache LDAP API 1.0.0-M28 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M28) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M28/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M28/xref/) |15/Jan/2015 |
-| Apache LDAP API 1.0.0-M27 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M27) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M27/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M27/xref/) |29/Dec/2014 |
-| Apache LDAP API 1.0.0-M26 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M26) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M26/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M26/xref/) |22/Nov/2014 |
-| Apache LDAP API 1.0.0-M25 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M25) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M25/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M25/xref/) |12/Nov/2014 |
-| Apache LDAP API 1.0.0-M24 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M24) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M24/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M24/xref/) |02/Aug/2014 |
-| Apache LDAP API 1.0.0-M23 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M23) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M23/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M23/xref/) |03/Jul/2014 |
-| Apache LDAP API 1.0.0-M22 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M22) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M22/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M22/xref/) | 22/Apr/2014 |
-| Apache LDAP API 1.0.0-M21 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M21) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M21/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M21/xref/) | 13/Mar/2014 |
-| Apache LDAP API 1.0.0-M20 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M20) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M20/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M20/xref/) | 18/Aug/2013 |
-| Apache LDAP API 1.0.0-M19 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M19) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M19/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M19/xref/) | 01/Jul/2013 |
-| Apache LDAP API 1.0.0-M18 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M18) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M18/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M18/xref/) | 25/Jun/2013 |
-| Apache LDAP API 1.0.0-M17 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M17) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M17/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M17/xref/) | 02/May/2013 |
-| Apache LDAP API 1.0.0-M16 binaries | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M16) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M16/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M16/xref/) | 03/Mar/2013 |
-| Apache LDAP API 1.0.0-M16 sources | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M16) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M16/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M16/xref/) | 03/Mar/2013 |
-| Apache LDAP API 1.0.0-M15 binaries | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M15) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M15/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M15/xref/) | 28/Jan/2013 |
-| Apache LDAP API 1.0.0-M15 sources | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M15) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M15/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M15/xref/) | 28/Jan/2013 |
-| Apache LDAP API 1.0.0-M14 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M14) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M14/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M14/xref/) | 07/Jan/2013 |
-| Apache LDAP API 1.0.0-M13 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M13) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M13/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M13/xref/) | 12/Oct/2012 |
-| Apache LDAP API 1.0.0-M12 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M12) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M12/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M12/xref/) | 09/May/2012 |
-| Apache LDAP API 1.0.0-M11 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M11) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M11/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M11/xref/) | 28/feb/2012 |
-| Apache LDAP API 1.0.0-M10 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M10) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M10/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M10/xref/) | 03/Feb/2012 |
-| Apache LDAP API 1.0.0-M9 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M9) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M9/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M9/xref/) | 17/Jan/2012 |
-| Apache LDAP API 1.0.0-M8 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M8) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M8/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M8/xref/) | 05/Sep/2011 |
-| Apache LDAP API 1.0.0-M7 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M7) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M7/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M7/xref/) | 15/Aug/2011 |
-| Apache LDAP API 1.0.0-M6 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M6) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M6/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M6/xref/) | 04/Aug/2011 |
-| Apache LDAP API 1.0.0-M5 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M5) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M5/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M5/xref/) | 25/Jun/2011 |
-| Apache LDAP API 1.0.0-M4 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M4) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M4/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M4/xref/) | 30/May/2011 |
-| Apache LDAP API 1.0.0-M3 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M3) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M3/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M3/xref/) | 22/Apr/2011 |
-| Apache LDAP API 1.0.0-M2 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M2/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M2/xref/) | 15/Mar/2011 |
-| Apache LDAP API 1.0.0-M1 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M1/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/1.0.0-M1/xref/) | 18/Feb/2011 |
-
-</center>
-
-
-## LDAP API 0.x
-
-<center>
-
-| Version| Download Link | Javadoc & XRef | Date |
-|:-:|:-:|:-:|:-:|
-| Apache LDAP API 0.1 | [Download](https://archive.apache.org/dist/directory/api/unstable/0.1/) | 24/Mar/2010 |
-
-</center>
-
-<DIV class="note" markdown="1">
-We encourage you to verify the integrity of the downloaded file using:
-
-* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-* the MD5 file (checksum).
-</DIV>
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-
-
-Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
\ No newline at end of file
diff --git a/content/api/download/download-archive-1.mdtext b/content/api/download/download-archive-1.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/api/download/download-archive-1.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/api/download/download-archive-2.mdtext b/content/api/download/download-archive-2.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/api/download/download-archive-2.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/api/download/download-sources-1.mdtext b/content/api/download/download-sources-1.mdtext
deleted file mode 100644
index 3f8ffb5..0000000
--- a/content/api/download/download-sources-1.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/api/download/download-sources-2.mdtext b/content/api/download/download-sources-2.mdtext
deleted file mode 100644
index 3f8ffb5..0000000
--- a/content/api/download/download-sources-2.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/api/downloads-1.mdtext b/content/api/downloads-1.mdtext
deleted file mode 100644
index dcbc3f0..0000000
--- a/content/api/downloads-1.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: LDAP API Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads LDAP API 1.0
-
-## Jar Download
-
-The Apache Directory LDAP API is distributed as a jar.
-
-* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive-1.html)
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources-1.html)
-
-## Maven Dependency
-
-The Apache Directory LDAP API is also available as a Maven dependency:
-
- <dependency>
- <groupId>org.apache.directory.api</groupId>
- <artifactId>api-all</artifactId>
- <version>${api-version}</version>
- </dependency>
diff --git a/content/api/downloads-2.mdtext b/content/api/downloads-2.mdtext
deleted file mode 100644
index ce0c321..0000000
--- a/content/api/downloads-2.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: LDAP API Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads LDAP API 2.0
-
-## Jar Download
-
-The Apache Directory LDAP API is distributed as a jar.
-
-* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive-2.html)
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources-2.html)
-
-## Maven Dependency
-
-The Apache Directory LDAP API is also available as a Maven dependency:
-
- <dependency>
- <groupId>org.apache.directory.api</groupId>
- <artifactId>api-all</artifactId>
- <version>${api-version}</version>
- </dependency>
diff --git a/content/api/five-minutes-tutorial.mdtext b/content/api/five-minutes-tutorial.mdtext
deleted file mode 100644
index a57d9b6..0000000
--- a/content/api/five-minutes-tutorial.mdtext
+++ /dev/null
@@ -1,118 +0,0 @@
-Title: Five Minute Tutorial
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Five Minute Tutorial
-
-## Introduction
-
-> *Warning*: This is a very preliminary tutorial, the user must be informed that the current implementation will evolve a **lot** in the near future. So will the tutorial, hopefully...
-
-This new API has been created in order to offer a better API than what we currently use, namely JNDI or older API like LdapSDK or jldap. It benefits from some improvements brought by **ApacheDS** and **OpenDS**.
-
-This 5-minutes tutorial will present the way to use this API when working with a LDAP server.
-
-## Base principles
-
-LDAP is a connected protocol, so you need to create a connection in order to send request and receive response from a Ldap server. This is the main point : you have to create a connection first.
-
-Each operation can have one or more responses, and produce exceptions when something went wrong.
-
-The API is schema ware, ie the manipulated objects will be controlled on the client side, assuming you have brought back the schema from the server, or by using a default schema configuration
-
-## Connection
-
-In order to create a connection, you first have to provide the name of the server, and the port to use. Those parameters will be defaulted to **localHost** and **389** if nothing is defined.
-
-### Opening a connection
-Here is an example :
-
- :::java
- LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
-
-It's important to note that the connection has nothing to do with being bound, and this is a major difference with JNDI, where you create some context and provide the principalDN. A Connection is just a channel opened with the server, here.
-
-Another important thing to understand is that the connection is not explicitly opened. In fact, the **bind** operation will open the connection.
-
-### Secure connection
-
->TODO
-
-## Bind operation
-Now that the connection has been created, you can call the **bind()** method. This will create a identified connection between a client and the server. The **bind** operation has nothing to do with the **JNDI** bind, as no entry will be created.
-
-### Anonymous bind
-You can bind using no identifier, and in this case, you'll create an anonymous LDAP session. This is done this way :
-
- :::java
- connection.bind();
-
-### Simple bind
-The most common bind uses an identifier and a password. The identifier must be a *DN*, and the password can be encrypted. Here is an example of a bind operation :
-
- :::java
- // Don't do that ! Password in clear text = danger !
- connection.bind( "ou=example, dc=com", "secret" );
-
- // The password is encrypted, but it does not protect against a MITM attack
- connection.bind( "ou=example, dc=com", "{crypt}wSiewPyxdEC2c" );
-
-## Search operation
-
-We have tried to make it easy to search information in a LDAP server, as this is the most frequently used operation.
-
-Many parameters can be used in a search. The most commonly used are :
-* The base DN
-* The filter
-* The scope
-* The returning attributes list
-
-### Simple search operation
-
-Here is a simple search, done using only those four parameters :
-
- :::java
- EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL, "*" );
-
- while ( cursor.next() )
- {
- Entry entry = cursor.get();
-
- // Process the entry
- ...
- }
-
-Here, we call the search operation, and we get back a cursor. Reading search result from the cursor is done with the **get()** method, moving forward uses the **next()** method.
-
-## Unbinding
-When you are done with the operation, you can unbind. This is done by calling the **unbind()** method, this way :
-
- :::java
- connection.unbind();
-
-
-## Closing the connection
-Once you are done with the connection, don't forget to close it. It's done by calling the **close()** method :
-
- :::java
- connection.close();
-
-If you explicitly call the **unbind()** method, the connection will also be closed, and in this case, you wont have to close it explicitly.
-
-## Conclusion
-
-This very limited presentation was written to give users a quick insight about how to use the **API**. In order to get some further information, please check the **[User Guide](user-guide.html)**
diff --git a/content/api/gen-docs/.htaccess b/content/api/gen-docs/.htaccess
deleted file mode 100644
index 6fb4419..0000000
--- a/content/api/gen-docs/.htaccess
+++ /dev/null
@@ -1,9 +0,0 @@
-RewriteEngine on
-
-RewriteBase /api/gen-docs
-
-RewriteRule ^latest$ 1.0.3/
-RewriteRule ^latest/(.*)$ 1.0.3/$1
-
-RewriteRule ^latest2$ 2.0.1/
-RewriteRule ^latest2/(.*)$ 2.0.1/$1
diff --git a/content/api/index.mdtext b/content/api/index.mdtext
deleted file mode 100644
index eb28811..0000000
--- a/content/api/index.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Welcome to Apache Directory LDAP API
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/api/internal-design-guide.mdtext b/content/api/internal-design-guide.mdtext
deleted file mode 100644
index b76e4e5..0000000
--- a/content/api/internal-design-guide.mdtext
+++ /dev/null
@@ -1,52 +0,0 @@
-Title: LDAP Java API - Internal Design Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Internal Design Guide
-
-This guide expose the internal structure of the *Apache LDAP API* : how it is designed, achitectural choices made, implementation decisions, in general it offers an isnsight of the existing code.
-
-Although it's not exhaustive, it should allow a new commer interested in loking into teh code to have a better understanding on its design, and hopefully help her/him to jump in and add new features/fix bugs.
-
-Note that is a on-going effort, so please don't jump to conclusion when you find a 'TODO' or some erros : you can help adding the missing pieces, or fix the current content.
-
-Keep in mind that it's a 10+ years effort, and obviously some parts of the code might be aging...
-
-Thanks !
-
-Here is the content :
-
-* [1 - Introduction](internal-design-guide/1-introduction.html)
-* [2 - General structure](internal-design-guide/2-general-structure.html)
-* [3 - Building](internal-design-guide/3-building.html)
-* [4 - ASN/1](internal-design-guide/4-asn1.html)
-* * [4.1 - ASN/1 TLV](internal-design-guide/4.1-asn1-tlv.html)
-* [5 - Network](internal-design-guide/5-network.html)
-* [6 - Encoding/Decoding](internal-design-guide/6-codec.html)
-* [7 - LDAP Messages](internal-design-guide/7-ldap-messages.html)
-* [8 - Schema](internal-design-guide/8-schema.html)
-* [9 - Dn](internal-design-guide/9-dn.html)
-* [10 - Entry](internal-design-guide/10-entry.html)
-* [11 - Filter](internal-design-guide/11-filter.html)
-* [12 - Cursor](internal-design-guide/12-cursor.html)
-* [13 - Controls](internal-design-guide/13-controls.html)
-* [14 - Extended Operations](internal-design-guide/14-extended-operations.html)
-* [15 - LDIF](internal-design-guide/15-ldif.html)
-* [16 - DSML](internal-design-guide/16-dsml.html)
-* [17 - OSGi](internal-design-guide/17-osgi.html)
-
-
diff --git a/content/api/internal-design-guide/1-introduction.mdtext b/content/api/internal-design-guide/1-introduction.mdtext
deleted file mode 100644
index f3e429a..0000000
--- a/content/api/internal-design-guide/1-introduction.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: 1 - Introduction
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 2-general-structure.html
-NavNextText: 2 - General structure
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - Introduction
-
-This Internal Design Guide teaches developers about the inner logic of the **LDAP API**. It can be useful to those interested in the project, giving them some clues about how it all works and its design, and also to those who want to extend the **LDAP API** by adding _Controls_, _Extended Operations_, or schema elements like _SyntaxCheckers_, _Comparators_, etc.
diff --git a/content/api/internal-design-guide/10-entry.mdtext b/content/api/internal-design-guide/10-entry.mdtext
deleted file mode 100644
index 899c3c1..0000000
--- a/content/api/internal-design-guide/10-entry.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 10 - Entry
-NavPrev: 9-dn.html
-NavPrevText: 9 - DN
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 11-filter.html
-NavNextText: 11 - Filter
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 10 - Entry
-
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/11-filter.mdtext b/content/api/internal-design-guide/11-filter.mdtext
deleted file mode 100644
index 5976bcc..0000000
--- a/content/api/internal-design-guide/11-filter.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 11 - Filter
-NavPrev: 10-entry.html
-NavPrevText: 10 - Entry
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 12-cursor.html
-NavNextText: 12 - Cursor
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 11 - Filter
-
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/12-cursor.mdtext b/content/api/internal-design-guide/12-cursor.mdtext
deleted file mode 100644
index 99516d7..0000000
--- a/content/api/internal-design-guide/12-cursor.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 12 - Cursor
-NavPrev: 11-filter.html
-NavPrevText: 11 - Filter
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 13-controls.html
-NavNextText: 13 - Controls
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 12 - Cursor
-
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/13-controls.mdtext b/content/api/internal-design-guide/13-controls.mdtext
deleted file mode 100644
index 1941bf3..0000000
--- a/content/api/internal-design-guide/13-controls.mdtext
+++ /dev/null
@@ -1,500 +0,0 @@
-Title: 13 - Controls
-NavPrev: 12-cursor.html
-NavPrevText: 12 - Cursor
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 14-extended-operations.html
-NavNextText: 14 - Extended Operations
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 13 - Controls
-
-
-Controls are extension to the protocol. They are added in messages, and can contain extra information. A **Control** contains :
-
-* an **OID**, unique to this **Control**, as an identifier
-* a **Criticality** flag, which tells if the control can be ignored or not
-* a value, which might be **BER** encoded
-
-We have 20 **Control**s declared in the **LDAP API**, and we can add more.
-
-## Implementation
-
-Here is the **Control** classes and interfaces hierarchy :
-
-![Control Hierarchy](images/controls.png)
-
-As we can see, each _Impl_ class is coupled with a _Decorator_ class, used to process teh encoding and decoding of a **Control**
-
-Keep in mind that **Control**s have to be sent within a message, thus be encoded or decoded when the response come back.
-
-## Package/module
-
-We have two flavors of **Control**s, standard and 'extra'. Standard **Control**s are those supported by all he servers, extras are oly supported by a few servers. This is an arbitrary decision, we could have put all of them at teh same place.
-
-The list of standard **Control**s is :
-
-* _Cascade_
-* _EntryChange_
-* _ManageDsaIT_
-* _PagedResults_
-* _PersistentSearch_
-* _ProxiedAuthz_
-* _SortRequest_
-* _SortResponse_
-* _Subentries_
-
-The list of extra **Control**s is :
-
-* _AdDirSync_
-* _AdPolicyHints_
-* _AdShowDeleted_
-* _ChangeNotifications_
-* _PermissiveModify_
-* _PasswordPolicy_
-* _SyncDoneValue_
-* _SyncRequestValue_
-* _SyncStateValue_
-* _VirtualListViewRequest_
-* _VirtualListViewResponse_
-
-The standard **Control**s are described in the _ldap/model_ module (for the classes and interfaces) and in the _ldap/codec/core_ module (for the _Decorator_ and the decoding classes), in the _org.apache.directory.api.ldap.model.message.controls_ package.
-
-The extra **Control**s are described in the _ldap/extras/codec_ and _ldap/extras/codec-api modules (the first module contains the _classes_ and _interfaces_, the second module contains the _Decorator_s and all the decoder classes.) , in the _org.apache.directory.api.ldap.extras.controls.XXX_ packages (one sub-package per control) and in the _org.apache.directory.api.ldap.codec.controls.XXX_ package.
-
-Any new **Control** is likely to be declared as an extra **Control**.
-
-## Creating a new Control
-
-The **Control** creation follows a few rules :
-
-* It has to have a unique **OID** (this is generally the case, for **Control**s defined in RFCs)
-* It has an _Interface_, a _Decorator_ and an implementation
-* It must be declared
-
-Let's see how it all works, using an example. We will add the **Transaction Specification Control**, defined in [RFC 5805(https://tools.ietf.org/html/rfc5805)], paragraphe 2.2 :
-
- :::Text
- 2.2. Transaction Specification Control
-
- A Transaction Specification Control is an LDAPControl where the
- controlType is 1.3.6.1.1.21.2, the criticality is TRUE, and the
- controlValue is a transaction identifier. The control is appropriate
- for update requests including Add, Delete, Modify, and ModifyDN
- (Rename) requests [RFC4511], as well as the Password Modify requests
- [RFC3062].
-
- As discussed in Section 4, the Transaction Specification control can
- be used in conjunction with request controls appropriate for the
- update request.
-
-The _Interface_ will just expose the _Transaction Identifier_, and store the **Control** **OID** :
-
- :::Java
- package org.apache.directory.api.ldap.extras.controls.transaction;
-
- import org.apache.directory.api.ldap.model.message.Control;
-
- /**
- * The Transaction Specification control. It's defined in RFC 5805.
- * This control is sent with every update once a transaction is started.
- * It contains the Transaction ID.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public interface TransactionSpecification
- {
- /** The Transaction Specification control OID */
- String OID = "1.3.6.1.1.21.2";
-
- /**
- * @return The transaction identifier
- */
- byte[] getIdentifier();
-
-
- /**
- * Set the transaction ID
- * @param The transaction identifier, an opaque byte array
- */
- void setIdentifier( byte[] identifier );
- }
-
-We now need an implementation for this **Control**. It really just a matter of having an instanciable object. Note that this class exteds the _AbstractControl_ class.
-
-Here it is :
-
- :::Java
- package org.apache.directory.api.ldap.extras.controls.transaction;
-
- import org.apache.directory.api.ldap.model.message.controls.AbstractControl;
- import org.apache.directory.api.util.Strings;
-
- /**
- * The Transaction Specification control. It's defined in RFC 5805.
- * This control is sent with every update once a transaction is started.
- * It contains the Transaction ID.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class TransactionSpecificationImpl extends AbstractControl implements TransactionSpecification
- {
- /** The Transaction Specification identifier */
- private byte[] identifier;
-
-
- /**
- * Default constructor
- */
- public TransactionSpecificationImpl()
- {
- super( OID );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public byte[] getIdentifier()
- {
- return identifier;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setIdentifier( byte[] identifier )
- {
- // Copy the byte[]
- if ( identifier != null )
- {
- this.identifier = new byte[identifier.length];
- System.arraycopy( identifier, 0, this.identifier, 0, identifier.length );
- }
- }
-
-
- /**
- * @see Object#toString()
- */
- @Override
- public String toString()
- {
- if ( identifier != null )
- {
- return "Transaction specification ID=null";
- }
- else
- {
- return "Transaction specification ID=" + Strings.dumpBytes( identifier );
- }
- }
- }
-
-Nothing much to say, except that we have a default constructor that use the **Control**'s **OID** and a _toString()_ method, for convenience. The _Identifier_ is printed in hex format.
-
-That's it for the two base _class_ and _interface_, we now have to deal with encoding and decoding.
-
-
-### Encoding & Decoding
-
-Encoding the **Control** is done by the **Decorator**. This class implements the _Asn1Object_ which defines the method _encode()_. Let's see how it works...
-
-In order to encode the value we need to know its length, this is why we also have to implement the _computeLegth()_ method. In our case, it's superflouous, as the length is known : it's the _identifier_'s length.
-Decoidng is quitre trivial : as we only need to decode the **Control** value, and as it's an opaque _byte[]_, we just need to copy this value in the instance.
-
-In any case, we don't encode the whole **Control**, we just encode it's value : the **Control** itself is encode by the **LdapMessage**.
-
-Here is the _Decorator_ code.
-
- :::Java
- package org.apache.directory.api.ldap.extras.controls.transaction;
-
- import java.nio.ByteBuffer;
-
- import org.apache.directory.api.asn1.Asn1Object;
- import org.apache.directory.api.asn1.DecoderException;
- import org.apache.directory.api.asn1.EncoderException;
- import org.apache.directory.api.ldap.codec.api.ControlDecorator;
- import org.apache.directory.api.ldap.codec.api.LdapApiService;
-
- /**
- * TransactionSpecification decorator.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class TransactionSpecificationDecorator extends ControlDecorator<TransactionSpecification> implements TransactionSpecification
- {
- /**
- * Create a new instance of TransactionSpecificationDecorator
- *
- * @param codec The LDAP Service to use
- * @param decoratedControl The control to decorate
- */
- public TransactionSpecificationDecorator( LdapApiService codec, TransactionSpecification decoratedControl )
- {
- super( codec, decoratedControl );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Asn1Object decode( byte[] controlBytes ) throws DecoderException
- {
- // Nothing to decode, the byte array is copied as is in identifier
- setIdentifier( controlBytes );
-
- return this;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int computeLength()
- {
- byte[] identifier = getDecorated().getIdentifier();
-
- if ( identifier != null )
- {
- return identifier.length;
- }
- else
- {
- return -1;
- }
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
- {
- byte[] identifier = getDecorated().getIdentifier();
-
- if ( identifier != null )
- {
- ByteBuffer encoded = ByteBuffer.allocate( identifier.length );
-
- encoded.put( identifier );
-
- return encoded;
- }
- else
- {
- return ByteBuffer.allocate( 0 );
- }
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public byte[] getIdentifier()
- {
- return getDecorated().getIdentifier();
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setIdentifier( byte[] identifier )
- {
- getDecorated().setIdentifier( identifier );
- }
- }
-
-### The Factory
-
-We also need a _Factory_ class that is used to register the **Control**. This class simply expose a constructor for the **Control**. It's code is pretty trival, there is nothing specific to the added **Control**.
-
-Side note : as this class is ony invoked at startup, we could use reflection instead of having one _Factory_ per **Control**...
-
- :::Java
- package org.apache.directory.api.ldap.extras.controls.transaction;
-
-
- import org.apache.directory.api.ldap.codec.api.CodecControl;
- import org.apache.directory.api.ldap.codec.api.ControlFactory;
- import org.apache.directory.api.ldap.codec.api.LdapApiService;
-
-
- /**
- * A codec {@link ControlFactory} implementation for {@link TransactionSpecification} controls.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class TransactionSpecificationFactory implements ControlFactory<TransactionSpecification>
- {
- /** The LDAP codec responsible for encoding and decoding Cascade Controls */
- private LdapApiService codec;
-
-
- /**
- * Creates a new instance of TransactionSpecificationFactory.
- *
- * @param codec The LDAP codec
- */
- public TransactionSpecificationFactory( LdapApiService codec )
- {
- this.codec = codec;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getOid()
- {
- return TransactionSpecification.OID;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public CodecControl<TransactionSpecification> newCodecControl()
- {
- return new TransactionSpecificationDecorator( codec, new TransactionSpecificationImpl() );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public CodecControl<TransactionSpecification> newCodecControl( TransactionSpecification control )
- {
- return new TransactionSpecificationDecorator( codec, control );
- }
- }
-
-
-## A more complex Control
-
-We just shown a **Control** which was easy to encode or decode. Most of the time, the **Control**'s value is itself an **ASN/1** **BER** encoded value, and we need more classes to be able to process the decoding. Let use another **Control** as a sample :
-
-
-TODO
-
-
-## Adding a Control to the API
-
-Once we have written the **Control** classes and interfaces, we need to declare it so that the **LDAP API** can use it.
-
-The thing is that the **LDAP API** is **OSGi** compliant, so we need to expose the **Control**s and we also have to activate them.
-
-The _ExtrasBundleActivator_ class (in the _ldap/extras/codec_ module) has to be modified to register and unregister the added **Control** :
-
- :::Java
-
- ...
- import org.apache.directory.api.ldap.extras.controls.changeNotifications.TransactionSpecification;
- ...
-
- /**
- * A BundleActivator for the ldap codec extras extension: extra ApacheDS and
- * Apache Directory Studio specific controls and extended operations.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class ExtrasBundleActivator implements BundleActivator
- {
- ....
- /**
- * Registers all the extras controls present in this control pack.
- *
- * @param codec The codec service.
- */
- private void registerExtrasControls( LdapApiService codec )
- {
- ControlFactory<AdDirSync> adDirSyncFactory = new AdDirSyncFactory( codec );
- codec.registerControl( adDirSyncFactory );
- ...
-
- ControlFactory<TransactionSpecification> TransactionSpecificationFactory = new TransactionSpecificationFactory( codec );
- codec.registerControl( TransactionSpecification );
- }
-
- ...
-
- private void unregisterExtrasControls( LdapApiService codec )
- {
- codec.unregisterControl( AdDirSync.OID );
- codec.unregisterControl( AdShowDeleted.OID );
- ...
- codec.unregisterControl( TransactionSpecification.OID );
- }
-
- ....
-
-Here we added the _TransactionSpecification_ **Control** at the end of thse two methods, and added the associated _import_.
-
-Last, not least, we need to update the _loadStockControls_ method in the _CodecFactoryUtil_ class (in _ldap/codec/standalone_ module) :
-
- :::Java
- ...
- import org.apache.directory.api.ldap.extras.controls.changeNotifications.TransactionSpecification;
- ...
-
- /**
- * A utility class for adding Codec and extended operation factories.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public final class CodecFactoryUtil
- {
- ....
- /**
- * Loads the Controls implement out of the box in the codec.
- *
- * @param controlFactories The Control factories to use
- * @param apiService The LDAP Service instance to use
- */
- public static void loadStockControls( Map<String, ControlFactory<?>> controlFactories, LdapApiService apiService )
- {
- // Standard controls
- ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService );
- controlFactories.put( cascadeFactory.getOid(), cascadeFactory );
- LOG.info( "Registered pre-bundled control factory: {}", cascadeFactory.getOid() );
-
- ...
- ControlFactory<TransactionSpecification> transactionSpecificationFactory =
- new TransactionSpecificationFactory( apiService );
- controlFactories.put( transactionSpecificationFactory.getOid(), transactionSpecificationFactory );
- LOG.info( "Registered pre-bundled control factory: {}", transactionSpecificationFactory.getOid() );
- }
-
- ...
- }
-
-
-We are done ! Note that there is nothing to change in the _MANIFEST.MF_ file, as the packages are already exported.
diff --git a/content/api/internal-design-guide/14-extended-operations.mdtext b/content/api/internal-design-guide/14-extended-operations.mdtext
deleted file mode 100644
index f3956cf..0000000
--- a/content/api/internal-design-guide/14-extended-operations.mdtext
+++ /dev/null
@@ -1,1148 +0,0 @@
-Title: 14 - Extended Operations
-NavPrev: 13-controls.html
-NavPrevText: 13 - Controls
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 15-ldif.html
-NavNextText: 15 - LDIF
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 14 - Extended Operations
-
-**Extended Operation** is a **LDAP** message which may content a payload. It is generally sent by the clinet, but the server can send a _ExtendedResponse_ as a response to any operation : the **Notice of Disconnection**.
-
-Here is the syntax for the extended Operation :
-
- :::Text
- ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
- requestName [0] LDAPOID,
- requestValue [1] OCTET STRING OPTIONAL }
-
- ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
- COMPONENTS OF LDAPResult,
- responseName [10] LDAPOID OPTIONAL,
- responseValue [11] OCTET STRING OPTIONAL }
-
-(the payload is the _requestValue_ or _responseValue_ part, which may be **BER** encoded).
-
-This message is routinely decoded as is by the standard **LDAP** message decoder, but the payload has to be decoded on its own.
-
-## Supported extended operations
-
-Currently, the **LDAP API** support the following extended operations :
-
-* _Cancel_ request and response ([RFC 3909](https://tools.ietf.org/html/rfc3909))
-* _CertGenerationRequest_ request and response, an **ApacheDS** specific operation in charge of generating a certificate
-* _GracefulDisconnect_ response, an **ApacheDS** specific operation used when the server is shutdown properly
-* _GracefulShutdown_ request and response, an **ApacheDS** specific operation used to shutdown the remote server properly
-* _PasswordModify_ request and response ([RFC 3062](https://tools.ietf.org/html/rfc3062))
-* _StartTls_ request and response ([RFC 4511](https://tools.ietf.org/html/rfc4511))
-* _StoredProcedure_ request and response, an **ApacheDS** specific operation used to execute a stored procedure on the server
-* _WhoAmI_ request and response ([RFC 4532](https://tools.ietf.org/html/rfc4532))
-
-
-## Encoding and decoding
-
-When the _requestValue_ part is present, it has to be encoded (when the client sends the request to the srrver) or decoded ( when the client receives the response from the server).
-
-### Decoding a request/response
-
-The payload is decoded on the fly when the request/response is processed during the _extendedRequest_/_extendedResponse_ is being decoded. The _StoreExtendedRequestValue_/_StoreExtendedResponseValue_ will store the _byte[]_ - if any - and depending on the operation, the specific request/response will decode the value. Here is the _action_ method for the _StoreExtendedRequestValue_ class :
-
-
- :::Java
- public void action( LdapMessageContainer<ExtendedRequestDecorator<?>> container ) throws DecoderException
- {
- // We can allocate the ExtendedRequest Object
- ExtendedRequestDecorator<?> extendedRequest = container.getMessage();
-
- // Get the Value and store it in the ExtendedRequest
- TLV tlv = container.getCurrentTLV();
-
- // We have to handle the special case of a 0 length matched
- // value
- if ( tlv.getLength() == 0 )
- {
- extendedRequest.setRequestValue( Strings.EMPTY_BYTES );
- }
- else
- {
- extendedRequest.setRequestValue( tlv.getValue().getData() );
- }
-
-Each implementaion may have a _setRequestValue_/_setResponseValue_ methd, overloading the parentclass. In this case, the value is decoded by the method.
-
-Here is an example of _setRequestValue_ implementation (for the _PasswordModifyRequest_ class) :
-
- :::Java
- public void setRequestValue( byte[] requestValue )
- {
- PasswordModifyRequestDecoder decoder = new PasswordModifyRequestDecoder();
-
- try
- {
- if ( requestValue != null )
- {
- passwordModifyRequest = decoder.decode( requestValue );
-
- this.requestValue = new byte[requestValue.length];
- System.arraycopy( requestValue, 0, this.requestValue, 0, requestValue.length );
- }
- else
- {
- this.requestValue = null;
- }
- }
- catch ( DecoderException e )
- {
- LOG.error( I18n.err( I18n.ERR_04165 ), e );
- throw new RuntimeException( e );
- }
- }
-
-As we can see, the decoder is invoked if the _requestValue_ bytes is not null. It instanciate a _PasswordModifyRequest_.
-
-If there is no payload, the parent's method is invoked (which basically does nothing).
-
-Here is a schema showing which request/response operations as a payload that needs to be decoded :
-
-![Extended Operations Payload](images/extended-request-decorator.png)
-
-
-
-### Encoding a request/response
-
-Encoding is done through a _Decorator_. Each extended operation has a dedicated _Decorator_, which may have a specific encoding function. Again, as we only encode the payload, if this payload is absent, there is nothing to encode. Not all the extended operations have a payload.
-
-If there is a payload to encode, this is done by calling the _getRequestValue()_/_getResponseValue()_ method in the decorator. Here is an example :
-
- :::Java
- public byte[] getRequestValue()
- {
- if ( requestValue == null )
- {
- try
- {
- requestValue = encodeInternal().array();
- }
- catch ( EncoderException e )
- {
- LOG.error( I18n.err( I18n.ERR_04167 ), e );
- throw new RuntimeException( e );
- }
- }
-
- return requestValue;
- }
-
-
-The _encodeInternal_ method is in charge of encoding teh paylod.
-
-If the _getRequestValue_/getResponseValue_ method is absent, that leans there is nothing to encode. The inherited method will be executed, which returns null.
-
-Internally, we compute the length of the needed **PDU** accordingly to the data we have to encode, allocate a _ByteBuffer_ to hold the encoded data, and store teh encoded data into it :
-
- :::Java
- /**
- * Encodes the PasswordModifyRequest extended operation.
- *
- * @return A ByteBuffer that contains the encoded PDU
- * @throws org.apache.directory.api.asn1.EncoderException If anything goes wrong.
- */
- /* No qualifier */ByteBuffer encodeInternal() throws EncoderException
- {
- ByteBuffer bb = ByteBuffer.allocate( computeLengthInternal() );
-
- bb.put( UniversalTag.SEQUENCE.getValue() );
- bb.put( TLV.getBytes( requestLength ) );
-
- if ( passwordModifyRequest.getUserIdentity() != null )
- {
- byte[] userIdentity = passwordModifyRequest.getUserIdentity();
- bb.put( ( byte ) PasswordModifyRequestConstants.USER_IDENTITY_TAG );
- bb.put( TLV.getBytes( userIdentity.length ) );
- bb.put( userIdentity );
- }
-
- if ( passwordModifyRequest.getOldPassword() != null )
- {
- byte[] oldPassword = passwordModifyRequest.getOldPassword();
- bb.put( ( byte ) PasswordModifyRequestConstants.OLD_PASSWORD_TAG );
- bb.put( TLV.getBytes( oldPassword.length ) );
- bb.put( oldPassword );
- }
-
- if ( passwordModifyRequest.getNewPassword() != null )
- {
- byte[] newPassword = passwordModifyRequest.getNewPassword();
- bb.put( ( byte ) PasswordModifyRequestConstants.NEW_PASSWORD_TAG );
- bb.put( TLV.getBytes( newPassword.length ) );
- bb.put( newPassword );
- }
-
- return bb;
- }
-
-
-and the _computeLength_ method is :
-
-
- :::Java
- /**
- * Compute the PasswordModifyRequest extended operation length
- * <pre>
- * 0x30 L1
- * |
- * [+-- 0x80 L2 userIdentity]
- * [+-- 0x81 L3 oldPassword]
- * [+-- 0x82 L4 newPassword]
- * </pre>
- */
- /* No qualifier */int computeLengthInternal()
- {
- requestLength = 0;
-
- if ( passwordModifyRequest.getUserIdentity() != null )
- {
- int len = passwordModifyRequest.getUserIdentity().length;
- requestLength = 1 + TLV.getNbBytes( len ) + len;
- }
-
- if ( passwordModifyRequest.getOldPassword() != null )
- {
- int len = passwordModifyRequest.getOldPassword().length;
- requestLength += 1 + TLV.getNbBytes( len ) + len;
- }
-
- if ( passwordModifyRequest.getNewPassword() != null )
- {
- int len = passwordModifyRequest.getNewPassword().length;
- requestLength += 1 + TLV.getNbBytes( len ) + len;
- }
-
- return 1 + TLV.getNbBytes( requestLength ) + requestLength;
- }
-
-
-## Adding a new Extended operation
-
-We will show how to add a new extended operation in the **LDAP API**. The added operation is the _startTransaction_ operation, described in [RFC 5805](https://tools.ietf.org/html/rfc5805).
-
-The _startTransactionRequest_ has a _requestName_ containing **1.3.6.1.1.21.1**, and no _requestValue_.
-The _startTransactionResponse_ has no _responseName_ and a _responseValue_ containing an opaque transaction identifier (ie, it does not need to be decoced).
-
-We first need to declare an interface and implementation for each of those two operations. Those four elements are declared in the _<coec-api>_ module (in _/ldap/extras/codec-api_), and in the _org.apache.directory.api.ldap.extras.extended.startTransaction_ package, beside the other extended operations :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.startTransaction;
-
-
- import org.apache.directory.api.ldap.model.message.ExtendedRequest;
-
-
- /**
- * The TransactionRequest interface. This is for the RFC 5805 Start Transaction Request,
- * which grammar is :
- * <pre>
- * ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
- * requestName [0] LDAPOID,
- * requestValue [1] OCTET STRING OPTIONAL }
- * </pre>
- *
- * where 'requestName' is 1.3.6.1.1.21.1 and requestValue is absent.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public interface StartTransactionRequest extends ExtendedRequest
- {
- /** The OID for the Transaction extended operation request. */
- String EXTENSION_OID = "1.3.6.1.1.21.1";
- }
-
-The request interface defines noting but the _OID_, as we don't have any payload.
-
-Here is the implementation :
-
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.startTransaction;
-
-
- import org.apache.directory.api.ldap.model.message.AbstractExtendedRequest;
-
-
- /**
- * Implement the extended Start Transaction Request as described in RFC 5805.
- *
- * It's grammar is :
- *
- * <pre>
- * ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
- * requestName [0] LDAPOID,
- * requestValue [1] OCTET STRING OPTIONAL }
- * </pre>
- *
- * where 'requestName' is 1.3.6.1.1.21.1 and requestValue is absent.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class StartTransactionRequestImpl extends AbstractExtendedRequest implements StartTransactionRequest
- {
- /**
- * Creates a new instance of StartTransactionRequestImpl.
- *
- * @param messageId the message id
- */
- public StartTransactionRequestImpl( int messageId )
- {
- super( messageId );
- setRequestName( EXTENSION_OID );
- }
-
-
- /**
- * Creates a new instance of StartTransactionRequestImpl.
- */
- public StartTransactionRequestImpl()
- {
- setRequestName( EXTENSION_OID );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionResponse getResultResponse()
- {
- if ( getResponse() == null )
- {
- setResponse( new StartTransactionResponseImpl() );
- }
-
- return ( StartTransactionResponse ) getResponse();
- }
- }
-
-We just implement the method that returns the associated response.
-
-Now for the response, which has an opaque value, here is the interface :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.startTransaction;
-
-
- import org.apache.directory.api.ldap.model.message.ExtendedResponse;
-
-
- /**
- * The interface for Start Transaction Extended Response. It's described in RFC 5805 :
- *
- * <pre>
- * ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
- * COMPONENTS OF LDAPResult,
- * responseName [10] LDAPOID OPTIONAL,
- * responseValue [11] OCTET STRING OPTIONAL }
- * </pre>
- *
- * where the responseName is not present, and the responseValue contain
- * a transaction identifier when the result is SUCCESS.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public interface StartTransactionResponse extends ExtendedResponse
- {
- /** The OID for the Start Transaction extended operation response. */
- String EXTENSION_OID = StartTransactionRequest.EXTENSION_OID;
-
-
- /**
- * @return The transaction ID if success
- */
- byte[] getTransactionId();
- }
-
-As the response value is opaque, we return it as a _byte[]_.
-
-Here is the implementation :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.startTransaction;
-
-
- import org.apache.directory.api.i18n.I18n;
- import org.apache.directory.api.ldap.model.message.ExtendedResponseImpl;
- import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
- import org.apache.directory.api.util.Strings;
-
-
- /**
- * The interface for Start Transaction Extended Response. It's described in RFC 5805 :
- *
- * <pre>
- * ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
- * COMPONENTS OF LDAPResult,
- * responseName [10] LDAPOID OPTIONAL,
- * responseValue [11] OCTET STRING OPTIONAL }
- * </pre>
- *
- * where the responseName is not present, and the responseValue contain
- * a transaction identifier when the result is SUCCESS.
- *
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class StartTransactionResponseImpl extends ExtendedResponseImpl implements StartTransactionResponse
- {
- /** The transaction ID if the request was successful */
- private byte[] transactionId;
-
- /**
- * Create a new StartTransactionResponseImpl object
- *
- * @param messageId The messageId
- * @param rcode the result code
- * @param transactionId The transaction ID
- */
- public StartTransactionResponseImpl( int messageId, ResultCodeEnum resultCode, byte[] transactionId )
- {
- super( messageId );
-
- switch ( resultCode )
- {
- case SUCCESS:
- this.transactionId = Strings.copy( transactionId );
- // pass through ...
- case CANCELED:
- case CANNOT_CANCEL:
- case NO_SUCH_OPERATION:
- case TOO_LATE:
- break;
-
- default:
- throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.SUCCESS,
- ResultCodeEnum.OPERATIONS_ERROR, ResultCodeEnum.INSUFFICIENT_ACCESS_RIGHTS ) );
- }
-
- super.getLdapResult().setMatchedDn( null );
- super.getLdapResult().setResultCode( resultCode );
- }
-
-
- /**
- * Create a new StartTransactionResponseImpl instance
- *
- * @param messageId The request's messageId
- * @param transactionId The transaction ID
- */
- public StartTransactionResponseImpl( int messageId, byte[] transactionId )
- {
- super( messageId );
- super.getLdapResult().setMatchedDn( null );
- super.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
- this.transactionId = Strings.copy( transactionId );
- }
-
-
- /**
- * Create a new StartTransactionResponseImpl instance
- *
- * @param transactionId The transaction ID
- */
- public StartTransactionResponseImpl( byte[] transactionId )
- {
- super( StartTransactionRequest.EXTENSION_OID );
- super.getLdapResult().setMatchedDn( null );
- super.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
- this.transactionId = Strings.copy( transactionId );
- }
-
-
- /**
- * Create a new StartTransactionResponseImpl instance
- */
- public StartTransactionResponseImpl()
- {
- super( StartTransactionRequest.EXTENSION_OID );
- super.getLdapResult().setMatchedDn( null );
- super.getLdapResult().setResultCode( ResultCodeEnum.UNWILLING_TO_PERFORM );
- }
-
-
- /**
- * Gets the OID uniquely identifying this extended response (a.k.a. its
- * name). It's a null value for the Cancel response
- *
- * @return the OID of the extended response type.
- */
- @Override
- public String getResponseName()
- {
- return "";
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode()
- {
- int hash = 37;
-
- if ( transactionId != null )
- {
- for ( byte b : transactionId )
- {
- hash += hash * 17 + b;
- }
- }
-
- hash = hash * 17 + getClass().getName().hashCode();
-
- return hash;
- }
-
-
- /**
- * @see Object#equals(Object)
- */
- @Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
- return true;
- }
-
- if ( !( obj instanceof StartTransactionResponseImpl ) )
- {
- return false;
- }
-
- return Arrays.equals( transactionId, ( ( StartTransactionResponseImpl ) obj ).transactionId );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public byte[] getTransactionId()
- {
- return Strings.copy( transactionId );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public void setTransactionId( byte[] transactionId )
- {
- this.transactionId = Strings.copy( transactionId );
- }
- }
-
-There is nothing special in this implementation, we just make it so the _transactionId_ bytes are copied to be sure they can't be altered from the outside. Basically, the payload is transfered pristine into the instance.
-
-Now that we have the interfaces and implementations, we need to add the decorators and the factory. The factory is used to initialize the **API** with the list of available extended operaiton at startup, as a mean to make the **API** extensible. It creates request and response, and the associated decorator.
-
-Here is the factory code, declared in the _<extra-codec>_ module :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
-
-
- import org.apache.directory.api.asn1.DecoderException;
- import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
- import org.apache.directory.api.ldap.codec.api.LdapApiService;
- import org.apache.directory.api.ldap.extras.extended.cancel.CancelRequest;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequestImpl;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponseImpl;
- import org.apache.directory.api.ldap.model.message.ExtendedRequest;
- import org.apache.directory.api.ldap.model.message.ExtendedResponse;
-
-
- /**
- * An {@link ExtendedOperationFactory} for creating cancel extended request response
- * pairs.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class StartTransactionFactory implements ExtendedOperationFactory
- {
- private LdapApiService codec;
-
-
- /**
- * Creates a new instance of CancelFactory.
- *
- * @param codec The codec for this factory.
- */
- public StartTransactionFactory( LdapApiService codec )
- {
- this.codec = codec;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getOid()
- {
- return CancelRequest.EXTENSION_OID;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionResponse newResponse( byte[] encodedValue ) throws DecoderException
- {
- StartTransactionResponseDecorator response = new StartTransactionResponseDecorator( codec, new StartTransactionResponseImpl() );
- response.setResponseValue( encodedValue );
-
- return response;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionRequest newRequest( byte[] value )
- {
- return new StartTransactionRequestDecorator( codec, new StartTransactionRequestImpl() );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionRequestDecorator decorate( ExtendedRequest modelRequest )
- {
- if ( modelRequest instanceof StartTransactionRequestDecorator )
- {
- return ( StartTransactionRequestDecorator ) modelRequest;
- }
-
- return new StartTransactionRequestDecorator( codec, null );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionResponseDecorator decorate( ExtendedResponse decoratedMessage )
- {
- if ( decoratedMessage instanceof StartTransactionResponseDecorator )
- {
- return ( StartTransactionResponseDecorator ) decoratedMessage;
- }
-
- return new StartTransactionResponseDecorator( codec, null );
- }
- }
-
-
-The decorator are very simple : they just encapsulate the requets or response instance. It's because encoding or decoding is non existant for this operation. Decorators are declared in the _<extra-codec>_ module.
-
-Here is teh code for both those decorators :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
-
-
- import org.apache.directory.api.ldap.codec.api.ExtendedRequestDecorator;
- import org.apache.directory.api.ldap.codec.api.LdapApiService;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
-
-
- /**
- * A Decorator for startTransaction request.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class StartTransactionRequestDecorator extends ExtendedRequestDecorator<StartTransactionRequest> implements
- StartTransactionRequest
- {
- /** The internal startTransaction request */
- private StartTransactionRequest startTransactionRequest;
-
-
- /**
- * Creates a new instance of StartTransactionRequestDecorator.
- *
- * @param codec The LDAP Service to use
- * @param decoratedMessage The canceled request
- */
- public StartTransactionRequestDecorator( LdapApiService codec, StartTransactionRequest decoratedMessage )
- {
- super( codec, decoratedMessage );
- startTransactionRequest = decoratedMessage;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public StartTransactionResponse getResultResponse()
- {
- return ( StartTransactionResponse ) startTransactionRequest.getResultResponse();
- }
- }
-
-
-and for the response :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
-
-
- import org.apache.directory.api.ldap.codec.api.ExtendedResponseDecorator;
- import org.apache.directory.api.ldap.codec.api.LdapApiService;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
- import org.apache.directory.api.util.Strings;
-
-
- /**
- * A Decorator for CancelResponses.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class StartTransactionResponseDecorator extends ExtendedResponseDecorator<StartTransactionResponse> implements StartTransactionResponse
- {
- /** The startTransaction response */
- private StartTransactionResponse startTransactionResponse;
-
- /**
- * Creates a new instance of CancelResponseDecorator.
- *
- * @param codec The LDAP service instance
- * @param decoratedMessage The decorated message
- */
- public StartTransactionResponseDecorator( LdapApiService codec, StartTransactionResponse decoratedMessage )
- {
- super( codec, decoratedMessage );
- startTransactionResponse = decoratedMessage;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setResponseValue( byte[] responseValue )
- {
- this.responseValue = Strings.copy( responseValue );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public byte[] getTransactionId()
- {
- return startTransactionResponse.getTransactionId();
- }
- }
-
-
-The last step is to declare the extended operation in the **LDAP API** initialization and **OSGi**. There are two places we have to declare the factory :
-
-* _CodecFactoryUtil_ class, in the _<ldap/codec/standalone>_ module
-* _ExtrasBundleActivator_ class, in the _<ldap/extras/codec>_ module
-
-
-Here is the added code in the _CodecFactoryUtil_ class :
-
- :::Java
- ...
- import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
- import org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction.StartTransactionFactory;
- ...
-
- /**
- * A utility class for adding Codec and extended operation factories.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public final class CodecFactoryUtil
- {
- ...
- public static void loadStockExtendedOperations(
- Map<String, ExtendedOperationFactory> extendendOperationsFactories, LdapApiService apiService )
- {
- ...
-
- StartTlsFactory startTlsFactory = new StartTlsFactory( apiService );
- extendendOperationsFactories.put( startTlsFactory.getOid(), startTlsFactory );
- LOG.info( "Registered pre-bundled extended operation factory: {}", startTlsFactory.getOid() );
-
- StartTransactionFactory startTransactionFactory = new StartTransactionFactory( apiService );
- extendendOperationsFactories.put( startTransactionFactory.getOid(), startTransactionFactory );
- LOG.info( "Registered pre-bundled extended operation factory: {}", startTransactionFactory.getOid() );
- ...
- }
- }
-
-We just need to instanciate the factory, and to add it to the map of supported extended operations.
-
-
-And the added code for the _ExtrasBundleActivator_ class :
-
- :::Java
- ...
- import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
- import org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction.StartTransactionFactory;
- ...
- import org.apache.directory.api.ldap.extras.extended.startTls.StartTlsRequest;
- import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
- ...
-
- /**
- * A BundleActivator for the ldap codec extras extension: extra ApacheDS and
- * Apache Directory Studio specific controls and extended operations.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class ExtrasBundleActivator implements BundleActivator
- {
- ...
- /**
- * Registers all the extras extended operations present in this control pack.
- *
- * @param codec The codec service.
- */
- private void registerExtrasExtendedOps( LdapApiService codec )
- {
- // --------------------------------------------------------------------
- // Register Extended Request Factories
- // --------------------------------------------------------------------
- ...
-
- StartTlsFactory startTlsFactory = new StartTlsFactory( codec );
- codec.registerExtendedRequest( startTlsFactory );
-
- StartTransactionFactory startTransactionFactory = new StartTransactionFactory( codec );
- codec.registerExtendedRequest( startTransactionFactory );
- ...
- }
-
-
- private void unregisterExtrasExtendedOps( LdapApiService codec )
- {
- ...
- codec.unregisterExtendedRequest( StartTlsRequest.EXTENSION_OID );
- codec.unregisterExtendedRequest( StartTransactionRequest.EXTENSION_OID );
- ...
- }
- }
-
-We also have to export the package for it to be visible when using **OSGi**. This is done by modifying some _pom.xml_ files.
-
-
-_<ldap/extras/codec>_ module _pom.xml_ file :
-
- :::XML
- ...
- <configuration>
- <manifestLocation>META-INF</manifestLocation>
- <instructions>
- <Bundle-SymbolicName>${project.groupId}.ldap.extras.codec</Bundle-SymbolicName>
- <Export-Package>
- {local-packages};version=${project.version};-noimport:=true
- </Export-Package>
- <Export-Package>
- ...
- org.apache.directory.api.ldap.extras.extended.ads_impl.startTls;version=${project.version};-noimport:=true,
- org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;version=${project.version};-noimport:=true,
- ...
- </Export-Package>
- <Import-Package>
- ...
- org.apache.directory.api.ldap.extras.extended.startTls;version=${project.version},
- org.apache.directory.api.ldap.extras.extended.startTransaction;version=${project.version},
- ...
- </Import-Package>
-
-
-_<ldap/extras/codec-api>_ module _pom.xml_ file :
-
- :::XML
- ...
- <configuration>
- <manifestLocation>META-INF</manifestLocation>
- <instructions>
- <Bundle-SymbolicName>${project.groupId}.ldap.extras.codec.api</Bundle-SymbolicName>
- <Export-Package>
- ...
- org.apache.directory.api.ldap.extras.extended.startTls;version=${project.version};-noimport:=true,
- org.apache.directory.api.ldap.extras.extended.startTransaction;version=${project.version};-noimport:=true,
- ...
- </Export-Package>
-
-# A more complex example
-
-Wealso have to add the _EndTransactionRequest_ and _endTransactionResponse_ extended opertions. We will focus on the response, which is more complex that the request.
-
-The _EndTransactionResponse_ value follows this ASN.1 description :
-
- :::Text
- txnEndRes ::= SEQUENCE {
- messageID MessageID OPTIONAL,
- -- msgid associated with non-success resultCode
- updatesControls SEQUENCE OF updateControl SEQUENCE {
- messageID MessageID,
- -- msgid associated with controls
- controls Controls
- } OPTIONAL
- }
-
-Here, [RFC 5805](https://tools.ietf.org/html/rfc5805) gives some information about the semantic of this grammar :
-
-* we can either have a message ID, if the transaction was a failure
-* or have a list of _UpdateControls_ structure if we have had a success, with some controls having to be returned
-* or we simply have nothing and then the full value is simply absent.
-
-_Controls_ is a list of _Control_ as defined in [RFC 4511](https://tools.ietf.org/html/rfc4511#section-4.1.11), with the following ASN.1 description :
-
- :::Text
- Controls ::= SEQUENCE OF control Control
-
- Control ::= SEQUENCE {
- controlType LDAPOID,
- criticality BOOLEAN DEFAULT FALSE,
- controlValue OCTET STRING OPTIONAL }
-
-So we may have many _updateControls_ and for each one of them, one to many _controls_. We will need to define a state machine to decode those two ASN/1 description.
-
-First, let's see what is the state machine for the _txnEndRes_ type and the _controls_ type :
-
-![Extended Operations state machine](images/EndTransactionResponse.png)
-
-
-The transitions from one step to the other is based on the BER encoded tag :
-
-* 0x30 for SEQUENCE
-* 0x04 for OCTET STRING
-* 0x01 for BOOLEAN
-* 0x02 for INTEGER
-
-Note that some deep knowledge on ASN.1 is required to encode or decode some element.
-
-Here, we will need two state machines to decode an _EndTransactionResponse_ message :
-
-* one for the response value
-* one for the embedded controls
-
-Hopefully, we can reuse the _LdapMessage_ _Control_ grammar (at least the logic)
-
-So we need to code the following interfaces and classes :
-
-* A container
-* A Factory
-* A Grammar (actually 2)
-* A list of states (StatesEnum)
-* A decorator
-* A decoder
-* An interface
-* An implementation
-
-The interface, implementation, factory, container and decoder are not really complex, and follow the same logic that what we shown in teh previous example.
-
-The list of states is just an _enum_ that describes all the states shown in the state machine exposed before :
-
-* Global SEQUENCE
-* MessageId
-* UpdateControls SEQUENCE
-* UpdateControl SEQUENCE
-* UpdateControl messageId
-* Controls
-* start and end states
-
-We can see we don't have any state associated with the _Control_ decoding : it's handled by another codec.
-
-Here is the _enum_ :
-
- :::Java
- package org.apache.directory.api.ldap.extras.extended.ads_impl.endTransaction;
-
-
- import org.apache.directory.api.asn1.ber.grammar.States;
-
-
- /**
- * This class store the EndTransactionResponse's grammar constants. It is also used
- * for debugging purposes.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public enum EndTransactionResponseStatesEnum implements States
- {
- /** The END_STATE */
- END_STATE,
-
- /** start state*/
- START_STATE,
-
- /** The initial SEQUENCE */
- END_TRANSACTION_SEQUENCE_STATE,
-
- /** The failed message ID */
- FAILED_MESSAGE_ID_STATE,
-
- /** The update controls SEQ */
- UPDATE_CONTROLS_SEQ_STATE,
-
- /** The update control SEQ */
- UPDATE_CONTROL_SEQ_STATE,
-
- /** THe control's message ID state */
- CONTROL_MESSAGE_ID_STATE,
-
- /** The control's state */
- CONTROLS_STATE,
-
- /** Last state */
- LAST_STATE;
-
-
- /**
- * Get the grammar name
- *
- * @return The grammar name
- */
- public String getGrammarName()
- {
- return "END_TRANSACTION_RESPONSE_GRAMMER";
- }
-
-
- /**
- * Get the string representing the state
- *
- * @param state The state number
- * @return The String representing the state
- */
- public String getState( int state )
- {
- return ( state == END_STATE.ordinal() ) ? "END_TRANSACTION_RESPONSE_GRAMMER" : name();
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isEndState()
- {
- return this == END_STATE;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public EndTransactionResponseStatesEnum getStartState()
- {
- return START_STATE;
- }
- }
-
-We can now define transitions between states, accordingly to the grammar semantic :
-
-|Initial state|Tag|Final state|action|
-|---|---|---|---|---|
-| START | SEQUENCE | END_TRANSACTION_SEQUENCE | Initialize the data structure holding the result |
-| END_TRANSACTION_SEQUENCE | INTEGER | FAILED_MESSAGE_ID | Store the failed message ID |
-| FAILED_MESSAGE_ID | none | END | The value has been fully decode, get out |
-| END_TRANSACTION_SEQUENCE | SEQUENCE | UPDATE_CONTROLS_SEQ | Create a list of _UpdateControls_, store it in the response |
-| UPDATE_CONTROLS_SEQ | SEQUENCE | UPDATE_CONTROL_SEQ | Create a _UpdateControls_ instance, store it in the list |
-| UPDATE_CONTROL_SEQ | INTEGER | CONTROL_MESSAGE_ID | Store the message ID in the _updateControls_ instance |
-| CONTROL_MESSAGE_ID | SEQUENCE | CONTROLS | Grab the full value, call teh Controls decoder, store the result in the _updateControls_ instance |
-| CONTROLS | SEQUENCE | UPDATE_CONTROL_SEQ | Create a _UpdateControls_ instance, store it in the list |
-| CONTROLS | none | END | The decoding is over, we can quit |
-
-Each of those transitions will have an associated action. They are added in a _Grammar_ class. A _GrammarTransition_ is created and takes 3 or 4 parameters :
-
-* An initial state ('from')
-* A final state ('to')
-* A tag
-* An optional action to execute
-
-Each state may have many transitions going to many different states, but each transition must use a different tag.
-
-Here is an example of transition :
-
- :::Java
- /**
- * Transition from Sequence to messageId
- *
- * txnEndReq ::= SEQUENCE {
- * messageID MessageID OPTIONAL,
- * -- msgid associated with non-success resultCode
- * ...
- *
- * Set the messageId into the EndTransactionResponse instance, if it's not SUCCESS.
- */
- super.transitions[EndTransactionResponseStatesEnum.END_TRANSACTION_SEQUENCE_STATE.ordinal()][UniversalTag.INTEGER.getValue()] =
- new GrammarTransition<EndTransactionResponseContainer>(
- EndTransactionResponseStatesEnum.END_TRANSACTION_SEQUENCE_STATE,
- EndTransactionResponseStatesEnum.FAILED_MESSAGE_ID_STATE,
- UniversalTag.INTEGER.getValue(),
- new GrammarAction<EndTransactionResponseContainer>( "Set EndTransactionResponse failed MessageID" )
- {
- public void action( EndTransactionResponseContainer container ) throws DecoderException
- {
- BerValue value = container.getCurrentTLV().getValue();
-
- try
- {
- int failedMessageId = IntegerDecoder.parse( value );
-
- if ( failedMessageId > 0 )
- {
- container.getEndTransactionResponse().setFailedMessageId( failedMessageId );
- }
-
- // We may have nothing left
- container.setGrammarEndAllowed( true );
- }
- catch ( IntegerDecoderException ide )
- {
- LOG.error( I18n
- .err( I18n.ERR_04490_BAD_END_TRANSACTION_COMMIT, Strings.dumpBytes( value.getData() ), ide.getMessage() ) );
-
- // This will generate a PROTOCOL_ERROR
- throw new DecoderException( ide.getMessage(), ide );
- }
- }
- } );
-
-In this example, we have a transition from a **END_TRANSACTION_SEQUENCE_STATE** state to a **FAILED_MESSAGE_ID** state, which is triggered by an **INTEGER** tag. The executed action is created immediately, but it could have been a separated class.
diff --git a/content/api/internal-design-guide/15-ldif.mdtext b/content/api/internal-design-guide/15-ldif.mdtext
deleted file mode 100644
index 5d114cd..0000000
--- a/content/api/internal-design-guide/15-ldif.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 15 - LDIF
-NavPrev: 14-extended-operations.html
-NavPrevText: 14 - Extended Operations
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 16-dsml.html
-NavNextText: 16 - DSML
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 15 - LDIF
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/16-dsml.mdtext b/content/api/internal-design-guide/16-dsml.mdtext
deleted file mode 100644
index 48bc5a1..0000000
--- a/content/api/internal-design-guide/16-dsml.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 16 - DSML
-NavPrev: 15-ldif.html
-NavPrevText: 15 - LDIF
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 17-osgi.html
-NavNextText: 17 - OSGi
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 16 - DSML
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/17-osgi.mdtext b/content/api/internal-design-guide/17-osgi.mdtext
deleted file mode 100644
index 2bdb9b4..0000000
--- a/content/api/internal-design-guide/17-osgi.mdtext
+++ /dev/null
@@ -1,38 +0,0 @@
-Title: 17 - OSGi
-NavPrev: 16-dsml.html
-NavPrevText: 16 - DSML
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 17 - OSGi
-
-The **LDAP API** can either be use as a standalone API, or in an **OSGi** environment.
-
-
-## Activators
-
-LdapProtocolCodecActivator
-### ExtrasBundleActivator
-
-This activator loads and initializes extras controls and extended operations :
-
-
-### DefaultActivator
-
-This is the base activator. It instanciates and loads the _DefaultLdapCodecService_ class, which loas the default controls and extended operations
\ No newline at end of file
diff --git a/content/api/internal-design-guide/2-general-structure.mdtext b/content/api/internal-design-guide/2-general-structure.mdtext
deleted file mode 100644
index df354a8..0000000
--- a/content/api/internal-design-guide/2-general-structure.mdtext
+++ /dev/null
@@ -1,70 +0,0 @@
-Title: 2 - General Structure
-NavPrev: 1-introduction.html
-NavPrevText: 1 - Introduction
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 3-building.html
-NavNextText: 3 - Building
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - General Structure
-
-The **Apache LDAP API** is split into many modules. Here is their hierarchy :
-
-![Modules](images/ldap-api-modules.png)
-
-* The **all** module is just a packaging module, gathering all the other modules in one single jar to simplify the work for those who want to use the API. One can import each module speparately, or the **all** module only. Note that it does not include the tests and integration modules (**integ**, **integ-osgi** and **distribution**)
-
-* The **asn1** module contains the code needed to handle *ASN/1* encoding/decoding.
-
-* The **distribution** module just create the packages
-
-* The **dsml** module covers *DSML* features
-
-* The **i18n** module contains all the messages, in various languages (english, french and german at the moment)
-
-* The **integ** module is for integration tests, covering many of the existing modules
-
-* The **integ-osgi** module covers tests related to **OSGi** integration. It checks that we can instanciate some component within an **OSGi** framework.
-
-* The **ldap** modules are the meat of the *API* : they contain all the needed modules related to *LDAP*, and mainly the *model* module. Note that the *net* module should not be part of **ldap**, per se...
-
-* The **util** module contains classes that are shared across the various modules.
-
-
-Anyway, from a developer point of view, that does not tell a lot about the inner struture.
-
-Clearly, the entry point is the *Connection* interface and its inherited class, which reside in the _api-ldap-client-api_ module, in _/ldap/client/.api_. This is the interface - or one of its implementation - that is used to connect to a LDAP server. Here is the full hierarchy :
-
-![LdapConnection](images/ldap-connection.png)
-
-The user will need a _LdapNetworkConnection_ most of the time, the wrapper is just used by the connection pool. Note that *ApacheDS* has its own implementation (not represented in this picture), called _LdapCoresSessionConnection_.
-
-So, bottom line, if you want to have a look at how the *API* works, the entry point is the *LdapNetworkConnection class.
-
-## Layers
-
-If you consider a *LdapConnection*, obviously, you will have to connect to a remote server, and you will need a part of the code handling the network. This is done - currently - using *Apache MINA*, which is an *NIO* framework. That means all the communication with the remote *LDAP* server is done asynchroniously.
-
-We also made so the *API* to be *OSGi* compliant. That means some of the parts need to be 'activated'. The idea was to make it possible to extend the *API* easily by adding component that could be loaded dynamically. So far, it's not a completed work, but still, this is a on-going process.
-
-The following pitcure shows for 10 000 feet the *LDAP API* architecture :
-
-![LDAP API Architecture](images/architecture.png)
-
-
diff --git a/content/api/internal-design-guide/3-building.mdtext b/content/api/internal-design-guide/3-building.mdtext
deleted file mode 100644
index 2f522b7..0000000
--- a/content/api/internal-design-guide/3-building.mdtext
+++ /dev/null
@@ -1,60 +0,0 @@
-Title: 3 - Building
-NavPrev: 2-general-structure.html
-NavPrevText: 2 - General Structure
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 4-asn1.html
-NavNextText: 4 - ASN/1
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3 - Building
-
-The project is based on **Apache Maven** (version 3.x), so you'll have to install it first.
-
-That being said, building the **LDAP API** is pretty straightforward :
-
- :::
- $ mvn clean install
- Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
- [INFO] Scanning for projects...
- [INFO] ------------------------------------------------------------------------
- [INFO] Reactor Build Order:
- [INFO]
- [INFO] Apache Directory LDAP API
- [INFO] Apache Directory LDAP API I18n
- [INFO] Apache Directory LDAP API Utilities
- ...
- [INFO] Apache Directory LDAP API Model
- [INFO] Apache Directory LDAP API Codec Parent
- [INFO] Apache Directory API Integration Tests
- [INFO] Apache Directory API OSGi Integration Tests
- [INFO] Apache Directory LDAP API Distribution
- [INFO]
- [INFO] ------------------------------------------------------------------------
- [INFO] Building Apache Directory LDAP API 2.0.0.AM1-SNAPSHOT
- [INFO] ------------------------------------------------------------------------
- ...
-
-
-It takes around 1 min to build it all (a bit longer the first time, as some dependencies wil have to be pulled from the net).
-
-
-The top level _pom.xml_ depends on teh special _project_ 'project', which is used by all the **ApacheDS** projects. It gathers information about maven plugin dependenies and someother things. You don't really need to touch it anyway...
-
-Remember to use **Java 8** !!
-
diff --git a/content/api/internal-design-guide/4-asn1.mdtext b/content/api/internal-design-guide/4-asn1.mdtext
deleted file mode 100644
index 3097fa2..0000000
--- a/content/api/internal-design-guide/4-asn1.mdtext
+++ /dev/null
@@ -1,112 +0,0 @@
-Title: 4 - ASN/1
-NavPrev: 3-building.html
-NavPrevText: 3 - Building
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 4.1-asn1-tlv.html
-NavNextText: 4.1 - ASN/1 TLV
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - ASN/1
-
-To be completed...
-
-
-The **LDAP** protocol is based on an **ASN/1** description. We will notexplain in detail what is **ASN/1** about, you would rather check [This page](https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) for a very limited introduction, or if you feel teh need to understand what is **ASN/1** in detail, just read the [Olivier Dubuisson's book on ASN.1](http://www.oss.com/asn1/resources/books-whitepapers-pubs/dubuisson-asn1-book.PDF) (This is probably the best reference !)
-
-Anyway, we use a subset of **ASN/1**, as what we have to deal with is the **BER/DER** encoding. (**BER** or **DER** stands for **B**asic **E**ncoding **R**ule and **D**istinguished **E**ncoding **R**ule. There are other possible encoding, like **PER**, **XER**, **CER**, but they are irrelevant for **LDAP**)
-
-What is needed to know is that **ASN/1** is just a notation used to describe the messages being exchanged between a client and a server, and in order to use it, we need an encoder and a decoder on both sides :
-
-![Client/Server communication](images/asn1-codec.png)
-
-## ASN/1 implementation in Apache LDAP API
-
-It took a long time to get it right ! And it's not perfect :-)
-
-The very first iteration was using a proprietary library (**IBM SNACC**), but that was before **ApacheDS** became a **TLP** ! The next iteration was based on a rewriting system, which was pretty slow. Then came **Snicker**, a _State Machine_ based decoder, which is currently what we use. We might change for a faster implementation, like what **Kerby** is using...
-
-### ASN/1 messages
-
-Let's start with the basic information.
-
-An encoded ASN/1 message is a tuple contianing two or three elements : a **T**ype, a **L**ength and optionally - ie if the length is not 0 - a **V**alue. This tuple is called a **TLV**. Every message is a **TLV**.
-
-But a message can be have complex structure, so a **TLV** itself can encapsulate some **TLV**s. Actually the **V** part can be a list of **TLV**s. This is recursive...
-
-A typical encoded message can therefore represented this way :
-
- :::
- [TL [TLV] [TL [TLV] [TLV]]]
-
-Here, the message **TLV** value is a set of two **TLV**s, teh second one being itself a composition of 2 **TLV**s.
-
-The **T** describe the type of value, the **L** gives the length of this value (can be 0) and of course the **V** is the value, which can itself be a **TLV**.
-
-### Encoder/Decoder
-
-There are two aspects we have to deal with :
-
-* encoding messages
-* decoding messages
-
-Those are two different things, and we don't use the same mechanism. **Encoding** is done using a _State Machine_, and **Decoding** which is hard wired in each class implementing a message.
-
-As we said, it's not perfect, first because it's complex to implement, complex to add a new message, and complex to test. We don't have a compiler that generates the stubs to encode or decode messages.
-
-### Decoder
-
-The _Decoder_ work is to take a **byte[]** and transform it into an instance of a jave object. When we receive the **byte[]**, we don't know yet what kind of message we are dealing with, so the creation of the instance is differed.
-
-We have built a generic decoder that takes some imputs and produces the result, based on those elements :
-
-* A _Grammar_
-* A _Container_
-* A _StateEnum_
-* A _Decorator_
-* and optionally a _Factory_
-
-The _Grammar_ describes the transitions and actions of the state machine used to decode a message. Note that the actions can be stored in separate classes.
-
-The _Container_ is a wrapper around a message that is fed by the State Machine and that will contain the Java instance once fully decoded. It's initally empty.
-
-The _StateEnum_ is a Java enumeration listing all the possible _Grammar_ states.
-
-The _Decorator_ is a wrapper used to store a decoded message.
-
-The _Factory_ is used to create the message instance (it's optional)
-
-And of course, you have the messsage class that will be created and stored in the _Decorator_
-
-So what we have is based on a **State Engine**, which means you have to describe
-
-
-### Encoder
-
-It's slightly simpler : we use the *Decorator* to implement the encoding of a message. Two methods are necessary :
-
-* _int computeLength()_ : compute the _ByteBuffer_ size necessary to stored the encoded message
-* _ByteBuffer encode( ByteBuffer )_ : actually encode the message into a _ByteBuffer_
-
-### The state machine
-
-So we decode a message using a state machine, which basically transit from one state to another, and optionally execute an action in between :
-
-![State Machine transition](images/sm-transition.png)
-
-Now, let's see a real example.
diff --git a/content/api/internal-design-guide/4.1-asn1-tlv.mdtext b/content/api/internal-design-guide/4.1-asn1-tlv.mdtext
deleted file mode 100644
index 22f674d..0000000
--- a/content/api/internal-design-guide/4.1-asn1-tlv.mdtext
+++ /dev/null
@@ -1,619 +0,0 @@
-Title: 4-1 - ASN/1 TLV
-NavPrev: 4-asn1.html
-NavPrevText: 4 - ASN/1
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 5-network.html
-NavNextText: 5 - Network
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1 - ASN/1 TLV
-
-## What are TLVs ?
-
-The acronym **TLV** stands for **T**ag, **L**ength and **V**alue. It's a way to encode a piece of information with a type, a length followed by the information itself. Three points must be known:
-
-* The **Value** part may contents other **TLV**s. One can see **TLV**s as C structures, that can contain sub-structures.
-* The **Value** may not exist, and in this case the **Length** will be 0.
-* The **Length** part may not give the **Value** length: it is called an _indefinite Length_. In this - not so frequent - case, the **Value** must end with a specific terminator.
-
-### A quick sample
-
-Let's begin with a simple example, without too many explanations. This is the **PDU** (**P**acket **D**ata **U**nit) of a LDAP _BindRequest_:
-
-![TLV](images/TLVs.png)
-
-We can see in this picture that you have what is called a first level **TLV**. It encapsulates other **TLV**s. It's basically a stream of bytes.
-
-
-### Type
-
-Each **Type** contains information about the **Value** part of the **TLV**. It tells if the **Value** is a primitive or a constructed one, which type of primitive is the value, gives some contextual information. A **Type** can be coded on more than one byte. The first 3 bits give some contextual information about the **Type**, and the 5 following bits are either a label or the beginning of a multi-bytes label.
-
-* Labels are numbers in [0..30], and they represent a specific **ASN/1** element in the protocol description, like _CompareRequest ::= [APPLICATION 14] _ (here, the label is 14).
-* If the label is 31, then more than one byte is used to encode the **Type**. In this case, we use the following bytes to compute the label, where each byte which high bit is one will be followed by another byte.
-
-We limit the label to 2,097,151 as we encode the **Type** in one Java int :
-
- :::
- b1 xxx[1-1111], b2 1[111-1111], b3 1[111-1111], b4 0[111-1111]
- ->
- [111-1111][111-1111][111-1111]
- ->
- 0001-1111 1111-1111 1111-1111
- ->
- 0x1FFFFF
- ->
- 2,097,151
-
-In **LDAP** or **Kerberos**, no label is higher than 30, so we always use 1 byte **Type**s.
-
-Other interesting information that we need to grab from a *Type* are stored in the two first bits (bit 7 and 6), and in the third bit (bit 5). The first two bits describe the class, the third tells if the **TLV** is a **primitive** (b5 = 0) or a **constructed** **TLV** (b5 = 1).
-
-
-### Length
-
-**Length** gives the number of bytes of the **Value**, and nothing else. So the total length of a **TLV** will be:
-
- :::
- TLV length = Tag length + Length length + Value length,
-
-where the **Value** length is stored in the **Length** element.
-
-The **Length** may be 0, which means that there is no value following.
-
-How is **Length** encoded? A **Value** may be from 0 to N bytes long, with N < (256 ^ 126) - 1. This limit is purely hypothetic, of course. If we have to deal with huge objects like pictures or movies, their length will not exceed a few MBytes or a few GBytes
-
-Typically, we will find five kind of **Length**s :
-
-* zero length values;
-* values with a length less than 128 bytes
-* values with a length between 128 and 256 ^ 4 bytes long (an int will be able to hold 4 bytes);
-* values above 256 ^ 4 bytes long
-* values which length is not defined by the **Length** element.
-
-The last type of Length could occurs if the sender does not know the length of the value while it is sending it. **LDAP** protocol does not allow those kind of values, which are dangerous because you need to read the full **Value** to know its length.
-
-The fourth type could also be ignored (4 GBytes is quite a huge size for an LDAP element ...), so we can decide that we won't accept those **Values**. It seems reasonable.
-
-As the **Length** can be stored in more than one byte, we have to take care of fragmented **PDU** : we may receive only the first bytes, and have to wait for the rest to be received. The idea is to freeze and start again when we receive some more data.
-
-In any case, if the first byte is > 0x7F, that means it's a multi-bytes length, and we have to process the following bytesto get the real length. In this case, the first byte contains teh number of expected following bytes. Typically :
-
- :::
- 0x74 -> 116
- 0x82 0x02 0x84 : 2 bytes, length = 2 * 16 + 132 -> 164
- 0x81 0x84 : 1 byte, length = 132
-
-
-### Value
-
-**Value** carries the 'meat' of a **TLV**. Depending on the **Type**, it's either a primitive value, or a constructed one (which means it contains a **TLV** or a set of **TLV**s). Remember that bit 5 of the **Type** tells if the **Value is _primitive_ ( b5 == 0) or _constructed (b5 == 1).
-
-* If we have a _primitive_ **Value**, we have to read **Length** byte and we are done
-** If we have a _constructed_ **Value**, we have to process it as one or more **TLV**.
-
-## TLV processing
-
-In the **API**, the **TLV** processing is done in the _Asn1Decoder_ class, and more specifically by the _decode( ByteBuffer stream, Asn1Container container )_ method, which takes a ByteBuffer as input, and feed a container as a result.
-
-The important thing to understand is that this method can be called repetively, until a message is fully decoded, as soon as we feed it with some new _ByteBuffer_. The _Container_ instance will contain the result, as soon as its state has switched to **PDU_DECODED**.
-
-While processing a **TLV**, when we are done with the **Value** part, the decoder will check if any action is to be executed. The action is associated to the grammar in use, which is stored in the container. Here is the part that call the action, in the _Asn1Decoder.treatTLVDoneState()_ method :
-
- :::java
- private boolean treatTLVDoneState( ByteBuffer stream, Asn1Container container ) throws DecoderException
- {
- // First, we have to execute the associated action
- container.getGrammar().executeAction( container );
- ...
-
-So the _Container_ must contain the grammar, and the current state. We may not have any action to execute, either because none is associated with the current transition or because we are at the end of the message.
-
-### TLV implementation
-
-The **TLV** class stores the **Type**, **Length** and **Value**, plus some extra information, like a unique _id_, a reference to its parent's **TLV** and the expected length when the included **Value** is a set of **TLV**.
-
-![TLV/BerValue](images/tlv-bervalue.png)
-
-You won't have tp manipulate **TLV** frequently, except in the actions, where you might fetch its *Length** and **Value** content, using _getLength()_ and _getValue().getData()_ methods respectively.
-
-### Action
-
-This is quite a simple class and hierarchy :
-
-![GrammarAction](images/grammar-action.png)
-
-As we can see, each **Action** has a name (this is only used for debug purpose) and a _action(Asn1Container)_ method, which does what it needs. The _Asn1Container_ parameter gives access to the data through the _Asn1Container.getCurrentTLV().getValue().getData()_ method, and to the message being processed.
-
-At this point, an example would be useful.
-
-## Example
-
-Let say we want to implement a decoder for the following message :
-
- :::
- EntryChangeNotification ::= SEQUENCE
- {
- changeType ENUMERATED
- {
- add (1),
- delete (2),
- modify (4),
- modDN (8)
- },
- previousDN LDAPDN OPTIONAL, -- modifyDN ops. only
- changeNumber INTEGER OPTIONAL -- if supported
- }
-
-You don't need to know anything about this message, what is important is how we will decode it.
-
-The first thing we need to create is an interface and a implementation for the Java object that will represent the **EntryChange** object.
-
-Here is the interface (note that it's a _Control_, but it's a irrelevant information here) :
-
- :::Java
- public interface EntryChange extends Control
- {
- /** No defined change number */
- int UNDEFINED_CHANGE_NUMBER = -1;
-
- /** The EntryChange control */
- String OID = "2.16.840.1.113730.3.4.7";
-
-
- /**
- * @return The ChangeType
- */
- ChangeType getChangeType();
-
-
- /**
- * Set the ChangeType
- *
- * @param changeType Add, Delete; Modify or ModifyDN
- */
- void setChangeType( ChangeType changeType );
-
-
- /**
- * @return The previous DN
- */
- Dn getPreviousDn();
-
-
- /**
- * Sets the previous DN
- *
- * @param previousDn The previous DN
- */
- void setPreviousDn( Dn previousDn );
-
-
- /**
- * @return The change number
- */
- long getChangeNumber();
-
-
- /**
- * Sets the ChangeNumber
- *
- * @param changeNumber The ChanegNumber
- */
- void setChangeNumber( long changeNumber );
- }
-
-What is important is that we declare all the setters and getters for the object fields that matter : _changeType_, _previousDN_ and _changeNumber_
-
-The implementation is not really complex :
-
- :::Java
- /**
- * A simple implementation of the EntryChange response control.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public class EntryChangeImpl extends AbstractControl implements EntryChange
- {
- /** The changeType */
- private ChangeType changeType = ChangeType.ADD;
-
- private long changeNumber = UNDEFINED_CHANGE_NUMBER;
-
- /** The previous Dn */
- private Dn previousDn = null;
-
-
- /**
- *
- * Creates a new instance of EntryChangeControl.
- *
- */
- public EntryChangeImpl()
- {
- super( OID );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ChangeType getChangeType()
- {
- return changeType;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setChangeType( ChangeType changeType )
- {
- this.changeType = changeType;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Dn getPreviousDn()
- {
- return previousDn;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setPreviousDn( Dn previousDn )
- {
- this.previousDn = previousDn;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public long getChangeNumber()
- {
- return changeNumber;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setChangeNumber( long changeNumber )
- {
- this.changeNumber = changeNumber;
- }
-
-
- /**
- * @see Object#hashCode()
- */
- @Override
- public int hashCode()
- {
- int h = super.hashCode();
-
- h = h * 37 + ( int ) changeNumber;
- h = h * 37 + ( changeType == null ? 0 : changeType.hashCode() );
- h = h * 37 + ( previousDn == null ? 0 : previousDn.hashCode() );
-
- return h;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals( Object o )
- {
- if ( !super.equals( o ) )
- {
- return false;
- }
-
- EntryChange otherControl = ( EntryChange ) o;
-
- return ( changeNumber == otherControl.getChangeNumber() ) && ( changeType == otherControl.getChangeType() )
- && ( previousDn.equals( otherControl.getPreviousDn() ) );
- }
-
-
- /**
- * Return a String representing this EntryChangeControl.
- */
- @Override
- public String toString()
- {
- StringBuilder sb = new StringBuilder();
-
- sb.append( " Entry Change Control\n" );
- sb.append( " oid : " ).append( getOid() ).append( '\n' );
- sb.append( " critical : " ).append( isCritical() ).append( '\n' );
- sb.append( " changeType : '" ).append( changeType ).append( "'\n" );
- sb.append( " previousDN : '" ).append( previousDn ).append( "'\n" );
-
- if ( changeNumber == UNDEFINED_CHANGE_NUMBER )
- {
- sb.append( " changeNumber : '" ).append( "UNDEFINED" ).append( "'\n" );
- }
- else
- {
- sb.append( " changeNumber : '" ).append( changeNumber ).append( "'\n" );
- }
-
- return sb.toString();
- }
- }
-
-This is pretty much trivial.
-
-We now need a _Decorator to manipulate this instance. Here is the code :
-
- :::Java
- public class EntryChangeDecorator extends ControlDecorator<EntryChange> implements EntryChange
- {
- /** Default value when no change number is provided */
- public static final int UNDEFINED_CHANGE_NUMBER = -1;
-
- /** A temporary storage for the previous Dn */
- private byte[] previousDnBytes = null;
-
- /** The entry change global length */
- private int eccSeqLength;
-
- /** An instance of this decoder */
- private static final Asn1Decoder DECODER = new Asn1Decoder();
-
-
- /**
- * Creates a new instance of EntryChangeDecoder wrapping a newly created
- * EntryChange Control object.
- *
- * @param codec The LDAP service instance
- */
- public EntryChangeDecorator( LdapApiService codec )
- {
- super( codec, new EntryChangeImpl() );
- }
-
-
- /**
- * Creates a new instance of EntryChangeDecorator wrapping the supplied
- * EntryChange Control.
- *
- * @param codec The LDAP service instance
- * @param control The EntryChange Control to be decorated.
- */
- public EntryChangeDecorator( LdapApiService codec, EntryChange control )
- {
- super( codec, control );
- }
-
-
- /**
- * Internally used to not have to cast the decorated Control.
- *
- * @return the decorated Control.
- */
- private EntryChange getEntryChange()
- {
- return getDecorated();
- }
-
-
- /**
- * Compute the EntryChangeControl length
- *
- * <pre>
- * 0x30 L1
- * |
- * +--> 0x0A 0x0(1-4) [1|2|4|8] (changeType)
- * [+--> 0x04 L2 previousDN]
- * [+--> 0x02 0x0(1-4) [0..2^63-1] (changeNumber)]
- * </pre>
- *
- * @return the control length.
- */
- @Override
- public int computeLength()
- {
- int changeTypesLength = 1 + 1 + 1;
-
- int previousDnLength = 0;
- int changeNumberLength = 0;
-
- if ( getPreviousDn() != null )
- {
- previousDnBytes = Strings.getBytesUtf8( getPreviousDn().getName() );
- previousDnLength = 1 + TLV.getNbBytes( previousDnBytes.length ) + previousDnBytes.length;
- }
-
- if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
- {
- changeNumberLength = 1 + 1 + BerValue.getNbBytes( getChangeNumber() );
- }
-
- eccSeqLength = changeTypesLength + previousDnLength + changeNumberLength;
- valueLength = 1 + TLV.getNbBytes( eccSeqLength ) + eccSeqLength;
-
- return valueLength;
- }
-
-
- /**
- * Encodes the entry change control.
- *
- * @param buffer The encoded sink
- * @return A ByteBuffer that contains the encoded PDU
- * @throws EncoderException If anything goes wrong.
- */
- @Override
- public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
- {
- if ( buffer == null )
- {
- throw new EncoderException( I18n.err( I18n.ERR_04023 ) );
- }
-
- buffer.put( UniversalTag.SEQUENCE.getValue() );
- buffer.put( TLV.getBytes( eccSeqLength ) );
-
- buffer.put( UniversalTag.ENUMERATED.getValue() );
- buffer.put( ( byte ) 1 );
- buffer.put( BerValue.getBytes( getChangeType().getValue() ) );
-
- if ( getPreviousDn() != null )
- {
- BerValue.encode( buffer, previousDnBytes );
- }
-
- if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
- {
- BerValue.encode( buffer, getChangeNumber() );
- }
-
- return buffer;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public byte[] getValue()
- {
- if ( value == null )
- {
- try
- {
- computeLength();
- ByteBuffer buffer = ByteBuffer.allocate( valueLength );
-
- buffer.put( UniversalTag.SEQUENCE.getValue() );
- buffer.put( TLV.getBytes( eccSeqLength ) );
-
- buffer.put( UniversalTag.ENUMERATED.getValue() );
- buffer.put( ( byte ) 1 );
- buffer.put( BerValue.getBytes( getChangeType().getValue() ) );
-
- if ( getPreviousDn() != null )
- {
- BerValue.encode( buffer, previousDnBytes );
- }
-
- if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
- {
- BerValue.encode( buffer, getChangeNumber() );
- }
-
- value = buffer.array();
- }
- catch ( Exception e )
- {
- return null;
- }
- }
-
- return value;
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public ChangeType getChangeType()
- {
- return getEntryChange().getChangeType();
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setChangeType( ChangeType changeType )
- {
- getEntryChange().setChangeType( changeType );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Dn getPreviousDn()
- {
- return getEntryChange().getPreviousDn();
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setPreviousDn( Dn previousDn )
- {
- getEntryChange().setPreviousDn( previousDn );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public long getChangeNumber()
- {
- return getEntryChange().getChangeNumber();
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void setChangeNumber( long changeNumber )
- {
- getEntryChange().setChangeNumber( changeNumber );
- }
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public Asn1Object decode( byte[] controlBytes ) throws DecoderException
- {
- ByteBuffer bb = ByteBuffer.wrap( controlBytes );
- EntryChangeContainer container = new EntryChangeContainer( getCodecService(), this );
- DECODER.decode( bb, container );
- return this;
- }
- }
diff --git a/content/api/internal-design-guide/5-network.mdtext b/content/api/internal-design-guide/5-network.mdtext
deleted file mode 100644
index dd47fb4..0000000
--- a/content/api/internal-design-guide/5-network.mdtext
+++ /dev/null
@@ -1,359 +0,0 @@
-Title: 5 - Network
-NavPrev: 4-asn1.html
-NavPrevText: 4 - ASN/1
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 6-codec.html
-NavNextText: 6 - Encoding/Decoding
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-
-
-# 5 - Network
-
-# Content
-
-* [Class hierarchy](#class-hierarchy)
-* [MINA usage](#mina-usage)
- * [Initialization](#initialization)
- * [Example : using a LdapConnectionConfig](#example-using-a-ldapconnectionconfig)
- * [MINA Events processing](#mina-events-processing)
- * [Events processing](#events-processing)
- * [Sending a message](#sending-a-message)
- * [Receiving a message](#receiving-a-message)
- * [Encoding/decoding](#encoding-decoding)
- * [SSL handling](#ssl-handling)
- * [StartTLS handling](#startts-handling)
-
-
-The **Apache LDAP AP** is built on top of [**Apache MINA**](http://mina.apache.org) which is a **NIO** framework.
-
-As **MINA** is fully asynchronous, it has some impact on the design of the **LDAP API**. Basically, we send requests, and we don't wait for responses, we get informed when the response is there. Most of the time, the **API** users will want to wait for a response, instead of leveraging the asyncrhonous aspect of the **API**: this is the reason we have a blocking **API**, based on the non-blocking implementation. We will explain the whole thing here.
-
-NOTE : **LDAP** protocol is based on **TCP**, we are not dealing with **UDP** at all.
-
-## Class hierarchy
-
-The **LdapConnection** interface and its implementations are the entry point for any code that wants to communicate using the **LDAP** protocol. There are many flavors, but one usually want to instanciate a **LdapNetworkConnection**. Her eis the complete class hierarchy:
-
-![LdapConnection hierarchy](images/ldapconnection.png)
-
-Creating a new **LdapConnection** is all about calling the appropriate constructor with the required parameters, or to create a **LdapConnectionConfig** and call the **LdapConnection** implementation constructor.
-
-It's also possible to use a **LdapConnectionFactory** implementation :
-
-![LdapConnection factory hierarchy](images/ldap-connection-factory.png)
-
-## MINA usage
-
-**MINA** handles all the complexity of managing sockets and transfering messages in and out. An application based on this framework just have to implement a few interfaces :
-
-* _IoHandler_ which is the part of the application that receives or sends messages, and manage the connection to the remote peer
-* _ProtocolDecoder_ and _ProtoclEncoder_ which is responsible for encoding a meassage to a _byte[]_ ready to be sent or to produce a message from a received _byte[]_
-* _ProtocolCodecFactory_ which is the factory that instanciates the encoder and decoder
-
-We also have to create a _Connector_, which is the instance in charge of managing the communication with the remote peer. That implies we properly set the filter chain it uses, especially the **SSL/TLS** part.
-
-Currently, we have a dedicated **MINA* module that covers a part of that, but the _Connector_ creation and initialization is done in the _LdapNetworkConnection_ class - which is a mistake, it should be delegated to a class in the **MINA** module-.
-
-### Initialization
-
-The initialization is done in the _LdapnetworkConnection.connect()_ method :
-
- :::Java
- public boolean connect() throws LdapException
- {
- ...
-
- // Create the connector if needed
- if ( connector == null )
- {
- createConnector();
- }
-
-and the private _createConnector()_ method does all the work :
-
- :::Java
- private void createConnector() throws LdapException
- {
- // Use only one thread inside the connector
- connector = new NioSocketConnector( 1 );
-
- if ( connectionConfig != null )
- {
- ( ( SocketSessionConfig ) connector.getSessionConfig() ).setAll( connectionConfig );
- }
- else
- {
- ( ( SocketSessionConfig ) connector.getSessionConfig() ).setReuseAddress( true );
- }
-
- // Add the codec to the chain
- connector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
-
- // If we use SSL, we have to add the SslFilter to the chain
- if ( config.isUseSsl() )
- {
- addSslFilter();
- }
-
- // Inject the protocolHandler
- connector.setHandler( this );
- }
-
-A few things :
-
-* We use one thread as a default to handle the communication with the server, it's enough as we are only talking to one server anyawy. This is the reason we use '1' as a parameter to the _Connector_ constructor.
-* We may have a SocketSessionConfig instance, as soon as one is passed to the _LdapNetworkConnection_ instance before the first call to the _connect_ method is done. By default, we just set the _SO_REUSE_ flag.
-* We add one or two filters to the chain : the **codec** and the **SSL** filter, if needed. The **SSL** filter requires that a _LdapConnectionConfig_ instance is passed to the constructor.
-* As we can see, the _LdapNetwworkConnection_ class is the _IoHandler_ implementation.
-
-This private class should be moved to another class in the **MINA** module.
-
-Note : We could share the _Connector_ between many **LdapConnections**, using less threads.
-
-#### Example : using a LdapConnectionConfig
-
-Here is an example on how we can create and use a _LdapConnectionConfig_ to set up a secured connection :
-
- :::Java
- LdapConnectionConfig sslConfig = new LdapConnectionConfig();
- sslConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
- sslConfig.setUseSsl( true );
- sslConfig.setLdapPort( getLdapServer().getPortSSL() );
- sslConfig.setTrustManagers( new NoVerificationTrustManager() );
- sslConfig.setBinaryAttributeDetector( new SchemaBinaryAttributeDetector(
- ldapServer.getDirectoryService().getSchemaManager() ) );
-
- try ( LdapNetworkConnection connection = new LdapNetworkConnection( sslConfig ) )
- {
- connection.bind( "uid=admin,ou=system", "secret" );
- ...
-
-
-### MINA Events processing
-
-There are many aspects we need to consider when it comes to use **MINA** :
-
-* events processing
-* sending a message
-* receiving a message
-* encoding/decoding
-
-#### Events processing
-
-**MINA** is an asynchronous framework, which means it's event based : you will receive events when something 'happens' (like, a message is received, etc). The events have to be processed by the **LDAP API**, and the **IoHandler** interface is listing all the events we have to process. Here they are :
-
-* _messageReceived_ : When a message has been fully received from the remote peer
-* _messageSent_ : When a message has been fully sent to the remote peer
-* _exceptionCaught_ : If we git an exception from the network layer
-* _inputClosed_ : When the _Input_ part of a TCP connection has been closed
-* _sessionClosed_ : When a Session is closed
-* _sessionCreated_ : When a Session is created
-* _sessionIdle_ : When a Session is idle
-* _sessionOpened_ : When a Session is opened
-* _event_ : when the session receives a specific event
-
-The _session_ is created when you connect for the first time, it's atcive until it's closed. We are talking about a **TCP** session, not a **LDAP** session.
-
-So the _LdapNetworkConnection_ class must implement those methods.
-
-Regarding the _messageReceived/messageSent_ methods, it's important to know that we are talking about **FULL** **LDAP** messages, even if **TCP** does not guarantee that messages can't be fragmented : **MINA** deal with fragmentation.
-
-Actually, we only implement the _messageReceived_, _exceptionCaught_, _inputClose_, _sessionCreated_ and _sessionClosed_ methods, the other are handled by the _IoHandlerAdpater_ methods (which does nothing with it).
-
-#### Sending a message
-
-There are two modes : **Synchronous** and **Asyncrhonous**. The methods are respectively described in the _LdapConnection_ interface and _LdapAsyncConnection_ interface. Actually, _synchronous_ methods are calling _asynchronous_ methods, which returns a _Future_ :
-
- :::Java
- /**
- * {@inheritDoc}
- */
- @Override
- public AddResponse add( AddRequest addRequest ) throws LdapException
- {
- ...
-
- AddFuture addFuture = addAsync( addRequest );
-
- // Get the result from the future
- try
- {
- // Read the response, waiting for it if not available immediately
- // Get the response, blocking
- AddResponse addResponse = addFuture.get( timeout, TimeUnit.MILLISECONDS );
-
- if ( addResponse == null )
- {
- // We didn't received anything : this is an error
- LOG.error( "Add failed : timeout occurred" );
- throw new LdapException( TIME_OUT_ERROR );
- }
-
- if ( addResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
- {
- // Everything is fine, return the response
- LOG.debug( "Add successful : {}", addResponse );
- }
- else
- {
- // We have had an error
- LOG.debug( "Add failed : {}", addResponse );
- }
-
- return addResponse;
- }
- catch ( Exception ie )
- {
- // Catch all other exceptions
- // Send an abandon request
- if ( !addFuture.isCancelled() )
- {
- abandon( addRequest.getMessageId() );
- }
-
- throw new LdapException( NO_RESPONSE_ERROR, ie );
- }
- }
-
-You can see we wait until the timeout expired, or until we got the response, calling the _addAsync_ method, getting back a _Future_ and waiting on it.
-
-This method take a _AddRequest_ but we have other simpler flavors (see the **LDAP API** documentation).
-
-
- :::Text
- AddResponse ldapConnection.add( AddResquest )
- |
- +-- AddFuture addAsync( AddRequest )
- | |
- | +-- connect()
- | | |
- | | +-- createConnector()
- | | | |
- | | | +-- new NioSocketConnector()
- | | | |
- | | | +-- NioSocketConnector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
- | | | |
- | | | [+-- addSslFilter()]
- | | | |
- | | | +-- NioSocketConnector.setHandler( this )
- | | |
- | | +-- IoConnector.connect( address )
- | |
- | +-- checkSession()
- | |
- | +-- new AddFuture( LdapConnection, ID )
- | |
- | +-- addToFutureMap( ID, AddFuture )
- | |
- | +-- writeRequest( AddRequest )
- | |
- | +-- WriteFuture IoSession.write( request )
- | |
- | +-- WriteFuture.awaitUninterruptibly( 100 )
- |
- +-- AddFuture.get()
-
-Here, we first create a connection if we don't have one yet, and then we try to write the message to the remote server, and wait for the message to be sent. That means sending message is synchronous, while receiving is aysnchronous by default. (NOTE : This may change in the next version.)
-
-Once the request has been written, we do a _get_ on the returned _Future_. Either we get an _AddResponse_, or an error/timeout.
-
-#### Receiving a message
-
-Once the _IoSession.write()_ method is called, we can assume the message has been sent to the remote server (sort of). The response will come as an event : _messageReceived()_, which is implemented in _LdapNetworkConnection_.
-
-Each **LDAP** message has a unique **ID**, and every sent message is associated with a _Future_. When the message is sent, we store a tuple <**ID**, **Future**> in a map, so when the response arrives, we just have to pull the _Future_ from the map using teh message **ID**. This is what we do in the _messageReceived()_ implementation. The response is enqueued in the _Future_ (we may have more than one, typically for **Search** operations).
-
-
-#### Encoding/decoding
-
-Messages are encoded and decoded when we send or receive them. This is done by **MINA**, using a callback in the **LDAP API**. That means we configured **MINA** to process **LDAP** messages.
-
-The codec is inserted in **MINA** chain while connecting :
-
- :::Java
- /** The Ldap codec protocol filter */
- private IoFilter ldapProtocolFilter = new ProtocolCodecFilter( codec.getProtocolCodecFactory() );
-
- private void createConnector() throws LdapException
- {
- ...
-
- // Add the codec to the chain
- connector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
-
-So the _ProtocolCodecFilter_ class is responsible for initializing the codec (it's a **MINA** class), and here, we use a factory to inject the encoder and decoder instances. This factory is _LdapProtocolCodecFactory_.
-
-This class, which is part of the _mina_ module, instanciate an instance of the statefull **LDAP** encoder and decoder classes, _LdapProtocolEncoder_ and _LdapProtocolDecoder_, which also belongs to the _mina_ module.
-
-What is important to remember is that **TCP** is not dealing with **LDAP** messages, but with bytes. The decoder must be able to start decoding a message, even if it does not have all the necessary bytes to decode a full **LDAP** message. It should also be able to decode more than one message if the bytes it received contains more than the bytes necessary to hold a message. All of this is handle by MINA anyway, but we must provide a way for the decoder to keep the current state. Check the [codec](codec.html) page for more explainations.
-
-
-## SSL Handling
-
-**LDAPS** is a **LDAP** connection secured with **SSL/TLS** (we still use **SSL** as a name, when actually **TLS** is used, as **SSL** is not anymore safe. The currrent version of the protocol is **TLS V.12**, but **TLS v1.3** has just been released.)
-
-A **LDAPS** connection is a standard **TCP** connection which has a secured layer installed before it can be used.
-
-## StartTLS Handling
-
-The **StartTLS** extended operation is a bit specific, as it is set over an existing connection, and based on a **LDAP** message being sent to the remote server. The big plus is that it uses the standard **LDAP** port, so there is no need to declare a dedicated port for a secured connection (aka **LDAPS**).
-
-The logic is the following :
-
- ::: text
- - The client sends a **startTLS** extended operation to the server - assuming the server supports it -
- - The server setup a **TLS** 'listener', configure it, and send back an extended response to inform the client it is ready to proceed further. At this point, the server will not proceed any non-handshake messages received for this **LDAP** session, not will it send any response (they will be enqueued)
- - On reception of this response, the client will add the **SslFilter** into the MINA network chain, configure it, and start the handshake (by sending a **CLIENT HELLO** message). No further message can be sent for this session, beside the handsake messages (they will be enqueued and delivered when teh handshake has been completed successfully)
- - The handshake is performed: messages and responses are send and received, up to teh completion point.
- - When the handshake is completed, the **SslFilter** inform the connection that it's done by 'sending' (locally) a **SESSION_SECURED* message
- - enqueued messages are flushed on bith the client and server. We are done, the session is secured.
-
-There are many aspect that are tricky here. One of them is to be sure we don't send messages to the remote peer while processing the handshake
-
-
-On the server :
-
-Init : the SSLContext is configured to TLS, regardless of the configuration...
-
-SslHandler.handleExtendedOperation
- new SslFilter()
- DefaultIoFilterChain.addFirst()
- DefaultIoFilterChain.register()
- SslFilter.onPreAdd()
- new SslHandler()
- SslHandler.init()
- SSLContext.createSSLEngine()
- [SSLEngine.beginHandshake()] <<<----
- SslFilter.onPostAdd()
- write response
-
-On the client :
-
-addSslFilter
- SSLContext.getInstance()
- new SslFilter()
- DefaultIoFilterChain.addFirst()
- DefaultIoFilterChain.register()
- SslFilter.onPreAdd()
- new SslHandler()
- SslHandler.init()
- SSLContext.createSSLEngine()
- SSLEngine.beginHandshake() <<<----
- SslFilter.onPostAdd()
diff --git a/content/api/internal-design-guide/6-codec.mdtext b/content/api/internal-design-guide/6-codec.mdtext
deleted file mode 100644
index 9651be9..0000000
--- a/content/api/internal-design-guide/6-codec.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 6 - Encoding/Decoding
-NavPrev: 5-network.html
-NavPrevText: 5 - Network
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 7-ldap-messages.html
-NavNextText: 7 - LDAP Messages
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6 - Encoding/Decoding
-
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/7-ldap-messages.mdtext b/content/api/internal-design-guide/7-ldap-messages.mdtext
deleted file mode 100644
index b5f93b9..0000000
--- a/content/api/internal-design-guide/7-ldap-messages.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 7 - LDAP Messages
-NavPrev: 6-codec.html
-NavPrevText: 6 - Encoding/Decoding
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 8-schema.html
-NavNextText: 8 - Schema
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7 - LDAP Messages
-
-
-TODO...
\ No newline at end of file
diff --git a/content/api/internal-design-guide/8-schema.mdtext b/content/api/internal-design-guide/8-schema.mdtext
deleted file mode 100644
index 3e58fb0..0000000
--- a/content/api/internal-design-guide/8-schema.mdtext
+++ /dev/null
@@ -1,154 +0,0 @@
-Title: 8 - Schema
-NavPrev: 7-ldap-messages.html
-NavPrevText: 7 - LDAP Messages
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 9-dn.html
-NavNextText: 9 - DN
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 8 - Schema
-
-## Schema parsers
-
-We use a set of classes to parse schema elements. There are 11 flavors of schema elements, 8 of them being described in a **RFC**, 3 of them being ApacheDS proprietary:
-
-* [AttributeType](https://tools.ietf.org/html/rfc4512#section-4.1.2)
-* [DitContentRule](https://tools.ietf.org/html/rfc4512#section-4.1.6)
-* [DitStructureRule](https://tools.ietf.org/html/rfc4512#section-4.1.7.1)
-* [LDAPSyntax](https://tools.ietf.org/html/rfc4512#section-4.1.5)
-* [MatchingRule](https://tools.ietf.org/html/rfc4512#section-4.1.3)
-* [MatchingRuleUse](https://tools.ietf.org/html/rfc4512#section-4.1.4)
-* [NameForm](https://tools.ietf.org/html/rfc4512#section-4.1.7.2)
-* [ObjectClass](https://tools.ietf.org/html/rfc4512#section-4.1.1)
-
-and
-
-* LdapComparator
-* Normalizer
-* SyntaxChecker
-
-We need to be able to parse those schema elements because they can be added into the server as a description (ie, a String representing one of those schema elements as defined by the RFC). For the same reason, the **LDAP API** need to validate that those schema elements are valid before sending them to a **LDAP SERVER**, or to be able to properly parse what it gets from a **LDAP server**.
-
-## Strict vs quirks mode
-
-Here we have a problem : most of the LDAP server implementation violate the RFC. We can't simply expect the String representing a schema element to be compliant with the RFC. Some typical deviations are :
-
-* OpenLDAP uses some macro instead of OIDs. This is convenient, as it allows to define the root OID with a name, and reuse it in the associated schema elements
-* AD and many other servers expect some specific characters to be accepted, like '_', ':', '#', ...
-* Sometime, the values may come without quotes, when it's required
-* etc.
-
-We will define the _strict mode_ a mode which follows the **RFC** tightly, and the _quirks mode_ a relaxed version of the parser, more permissive. One can use either the strict or relaxed mode using a flag.
-
-### Strict mode
-
-The only thing we will relax is the order in which the various parts of each description is present in a schema description : we don't expect them to be ordered as described in the RFC.
-
-The various parts are defined using a few syntaxes :
-
-* _NAME_: qdescrs
-* _DESC_: qdstring
-* _SUP_ (**ObjectClass**), _MUST_, _MAY_, _APPLIES_, _AUX_, _NOT_: oids
-* _SUP_ (**AttributeType**), _EQUALITY_, _ORDERING_, _SUBSTR_, _FORM_, _OC_: oid
-* _SYNTAX_ (**AttributeType**): noidlen
-* _SYNTAX_ (**MathingRule**): numericoid
-* _SUP_ (**DitStructureRule**): ruleids
-
-* _descr_: oid, qdescrs
-* _qdescr_: qdescrs, qdescrlist
-
-_qdescrs_ and _oids_ may contain one or many _qdescr_ and _oid_.
-
-#### descr, strict
-
-The _descr_ construct is used by _oid_ and _qdescrs_ (an _OID_ can be a name). The strict mode will use this grammar :
-
- descr ::= keystring
- keystring ::= leadkeychar keychar*
- leadkeychar ::= ALPHA
- keychar ::= ALPHA | DIGIT | HYPHEN
- ALPHA ::= ['A'..'Z'] | ['a'..'z']
- DIGIT ::= ['0'..'9']
- HYPHEN ::= '-'
- SQUOTE ::= '\''
-
-#### qdstring, strict
-
-A _qdstring_ can contain any type of **UTF-8** characters, except the simple quote or the backslash, which must be encoded. It's always surrounded by simple quotes :
-
- :::text
- qdstring ::= SQUOTE dstring SQUOTE
- dstring ::= ( QS | QQ | QUTF8 )*
- QQ ::= ESC %x32 %x37
- QS ::= ESC %x35 ( %x43 / %x63 )
- QUTF8 ::= QUTF1 | UTFMB
- QUTF1 ::= %x00-26 | %x28-5B | %x5D-7F
-
-#### qdescr, strict
-
-_qdescr_ is a quoted name, where the first char must be alphabetic, and the following chars must be alphabetic, digits or hyphen. Here is the **ABNF** for _qdescr_ :
-
- :::text
- qdescr ::= SQUOTE descr SQUOTE
-
-#### noidlen, strict
-
-### Relaxed mode
-
-#### qdstring, relaxed
-
-There
-
-#### descr, relaxed
-
-The relaxed _descr_ accepts more characters, like underscore, semi-colon, dot, colon or sharp. The leadkeychar will not be mandatory, too. Here is the **ABNF** we will accept :
-
- relaxed-descr ::= relaxed-keystring
- leaxed-keystring::= keychar+
- relaxed-keychar ::= ALPHA | DIGIT | HYPHEN | UNDERSCORE | SEMICOLON | DOT | COLON | SHARP
- ALPHA ::= ['A'..'Z'] | ['a'..'z']
- DIGIT ::= ['0'..'9']
- HYPHEN ::= '-'
- UNDERSCORE ::= '_'
- SEMI_COLON ::= ';'
- COLON ::= ':'
- SDOT ::= '.'
- SHARP ::= '#'
-
-
-#### qdescr, relaxed
-
-Compared to the strict mode, we will accept a non-quoted String, or a String using double quotes.
-
- :::text
- relaxed-qdescr ::= SQUOTE relaxed-descr SQUOTE | DQUOTE relaxed-descr DQUOTE | relaxed-descr
-
-#### oid, relaxed
-
-We will accept quoted and double quoted OIDs and Names, in relaxed mode. Here is teh supported **ABNF** :
-
- :::text
- oid-relaxed ::= SQUOTE relaxed-descr SQUOTE | DQUOTE relaxed-descr DQUOTE | descr-relaxed |
- SQUOTE numericoid SQUOTE | DQUOTE numericoid DQUOTE | numericoid
-
-#### noidlen, strict
-
-Here, we will allow textual syntax name to be used, not only OIDs. For instance, something like _SYNTAX IA5String_ will be allowed.
-
-We also allow quoted and double quoted OIDs.
\ No newline at end of file
diff --git a/content/api/internal-design-guide/9-dn.mdtext b/content/api/internal-design-guide/9-dn.mdtext
deleted file mode 100644
index f52844b..0000000
--- a/content/api/internal-design-guide/9-dn.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 9 - DN
-NavPrev: 8-schema.html
-NavPrevText: 8 - Schema
-NavUp: ../internal-design-guide.html
-NavUpText: Internal Design Guide
-NavNext: 10-entry.html
-NavNextText: 10 - Entry
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 9 - DN
-
-a **DN**, or **Distingusished Name** is a data structure that
-TODO...
\ No newline at end of file
diff --git a/content/api/java-api.mdtext b/content/api/java-api.mdtext
deleted file mode 100644
index 116471c..0000000
--- a/content/api/java-api.mdtext
+++ /dev/null
@@ -1,43 +0,0 @@
-Title: LDAP Java API
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# LDAP Java API
-This is the **Java** implementation of a new **LDAP API**. This effort was initially conducted with the **OpenDS** team.
-
-## Background
-There are a few existing **Java LDAP API** around there. Here is a short list and description.
-
-| API | Version | License | Description |
-|---|---|---|---|
-| [Apache Directory Client API 1.0](https://directory.apache.org/api/) | 1.0.0 | ASL 2.0 | The Apache Directory Server CLient API. |
-| [Apache Directory Client API 2.0](https://directory.apache.org/api/) | 2.0.0 | ASL 2.0 | The Apache Directory Server CLient API, V2. |
-| [jLDAP](http://www.openldap.org/jldap/) | 2008_03-01-1 | OpenLDAP Public License | A Novell(&tm;) contribution to the OpenLDAP project |
-| [JNDI](http://java.sun.com/products/jndi/reference/docs/index.html) | 1.2 | Sun license | This is not a pure LDAP API, however it's included in J2SE since Java 5. (Probably the API selected by many developers |
-| [ldapSDK](http://www.mozilla.org/directory/javasdk.html) | 4.17 | Netscape Public License| The Mozilla(&tm;) API, formally the Netscape LDAP API |
-| [OpenDJ LDAP SDK](https://forgerock.org/opendj/#sub-projects) | 3.0.0 | CDDL | The ForgeRock(&tm;) OpenDJ LDAP SDK |
-| [OpenDS client API](https://www.opends.org/wiki/page/ClientAPI) | Discontinued | CDDL | The OpenDS(&tm;) API |
-| [UnboundID API](http://www.unboundid.com/products/ldapsdk/) | 3.2.0 | GPLv2/LGPLv2.1/UnboundID Free Use License | A new API developed by the UnboundID(&tm;) company |
-
-(There may be some more we don't know about)
-
-## Features
-The [User Guide](user-guide.html) pages gives the list of features the API provides.
-
-## Prerequisite
-
-This API requires **Java 7** or upper.
diff --git a/content/api/migration-guide.mdtext b/content/api/migration-guide.mdtext
deleted file mode 100644
index 90d1c21..0000000
--- a/content/api/migration-guide.mdtext
+++ /dev/null
@@ -1,45 +0,0 @@
-Title: API 1.0 to 2.0 migration guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Apache LDAP API 1.0 to 2.0 migration guide
-
-## Main differences
-
-The *Apache LDAP API V 2.0* is not very different from the *1.0* version. However, a few classes have been renamed, removed or added.
-
-### Value
-
-Those classes/interface were removed :
-
-* AbstractValue
-* BinaryValue
-* StringValue
-
-They are all replaced by a single class, *Value*, that is not anymore parametered.
-
-We now have to use the *Value* class only. That is not a really big trouble, as everywhere you were using *Value<?>*, you just have to remove the *<?>*.
-
-Do not anymore use *new BinaryValue( byte[] )* or *new StringValue( String )*, just do *new Value( byte[] )* and *new Value( String )*.
-
-There are a few methods that has changed, like *getValues()* that now always returns a *String* (even for a *byte[]*, which will be dumped as a hexadecimal string). If you want to get the *byte[]* from the *Value*, use *getBytes()*.
-
-### Connection pool
-
-We have moved to *commons-pool* 2.5, which means there is some incompatibility with the previous pool configuration.
-
-Typically, when configuring a *LdapConnectionPool*, you have to pass a *PooledObjectFactory* instead of a *PoolableObjectFactory*.
diff --git a/content/api/news.mdtext b/content/api/news.mdtext
deleted file mode 100644
index 2e0c1ba..0000000
--- a/content/api/news.mdtext
+++ /dev/null
@@ -1,885 +0,0 @@
-# News
-<h2 class="news">Apache Directory LDAP API 2.0.1 released <em>posted on March 26th, 2020</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 2.0.1 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This is a bug fix release, which fixes some OSGi aspects and add a proper handling of the _TreeDelete_ control.
-
- <b>Bugs :</b>
- * [DIRAPI-354](https://issues.apache.org/jira/browse/DIRAPI-354) - java.lang.NoClassDefFoundError: org/apache/directory/api/i18n/I18n in osgi
-
-<b>Features:</b>
- * [DIRAPI-353](https://issues.apache.org/jira/browse/DIRAPI-353) - Automatic-Module-Name need to be added to jar files
-
-
-Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 2.0.0 released <em>posted on November 13th, 2019</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 2.0.0 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This is the first GA version of the Apache LDAP API 2.0 ! It fixes an important bug in the connection management when unbinding and a coiuple of other issues :
-
- <b>Bugs :</b>
-
- * [DIRAPI-342](https://issues.apache.org/jira/browse/DIRAPI-342) - Unbind breaks connection
- * [DIRAPI-349](https://issues.apache.org/jira/browse/DIRAPI-349) - DN with hex values aren't parsed properly when not schema aware
-
-<b>Improvement :</b>
- * [DIRAPI-344](https://issues.apache.org/jira/browse/DIRAPI-344) - Allow a LDIF entry loading to be accepted when the SchemaManager is in relaxed mode
-
-
-Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 2.0.0.AM4 released <em>posted on June 9th, 2019</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 2.0.0.AM4 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-
-It fixes an important race condition (when closing a session, and re-binding it immediately, there might be some cancelled operations). We also benefited from a *MINA* release (2.1.3) which fixes a 100% CPU usage in some corner case. A couple of other minor issues have also been fixed (DIRAPI-343 and DIRAPI-328).
-
-Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
-
-
-# News
-<h2 class="news">Apache Directory LDAP API 2.0.0.AM3 released <em>posted on May 15th, 2019</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 2.0.0.AM3 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-It contains many fixes (37) and is needed to be able to release ApacheDS and Studio, which contains many important fixes themselves. There are some remaining issues to be fixed, but at this point, we need a release since the last one was cut 8 months ago...
-
-Here is the list of fixed issues:
-
-<b>Bugs :</b>
-
- * [DIRAPI-109](https://issues.apache.org/jira/browse/DIRAPI-109) - Attribute values should be byte[]
- * [DIRAPI-117](https://issues.apache.org/jira/browse/DIRAPI-117) - Refactor schema packages to decouple various aspects
- * [DIRAPI-162](https://issues.apache.org/jira/browse/DIRAPI-162) - The CachingNormalizer class does not cache anything
- * [DIRAPI-239](https://issues.apache.org/jira/browse/DIRAPI-239) - Client API exposes implementation classes of common-pools
- * [DIRAPI-271](https://issues.apache.org/jira/browse/DIRAPI-271) - Multi-valued RDN should allow AVAs with same attribute
- * [DIRAPI-300](https://issues.apache.org/jira/browse/DIRAPI-300) - Weird batchResponse when batchRequest contains grammar error
- * [DIRAPI-301](https://issues.apache.org/jira/browse/DIRAPI-301) - Ldaps connection trusts all certificates
- * [DIRAPI-302](https://issues.apache.org/jira/browse/DIRAPI-302) - DefaultAttribute NPE
- * [DIRAPI-303](https://issues.apache.org/jira/browse/DIRAPI-303) - If and else-if branches has the same condition
- * [DIRAPI-305](https://issues.apache.org/jira/browse/DIRAPI-305) - The SyncInfoValue element is not a control
- * [DIRAPI-309](https://issues.apache.org/jira/browse/DIRAPI-309) - NoD extended operation is not properly implemented
- * [DIRAPI-314](https://issues.apache.org/jira/browse/DIRAPI-314) - StartTLS operation is not correctly handled
- * [DIRAPI-317](https://issues.apache.org/jira/browse/DIRAPI-317) - Non thread-safe tests could lead to errors while running them
- * [DIRAPI-321](https://issues.apache.org/jira/browse/DIRAPI-321) - The ExtendedResponse message does not carry any value when sent back
- * [DIRAPI-323](https://issues.apache.org/jira/browse/DIRAPI-323) - Decoding extended operations which require a value isn't enforcing the value to be present
- * [DIRAPI-326](https://issues.apache.org/jira/browse/DIRAPI-326) - Schema Import - ERR_13215_VALUE_EXPECT_STRING
- * [DIRAPI-332](https://issues.apache.org/jira/browse/DIRAPI-332) - Add missing hashcode method for Schema objects
- * [DIRAPI-336](https://issues.apache.org/jira/browse/DIRAPI-336) - GeneralizedTime issue with timezone when DST is applied
-
-
-<b>Improvements:</b>
-
- * [DIRAPI-99](https://issues.apache.org/jira/browse/DIRAPI-99) - Build CLI wrapper around the API
- * [DIRAPI-276](https://issues.apache.org/jira/browse/DIRAPI-276) - RDN normalization is under efficient
- * [DIRAPI-277](https://issues.apache.org/jira/browse/DIRAPI-277) - Update commons pool implementation Unassigned Resolved
- * [DIRAPI-310](https://issues.apache.org/jira/browse/DIRAPI-310) - We most certainly don't need a Queue in operation futures
- * [DIRAPI-311](https://issues.apache.org/jira/browse/DIRAPI-311) - Add RFC 5805 extended operation support
- * [DIRAPI-312](https://issues.apache.org/jira/browse/DIRAPI-312) - Add an explaination after the log error and message numbers
- * [DIRAPI-315](https://issues.apache.org/jira/browse/DIRAPI-315) - Create a faster Schema parser
- * [DIRAPI-322](https://issues.apache.org/jira/browse/DIRAPI-322) - Use a TLS buffer to encode requests and responses
- * [DIRAPI-325](https://issues.apache.org/jira/browse/DIRAPI-325) - The Asn1Decoder class is not stateless
- * [DIRAPI-330](https://issues.apache.org/jira/browse/DIRAPI-330) - Improve TLS handshake error handling
- * [DIRAPI-331](https://issues.apache.org/jira/browse/DIRAPI-331) - Remove the Decorators
- * [DIRAPI-338](https://issues.apache.org/jira/browse/DIRAPI-338) - Implement RFC 4525
- * [DIRAPI-340](https://issues.apache.org/jira/browse/DIRAPI-340) - uniqueMemberComparator does not compare DN properly
-
-
-<b>Features:</b>
-
- * [DIRAPI-306](https://issues.apache.org/jira/browse/DIRAPI-306) - Add a Control[] parameter in operations, like what we have for lookup()
-
-
-<b>Tasks:</b>
-
- * [DIRAPI-74](https://issues.apache.org/jira/browse/DIRAPI-74) - Complete the API documentation
- * [DIRAPI-304](https://issues.apache.org/jira/browse/DIRAPI-304) - Add support for the Microsoft AD extended control Policy Hints (1.2.840.113556.1.4.2239)
-
-<b>Dependency updates:</b>
-
- * [DIRAPI-313](https://issues.apache.org/jira/browse/DIRAPI-313) - SCM Pointing to SVN instead of GitBox
- * [DIRAPI-324](https://issues.apache.org/jira/browse/DIRAPI-324) - commons-lang and commons-collections need to be updated to most recent versions
- * [DIRAPI-333](https://issues.apache.org/jira/browse/DIRAPI-333) - Switch to Junit 5
-
-Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.3 released <em>posted on April 19th, 2019</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.3 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This is a bug fix release that fixes an issue when using _MINA 2.1.1_ version: a _SSL/TLS_ connection would stall because we were waiting on an event that _MINA 2.1.1_ would never produced.
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 2.0.0.AM2 released <em>posted on September 3rd, 2018</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 2.0.0.AM2 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This is a bug fix release that address a performance issue with the schema: All the SchemaObjects had their hashcode set to 0, which made it
-slow to fetch from a Map or a Set. That impacted Studio startup, making it slow when a user has several connections.
-
-A couple of other issues have also been fixed.
-
-Here are the associated JIRA tickets :
-
- * [DIRAPI-318](https://issues.apache.org/jira/browse/DIRAPI-318) - Schema elements HashCode are not computed at all
- * [DIRAPI-319](https://issues.apache.org/jira/browse/DIRAPI-319) - The RestrictedByItem class stores elements in a Set, expecting it to be ordered.
- * [DIRAPI-291](https://issues.apache.org/jira/browse/DIRAPI-291) - The Immutable schema object can't be used
-
-Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
-
-# CVE-2018-1337: Plaintext Password Disclosure in Secured Channel
-
-The Apache LDAP API 1.0.2 that has just been released fix a [critical security issue](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1337): A bug in the way the SSL Filter was setup made it possible for another thread to use the connection before the TLS layer has been established, if the connection has already been used and put back in a pool of connections, leading to leaking any information contained in this request (including the credentials when sending a BIND request)
-
-
-We urge you to switch to this version.
-
-Downloads are available [here](downloads-1.html)
-
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.2 released <em>posted on June 6st, 2018</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.2 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Two security issues has been fixed :
-
-* A LDAPS race condition, where some clear text message could be sent over the wire, when using a connection pool
-
-This is a critical issue, and we urge you to upgrade to **Apache LDAP API 1.0.2** if you were using a previous version.
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.1 released <em>posted on May 19th, 2018</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.1 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Two security issues has been fixed :
-
-* A LDAPS race condition, where some clear text message could be sent over the wire, when using a connection pool
-* A StartTLS issue, where the establishmenent of the secured channel can't be made, and the connection is dropped
-
-Those are two critical issues, and we urge you to upgrade to **Apache LDAP API 1.0.1** if you were using a previous version.
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0 released <em>posted on June 7th, 2017</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0 final of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-One critical issue has been fixed :
-
-<b>Bug :</b>
-
- * [DIRAPI-227](https://issues.apache.org/jira/browse/DIRAPI-227) - Bind user dn and password sent in clear after receiving PROTOCOL_ERROR during ldaps connection
-
-Some fixes have also been applied in the syntex-checkers, which are now immutable.
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-RC2 released <em>posted on November 2nd, 2016</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-RC2 of the Apache Directory LDAP API, the second release candidate before the GA.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here is the list of fixed issues :
-
-<b>Bugs :</b>
-
- * [DIRAPI-285](https://issues.apache.org/jira/browse/DIRAPI-285) - ModifyPassword extended operation incorrectly expects value in ModifyResponse
- * [DIRAPI-284](https://issues.apache.org/jira/browse/DIRAPI-284) - DateUtils throws an exception for certain timestamps
- * [DIRAPI-279](https://issues.apache.org/jira/browse/DIRAPI-279) - We are using hashcode over a set in some tests, this is not reliable
- * [DIRAPI-154](https://issues.apache.org/jira/browse/DIRAPI-154) - Implement "online" OpenLDAP schema parsing in DefaultSchemaLoader
-
-<b>Improvements :</b>
-
- * [DIRAPI-283](https://issues.apache.org/jira/browse/DIRAPI-283) - We don't need to parse the DN when storing a name in the LDAP requests
- * [DIRAPI-207](https://issues.apache.org/jira/browse/DIRAPI-207) - Expose the underlying socket config
-
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-RC1 released <em>posted on June 17th, 2016</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-RC1 of the Apache Directory LDAP API, the first release candidate before the GA.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here is the list of fixed issues and added features :
-
-<b>Bugs :</b>
-
- * [DIRAPI-243](https://issues.apache.org/jira/browse/DIRAPI-243) - Cannot get AttributeType from Attribute
- * [DIRAPI-244](https://issues.apache.org/jira/browse/DIRAPI-244) - Error in loading schema
- * [DIRAPI-249](https://issues.apache.org/jira/browse/DIRAPI-249) - Performance issue LDAP API 1.0.0-M31
- * [DIRAPI-265](https://issues.apache.org/jira/browse/DIRAPI-265) - Deserialized Dn loses bytes field resulting in null dn, treated as Root DSE when encoded in ModifyRequests
- * [DIRAPI-266](https://issues.apache.org/jira/browse/DIRAPI-266) - ResultCodeEnum 'NO_SUCH_OBJECT' should have message 'noSuchObject'
- * [DIRAPI-273](https://issues.apache.org/jira/browse/DIRAPI-273) - api-ldap-net-mina bundle remains in STARTING mode
- * [DIRAPI-274](https://issues.apache.org/jira/browse/DIRAPI-274) - The AttributeTypeHolder.toLdif method does not convert the m-usage Attribute correctly
- * [DIRAPI-275](https://issues.apache.org/jira/browse/DIRAPI-275) - Many AttributeType are defined with the wrong m-usage
- * [DIRAPI-280](https://issues.apache.org/jira/browse/DIRAPI-280) - The LdapNetworkConnection.getTimeout() method is wrong
- * [DIRAPI-245](https://issues.apache.org/jira/browse/DIRAPI-245) - LdifUtils.convertToLdif(LdifEntry, int) does not honor the 'length' parameter fully
- * [DIRAPI-258](https://issues.apache.org/jira/browse/DIRAPI-258) - Add support for the Microsoft LDAP server show deleted objects control
- * [DIRAPI-260](https://issues.apache.org/jira/browse/DIRAPI-260) - OID can't process nodes which are bigger than a long
- * [DIRAPI-261](https://issues.apache.org/jira/browse/DIRAPI-261) - OID don't encode correctly joint-iso-itu-t arcs
- * [DIRAPI-262](https://issues.apache.org/jira/browse/DIRAPI-262) - misleading message "The matched Dn should not be set when the result code is one of..."
-
-<b>Improvements :</b>
-
- * [DIRAPI-282](https://issues.apache.org/jira/browse/DIRAPI-282) - Detection of timeout in cursor.next()
-
-
-<b>New Features :</b>
-
- * [DIRAPI-269](https://issues.apache.org/jira/browse/DIRAPI-269) - Add support for modular crypt format password
-
-
-<b>Tasks :</b>
-
- * [DIRAPI-270](https://issues.apache.org/jira/browse/DIRAPI-270) - Remove the dependency on commons.io
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M33 released <em>posted on December 21th, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M33 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-A bug fix releases. We have an improved version of the Ldif anonymizer that handles Change records, and a few other fixes (OID handling...)
-
-
-Here is the list of fixed issues and added features :
-
-<b>Bugs :</b>
-
- * [DIRAPI-245](https://issues.apache.org/jira/browse/DIRAPI-245) - LdifUtils.convertToLdif(LdifEntry, int) does not honor the 'length' parameter fully
- * [DIRAPI-258](https://issues.apache.org/jira/browse/DIRAPI-258) - Add support for the Microsoft LDAP server show deleted objects control
- * [DIRAPI-260](https://issues.apache.org/jira/browse/DIRAPI-260) - OID can't process nodes which are bigger than a long
- * [DIRAPI-261](https://issues.apache.org/jira/browse/DIRAPI-261) - OID don't encode correctly joint-iso-itu-t arcs
- * [DIRAPI-262](https://issues.apache.org/jira/browse/DIRAPI-262) - misleading message "The matched Dn should not be set when the result code is one of..."
-
-<b>Task :</b>
-
- * [DIRAPI-257](https://issues.apache.org/jira/browse/DIRAPI-257) - Fix usage of default charset|locale|timezone and enable forbiddenapis check
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M32 released <em>posted on October 19th, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M32 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Another bug fix release, with some huge modifications in the way we handle Values. The SchemaManager is now propagated down to the Ava and Value classes, which causes many tests to have been fixed.
-
-We have added a LdifAnonymizer that can swallow a Ldif File and replace the values with a random text.
-
-We also have spent some time fixing many checkstyle violations.
-
-Here is the list of fixed issues and added features :
-
-<b>Bugs :</b>
-
- * [DIRAPI-90](https://issues.apache.org/jira/browse/DIRAPI-90) - IllegalArgumentException: factory thrown when creating LdapNetworkConnection inside OSGi
- * [DIRAPI-114](https://issues.apache.org/jira/browse/DIRAPI-114) - Reconsider interfaces and base classes for Registries
- * [DIRAPI-118](https://issues.apache.org/jira/browse/DIRAPI-118) - Use JUnit TemporaryFolder Rule
- * [DIRAPI-219](https://issues.apache.org/jira/browse/DIRAPI-219) - DateUtils.toGeneralizedTime does not work with some Locales
- * [DIRAPI-241](https://issues.apache.org/jira/browse/DIRAPI-241) - new GeneralizedTime(String) fails for fraction close to one
- * [DIRAPI-246](https://issues.apache.org/jira/browse/DIRAPI-246) - Error in parsing LDIF file
- * [DIRAPI-252](https://issues.apache.org/jira/browse/DIRAPI-252) - Compiling warnings while api-all is in dependencies
- * [DIRAPI-253](https://issues.apache.org/jira/browse/DIRAPI-253) - The AVA class is not handling correctly the values wrt the SchemaManager
- * [DIRAPI-254](https://issues.apache.org/jira/browse/DIRAPI-254) - Value<?> don't have a apply(AttributeType) method
- * [DIRAPI-255](https://issues.apache.org/jira/browse/DIRAPI-255) - An escaped space at the end of a RDN will not be kept due to a bug in the ComplexDNParser
-
-<b>Task :</b>
-
- * [DIRAPI-251](https://issues.apache.org/jira/browse/DIRAPI-251) - Fix violations of coding standards and enable checkstyle check
-
-<b>New Feature :</b>
-
- * [DIRAPI-250](https://issues.apache.org/jira/browse/DIRAPI-250) - Add a way to Anonymize a LDIF file
-
-<b>Question :</b>
-
- * [DIRAPI-191](https://issues.apache.org/jira/browse/DIRAPI-191) - How to get attributes list according to objectClass
-
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M31 released <em>posted on July 5th, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M31 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This release fixes a security vulnerability, [CVE-2015-3250](http://cve.mitre.org/cgi-bin/cvename.cgi?name=2015-3250).
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M30 released <em>posted on May 2nd, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M30 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Another bug fix release, with some critical fixes in the connection handling, and some schema modifications.
-
-Here is the list of fixed issues :
-
- <b>Bugs :</b>
-
- * [DIRAPI-236](https://issues.apache.org/jira/browse/DIRAPI-236) - Unbind during search hangs
- * [DIRAPI-234](https://issues.apache.org/jira/browse/DIRAPI-234) - ClassLoading issues with two classes in different packages
- * [DIRAPI-231](https://issues.apache.org/jira/browse/DIRAPI-231) - Wrong namespace in generated response
- * [DIRAPI-230](https://issues.apache.org/jira/browse/DIRAPI-230) - Connection to invalid host blocks for 30 seconds
- * [DIRAPI-229](https://issues.apache.org/jira/browse/DIRAPI-229) - The LdifParser lowrcase attributeType
- * [DIRAPI-196](https://issues.apache.org/jira/browse/DIRAPI-196) - Always throw error ERR_04486_VALUE_ALREADY_EXISTS from org.apache.directory.api.ldap.model.entry.DefaultAttribute against AD's attribute dSCorePropagationData when do search operation.
-
-
-<b>Improvements :</b>
-
- * [DIRAPI-233](https://issues.apache.org/jira/browse/DIRAPI-233) - OSGi: Import package range for slf4j
-
-
-<b>Tasks :</b>
-
- * [DIRAPI-235](https://issues.apache.org/jira/browse/DIRAPI-235) - Wrong attributeType names
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M29 released <em>posted on April 2nd, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M29 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Another bug fix release, with a few new fonctionalities being added :
-- a LDIF anonymizer
-- VLV support
-
-Here is the list of fixed issues :
-
-
- <b>Bugs :</b>
-
- * [DIRAPI-100](https://issues.apache.org/jira/browse/DIRAPI-100) Implement the GSSAPI SASL Bind mechanism
- * [DIRAPI-107](https://issues.apache.org/jira/browse/DIRAPI-107) LdifReader missing attributes
- * [DIRAPI-219](https://issues.apache.org/jira/browse/DIRAPI-219) DateUtils.toGeneralizedTime does not work with some Locales
- * [DIRAPI-220](https://issues.apache.org/jira/browse/DIRAPI-220) The FilterEncoder.encodeFilterValue() does not accept escaped hex values like \2A
- * [DIRAPI-223](https://issues.apache.org/jira/browse/DIRAPI-223) The SchemaObject extension key should be case-insensitive
- * [DIRAPI-226](https://issues.apache.org/jira/browse/DIRAPI-226) Injecting non pure ASCII values into a HR attribute read from a LDIF does not work
-
-<b>Improvements :</b>
-
- * [DIRAPI46](https://issues.apache.org/jira/browse/DIRAPI-46) Add a generic schema loader which looks for schema elements under the value of the 'subschemaSubentry' of the RootDSE
- * [DIRAPI-225](https://issues.apache.org/jira/browse/DIRAPI-225) Add a LDIF anonymizer that takes a LDIF file and replace the value with random text
-
-
-<b>New features :</b>
-
- * [DIRAPI-165](https://issues.apache.org/jira/browse/DIRAPI-165) Add a FilterBuillder
- * [DIRAPI-224](https://issues.apache.org/jira/browse/DIRAPI-224) Add support for the VLV control
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M28 released <em>posted on January 15th, 2015</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M28 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This release fixes some critical issues in the LDAP Pool under heavy load, and improved a few other areas.
-
-
-<b>Bugs : </b>
-
- * [DIRAPI-217](https://issues.apache.org/jira/browse/DIRAPI-217) Under heavy load, the Connection Pool will not provide valid connections
- * [DIRAPI-174](https://issues.apache.org/jira/browse/DIRAPI-193) There is no future associated with operation message ID 333, perhaps the operation would have been completed
- * [DIRAPI-184](https://issues.apache.org/jira/browse/DIRAPI-155) Chain ANTLR exceptions to ParserException
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M27 released <em>posted on December 29th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M27 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This release included a new Control : *proxied-authz* [RFC-4370](https://www.rfc-editor.org/rfc/rfc4370.txt), and a major cleanup of the OSGi Manifests.
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M26 released <em>posted on November 22th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M26 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-This release is a security fix release : SSLv3 has been disabled. Another bug has also been fixed in the POM files, for those using the API in an OSGi environment
-
-<b>Bugs : </b>
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M25 released <em>posted on November 11th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M25 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M25:
-
-<b>Bugs : </b>
-
- * [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) Add Control support for RFC 2891 - LDAP Control Extension for Server Side Sorting of Search Results http://www.faqs.org/rfcs/rfc2891.html
- * [DIRAPI-174](https://issues.apache.org/jira/browse/DIRAPI-174) LdifReader should provide errors wih line number
- * [DIRAPI-184](https://issues.apache.org/jira/browse/DIRAPI-184) Supply one method in SearchCursor to judge it has element or not.
- * [DIRAPI-201](https://issues.apache.org/jira/browse/DIRAPI-201) Inconsistent Import-Package in org.apache.directory.api ldap.model
- * [DIRAPI-205](https://issues.apache.org/jira/browse/DIRAPI-205) AliasDerefMode can't work for API when alias entries can be search out and Server is Sun Directory Server
- * [DIRAPI-206](https://issues.apache.org/jira/browse/DIRAPI-206) BindRequest logs exception on valid call to setter
- * [DIRAPI-208](https://issues.apache.org/jira/browse/DIRAPI-208) The Connection Pool is a bit too aggressive when it comes to validate connections
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M24 released <em>posted on August 2th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M24 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M24:
-
-<b>Bugs : </b>
-
- * [DIRAPI-197](https://issues.apache.org/jira/browse/DIRAPI-197) - When dumping a BindRequest, the password is exposed
- * [DIRAPI-198](https://issues.apache.org/jira/browse/DIRAPI-198) - LdapConnectionTemplate closes connection after authentication rather than returning to the pool
- * [DIRAPI-199](https://issues.apache.org/jira/browse/DIRAPI-199) - LdapConnectionPool.getUnboundConnection is an oxymoron
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M23 released <em>posted on July 4th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M23 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M23:
-
-<b>Bugs : </b>
-
- * [DIRAPI-190](https://issues.apache.org/jira/browse/DIRAPI-190) - Search request time limit should override connection timeout
- * [DIRAPI-192](https://issues.apache.org/jira/browse/DIRAPI-192) - Rdn.escapeValue() should not escape unicode characters
-
-<b>Improvements :</b>
-
- * [DIRAPI-168](https://issues.apache.org/jira/browse/DIRAPI-168) - Create an LdapConnectionFactory that is not pooled to create LdapConnection objects for an LdapConnectionConfig
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-# News
-<h2 class="news">Apache Directory LDAP API 1.0.0-M22 released <em>posted on April 22th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M22 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M22:
-
-<b>Bugs : </b>
-
- * [DIRAPI-156](https://issues.apache.org/jira/browse/DIRAPI-156) - LdapNetworkConnection.addSchema doesn't register attribute types
- * [DIRAPI-186](https://issues.apache.org/jira/browse/DIRAPI-186) - Inconsistent code definition in ResultCodeEnum.
- * [DIRAPI-188](https://issues.apache.org/jira/browse/DIRAPI-188) - Length encoding is not using the correct method in some of the codecs
-
-<b>Improvements :</b>
-
- * [DIRAPI-181](https://issues.apache.org/jira/browse/DIRAPI-181) - Add the StartTLS extended operation
- * [DIRAPI-187](https://issues.apache.org/jira/browse/DIRAPI-187) - Make the Entry class a fluent API
-
-<b>New Feature : </b>
-
- * [DIRAPI-164](https://issues.apache.org/jira/browse/DIRAPI-164) - Add fluent entry builder to AddRequest
- * [DIRAPI-183](https://issues.apache.org/jira/browse/DIRAPI-183) - Add support for the WhoAmI extended operation
-
-<b>Wish : </b>
-
- * [DIRAPI-189](https://issues.apache.org/jira/browse/DIRAPI-189) - Support DirSync control
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M21 released <em>posted on March 13th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M21 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M21:
-
-<b>Bugs : </b>
-
- * [DIRAPI-126](https://issues.apache.org/jira/browse/DIRAPI-126) - Timeout Exception on bind while pwdExpireWarning period
- * [DIRAPI-128](https://issues.apache.org/jira/browse/DIRAPI-128) - FilterEncoder.format() should accept String varargs
- * [DIRAPI-152](https://issues.apache.org/jira/browse/DIRAPI-152) - Attribute.toString() method appends newline
- * [DIRAPI-157](https://issues.apache.org/jira/browse/DIRAPI-157) - Calling the add() method with a multi-value attribute and a null value throws an NPE
- * [DIRAPI-160](https://issues.apache.org/jira/browse/DIRAPI-160) - DSML engine is not setting the 'requestID' value in BatchResponse when output stream instance is provided
- * [DIRAPI-161](https://issues.apache.org/jira/browse/DIRAPI-161) - Timeout does not apply to connect method
- * [DIRAPI-173](https://issues.apache.org/jira/browse/DIRAPI-173) - When using TLS and multiple binds, LdapNetworkConnection attempts to start TLS multiple times
- * [DIRAPI-176](https://issues.apache.org/jira/browse/DIRAPI-176) - LDIFReader does not accept empty DN (rootDSE)
-
-
-<b>Improvements :</b>
-
- * [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) - Add Control support for RFC 2891 - LDAP Control Extension for Server Side Sorting of Search Results http://www.faqs.org/rfcs/rfc2891.html
- * [DIRAPI-153](https://issues.apache.org/jira/browse/DIRAPI-153) - Implement efficient reuse of schema loading
- * [DIRAPI-159](https://issues.apache.org/jira/browse/DIRAPI-159) - Add a method to set a SchemaManager in LdapConnection
- * [DIRAPI-169](https://issues.apache.org/jira/browse/DIRAPI-169) - Formalize the contract of PasswordPolicyResponse by stating that -1 is returned if no value is set.
- * [DIRAPI-170](https://issues.apache.org/jira/browse/DIRAPI-170) - Allow StandaloneLdapApiServices to be configured without system properties
- * [DIRAPI-175](https://issues.apache.org/jira/browse/DIRAPI-175) - LdifReader should handle empty
-
-<b>New Feature</b>
-
- * [DIRAPI-143](https://issues.apache.org/jira/browse/DIRAPI-143) - Add Controls to support server-side sorting
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M20 released <em>posted on August 18th, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M20 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M20:
-
-<b>Bugs</b>
-
- * [DIRAPI-14](https://issues.apache.org/jira/browse/DIRAPI-14) - We can't inject entries with attributes containing a null value
- * [DIRAPI-98](https://issues.apache.org/jira/browse/DIRAPI-98) - Add generic support for Extended operations
- * [DIRAPI-120](https://issues.apache.org/jira/browse/DIRAPI-120) - Deleted an attribute leads to an error
- * [DIRAPI-148](https://issues.apache.org/jira/browse/DIRAPI-148) - We can't inject entries with attributes containing a null value
- * [DIRAPI-151](https://issues.apache.org/jira/browse/DIRAPI-151) - Result codes from extended operations are lost
-
-
-<b>New Feature</b>
-
- * [DIRAPI-129](https://issues.apache.org/jira/browse/DIRAPI-129) - Add support for PwdModify extended operation
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M19 released <em>posted on July 1st, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M19 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M19:
-
- * [DIRAPI-148](https://issues.apache.org/jira/browse/DIRAPI-148) We can't inject entries with attributes containing a null value
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M18 released <em>posted on June 25th, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M18 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M18:
-
- * [DIRAPI-112](https://issues.apache.org/jira/browse/DIRAPI-112) - Review Package Names
- * [DIRAPI-130](https://issues.apache.org/jira/browse/DIRAPI-130) - The extended responses are not decoded into their respective type
- * [DIRAPI-132](https://issues.apache.org/jira/browse/DIRAPI-132) - Add support for the StartTLS operation
- * [DIRAPI-133](https://issues.apache.org/jira/browse/DIRAPI-133) - Correlate an extendedResponse with its associated request, when we don't have a responseName
- * [DIRAPI-139](https://issues.apache.org/jira/browse/DIRAPI-139) - o.a.d.api.ldap.codec.api.LdapEncoder should log encoded PDU via DEBUG
- * [DIRAPI-140](https://issues.apache.org/jira/browse/DIRAPI-140) - Test ClientSearchRequestTest.testSubDn() fails
- * [DIRAPI-147](https://issues.apache.org/jira/browse/DIRAPI-147) - LdifEntry equals method does not compare entry attributes when changetype is None
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M17 released <em>posted on May 2nd, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M17 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M17:
-
- * [DIRAPI-135](https://issues.apache.org/jira/browse/DIRAPI-135) - The connectiosn may be invalid when we get it from the pool
- * [DIRAPI-103](https://issues.apache.org/jira/browse/DIRAPI-103) - the PLAIN SASL BindRequest is not supported
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M16 released <em>posted on March 3rd, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M16 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M16:
-
-* [DIRAPI-119](https://issues.apache.org/jira/browse/DIRAPI-119) - Some NPE when sending some request with lacking data
-
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M15 released <em>posted on January 29th, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M15 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M15:
-
-* [DIRAPI-112](https://issues.apache.org/jira/browse/DIRAPI-112) - Review Package Names
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M14 released <em>posted on January 7th, 2013</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M15 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M14:
-
-* [DIRAPI-89](https://issues.apache.org/jira/browse/DIRAPI-89) - EntryCursorImpl loops forever in next() when using AD Server with referrals
-* [DIRAPI-92](https://issues.apache.org/jira/browse/DIRAPI-92) - LdapConnectionPool should extend GenericObjectPool<LdapConnection>
-* [DIRAPI-94](https://issues.apache.org/jira/browse/DIRAPI-94) - Random failure of ClientAbandonRequestTest
-
-**WARNING:** An important **package renaming** took place in this milestone. The previously named "**_org.apache.directory.shared_**" package has been renamed "**_org.apache.directory.api_**". If you were using the Apache Directory LDAP API before, please **make sure to update your own code** to match this important change.
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
-
-
-<h2 class="news">Apache Directory LDAP API 1.0.0-M13 released <em>posted on October 12th, 2012</em></h2>
-
-The Apache Directory Team is proud to announce the availability of version 1.0.0-M13 of the Apache Directory LDAP API.
-
-The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
-
-This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
-
-It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
-
-Here are the release note for Apache Directory LDAP API 1.0.0-M13:
-
-* [DIRAPI-87](https://issues.apache.org/jira/browse/DIRAPI-87) - The search() method does not return the same result if it's done with a SearchRequest or with parameters
-* [DIRAPI-88](https://issues.apache.org/jira/browse/DIRAPI-88) - RDN parsing fails with values containing a # character followed by other characters
-* [DIRAPI-135](https://issues.apache.org/jira/browse/DIRAPI-135) - LdapNetworkConnection should be thread-safe
-* [DIRAPI-136](https://issues.apache.org/jira/browse/DIRAPI-136) - NPE in AntlrSubtreeSpecificationParser when initialized with an empty schema manager
-* [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) - Logically incorrect filter construction while parsing DSML search request
-* [DIRAPI-138](https://issues.apache.org/jira/browse/DIRAPI-138) - Cannot transform SearchRequestDsml object to DSML format
-
-Feel free to experiment, we highly appreciate your feedback !
-
-Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
diff --git a/content/api/user-guide.mdtext b/content/api/user-guide.mdtext
deleted file mode 100644
index 0940594..0000000
--- a/content/api/user-guide.mdtext
+++ /dev/null
@@ -1,162 +0,0 @@
-Title: Users Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Users guide
-
-<DIV class="note" markdown="1">
-<strong>Work in progress</strong>
-Pages with a (e) at the end of the title are empty pages.
-Pages with a (...) at the end of the title are not yet completed.
-Other pages are finished (but may be reviewed).
-</DIV>
-
-This document is about the LDAP API, developed at the Apache Software Foundation. It's a replacement for outdated Java/LDAP libraries like ([jLdap](http://www.openldap.org/jldap/), [Mozilla LDAP SDK](http://www.mozilla.org/directory/) and [JNDI](http://www.oracle.com/technetwork/java/jndi/index.html)).
-
-## About this guide
-
-Getting started. Learn how to use the LDAP API, connect to various LDAP servers, manipulate the data within a directory.
-
-### Audience
-
-This guide is for anyone wanting to learn how to use the LDAP API. If you plan to use the API, maybe even for your first LDAP experience, you'll find information here to help. Right now we've got pretty good coverage of the basic tasks. Later, we'll add more advanced use cases so keep checking back. To learn about advanced options (and many other things) go to the [Advanced User's Guide].
-
-### Feedback welcome!
-
-We are interested in improving the content of this guide. Feel free to provide feedback:
-!email.png! [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
-
-### Table of contents
-
-* [1 - Introduction](user-guide/1-introduction.html)
- * [1.1 - Java and LDAP](user-guide/1.1-java-and-ldap.html)
- * [1.2 - LDAP in a few words](user-guide/1.2-ldap-in-a-few-words.html)
- * [1.3 - The Apache LDAP API rationale](user-guide/1.3-apache-ldap-api-rational.html)
- * [1.4 - Preparation to code](user-guide/1.4-preparation-to-code.html)
-
-* [2 - Basic LDAP API usage (...)](user-guide/2-basic-ldap-api-usage.html)
- * [2.1 - Connection and disconnection](user-guide/2.1-connection-disconnection.html)
- * [2.2 - Binding and unbinding](user-guide/2.2-binding-unbinding.html)
- * [2.3 - Searching (...)](user-guide/2.3-searching.html)
- * [2.4 - Adding entries](user-guide/2.4-adding.html)
- * [2.5 - Deleting entries](user-guide/2.5-deleting.html)
- * [2.6 - Modifying entries](user-guide/2.6-modifying.html)
- * [2.7 - Moving an renaming entries (e)](user-guide/2.7-moving-renaming.html)
- * [2.8 - Comparing entries (e)](user-guide/2.8-comparing.html)
- * [2.9 - Exception management (...)](user-guide/2.9-exception-management.html)
- * [2.10 - The LdapConnectionTemplate](user-guide/2.10-ldap-connection-template.html)
- * [2.11 - The FilterBuilder](user-guide/2.11-filter-builder.html)
-
-* [3 - Advanced LDAP API usage (...)](user-guide/3-advanced-ldap-api-usage.html)
-
- * [3.1 - Controls](user-guide/3.1-controls.html)
- * [3.2 - Extended operations (e)](user-guide/3.2-extended-operations.html)
- * [3.3 - Referrals (e)](user-guide/3.3-referrals.html)
- * [3.4 - Aliases (e)](user-guide/3.4-aliases.html)
- * [3.5 - LDIF, DSML (...)](user-guide/3.5-ldif-dsml.html)
- * [3.6 - Abandonning an operation (e)](user-guide/3.6-abandonning.html)
- * [3.7 - Server informations (e)](user-guide/3.7-server-informations.html)
-
-* [4 - SchemaManagement (...)](user-guide/4-schema-management.html)
-
- * [4.1 - Schema](user-guide/4.1-schema.html)
- * [4.2 - SchemaManager](user-guide/4.2-schema-manager.html)
- * [4.2.1 - SchemaObjects](user-guide/4.2.1-schema-objects.html)
- * [4.2.1.1 - AttributeTypes](user-guide/4.2.1.1-attribute-types.html)
- * [4.2.1.2 - ObjectClasses](user-guide/4.2.1.2-object-classes.html)
- * [4.2.1.3 - Syntaxes](user-guide/4.2.1.3-syntaxes.html)
- * [4.2.1.4 - MatchingRules](user-guide/4.2.1.4-matching-rules.html)
- * [4.2.1.5 - DITContentRules](user-guide/4.2.1.5-dit-content-rules.html)
- * [4.2.1.6 - DITStructureRules](user-guide/4.2.1.6-dit-structure-rules.html)
- * [4.2.1.7 - MatchingRuleUses](user-guide/4.2.1.7-matching-rule-uses.html)
- * [4.2.1.8 - NameForms](user-guide/4.2.1.8-name-forms.html)
- * [4.2.1.9 - ApacheDS Schema Elements](user-guide/4.2.1.9-apacheds-schema-elements.html)
- * [4.2.2 - Registries](user-guide/4.2.2-registries.html)
- * [4.2.3 - SchemaLoader](user-guide/4.2.3-schema-loader.html)
-
-* [5 - LDAP security (e)](user-guide/5-ldap-security.html)
-
- * [5.1 - LDAPS](user-guide/5.1-ldaps.html)
- * [5.2 - StartTLS (e)](user-guide/5.2-start-tls.html)
- * [5.3 - SASL Bind](user-guide/5.3-sasl-bind.html)
- * [5.4 - Password handling](user-guide/5.4-password-handling.html)
- * [5.5 - Certificates](user-guide/5.5-certificates.html)
- * [5.6 - ACI and ACLs (e)](user-guide/5.6-aci-and-acls.html)
-
-* [6 - LDAP data structures (...)](user-guide/6-ldap-data-structures.html)
-
- * [6.1 - AdministrativePoint (e)](user-guide/6.1-administrative-point.html)
- * [6.2 - AdministrativeRole (e)](user-guide/6.2-administrative-role.html)
- * [6.3 - Attribute](user-guide/6.3-attribute.html)
- * [6.4 - AttributeType (...)](user-guide/6.4-attribute-type.html)
- * [6.5 - Ava](user-guide/6.5-ava.html)
- * [6.6 - Csn](user-guide/6.6-csn.html)
- * [6.7 - Control (...)](user-guide/6.7-control.html)
- * [6.8 - Cursor (e)](user-guide/6.8-cursor.html)
- * [6.9 - Dn](user-guide/6.9-dn.html)
- * [6.10 - DITContentRule (e)](user-guide/6.10-dit-content-rule.html)
- * [6.11 - DITStructureRule (e)](user-guide/6.11-dit-structure-rule.html)
- * [6.12 - Entry](user-guide/6.12-entry.html)
- * [6.13 - ExprNode](user-guide/6.13-expr-node.html)
- * [6.14 - LdapComparator (e)](user-guide/6.14-ldap-comparator.html)
- * [6.15 - LdapResult](user-guide/6.15-ldap-result.html)
- * [6.16 - LdapSyntax (e)](user-guide/6.16-ldap-syntax.html)
- * [6.17 - LdapUrl (...)](user-guide/6.17-ldap-url.html)
- * [6.18 - LdifControl (e)](user-guide/6.18-ldif-control.html)
- * [6.19 - LdifEntry](user-guide/6.19-ldif-entry.html)
- * [6.20 - MatchingRule (e)](user-guide/6.20-matching-rule.html)
- * [6.21 - MatchingRuleUse (e)](user-guide/6.21-matching-rule-use.html)
- * [6.22 - Message (...)](user-guide/6.22-message.html)
- * [6.23 - Modification](user-guide/6.23-modification.html)
- * [6.24 - NameForm (e)](user-guide/6.24-name-form.html)
- * [6.25 - Normalizer (e)](user-guide/6.25-normalizer.html)
- * [6.26 - ObjectClass (e)](user-guide/6.26-object-class.html)
- * [6.27 - Oid](user-guide/6.27-oid.html)
- * [6.28 - Rdn](user-guide/6.28-rdn.html)
- * [6.29 - Referral (e)](user-guide/6.29-referral.html)
- * [6.30 - Refinment (e)](user-guide/6.30-refinment.html)
- * [6.31 - SchemaManager (e)](user-guide/6.31-schema-manager.html)
- * [6.32 - Subentry (e)](user-guide/6.32-subentry.html)
- * [6.33 - SubtreeSpecification (e)](user-guide/6.33-subtree-specification.html)
- * [6.34 - SyntaxChecker (e)](user-guide/6.34-syntax-checker.html)
- * [6.35 - Value](user-guide/6.35-value.html)
-
-* [7 - Requests and Responses (...)](user-guide/7-requests-responses.html)
-
- * [7.1 - AbandonRequest](user-guide/7.1-abandon-request.html)
- * [7.2 - AddRequest](user-guide/7.2-add-request.html)
- * [7.3 - AddResponse](user-guide/7.3-add-response.html)
- * [7.4 - BindRequest](user-guide/7.4-bind-request.html)
- * [7.5 - BindResponse](user-guide/7.5-bind-response.html)
- * [7.6 - CompareRequest](user-guide/7.6-compare-request.html)
- * [7.7 - CompareResponse](user-guide/7.7-compare-response.html)
- * [7.8 - DelRequest](user-guide/7.8-del-request.html)
- * [7.9 - DelResponse](user-guide/7.9-del-response.html)
- * [7.10 - ExtendedRequest](user-guide/7.10-extended-request.html)
- * [7.11 - ExtendedResponse](user-guide/7.11-extended-response.html)
- * [7.12 - IntermediateResponse](user-guide/7.12-intermediate-response.html)
- * [7.13 - ModDnRequest](user-guide/7.13-mod-dn-request.html)
- * [7.14 - ModDnResponse](user-guide/7.14-mod-dn-response.html)
- * [7.15 - ModifyRequest](user-guide/7.15-modify-request.html)
- * [7.16 - ModifyResponse](user-guide/7.16-modify-response.html)
- * [7.17 - SearchRequest](user-guide/7.17-search-request.html)
- * [7.18 - SearchResultDone](user-guide/7.18-search-result-done.html)
- * [7.19 - SearchResultEntry](user-guide/7.19-search-result-entry.html)
- * [7.20 - SearchResultReference](user-guide/7.20-search-result-reference.html)
- * [7.21 - UnbindRequest](user-guide/7.21-unbind-request.html)
-
-* [8 - LDAP related RFCs](user-guide/8-ldap-rfcs.html)
diff --git a/content/api/user-guide/1-introduction.mdtext b/content/api/user-guide/1-introduction.mdtext
deleted file mode 100644
index 8d573ea..0000000
--- a/content/api/user-guide/1-introduction.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 1 - Introduction
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 2-basic-ldap-api-usage.html
-NavNextText: 2 - Basic LDAP API Usage
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - Introduction
-
-This User Guide teaches developers how to use the Apache LDAP API. Throughout these documents, we have interspersed descriptions of features with snippets of code. These code samples are used by our integration tests as well.
-
-Hopefully there's enough here to get you started -- quickly. If you feel like improving this document or have questions / suggestions, please post to the Apache Directory LDAP API mailing list. All code and doc contributions are welcomed!
-
-## Contents
-
-* [1.1 - Java and LDAP](1.1-java-and-ldap.html)
-* [1.2 - LDAP in a few words](1.2-ldap-in-a-few-words.html)
-* [1.3 - The Apache LDAP API rationale](1.3-apache-ldap-api-rational.html)
-* [1.4 - Preparation to code](1.4-preparation-to-code.html)
-
diff --git a/content/api/user-guide/1.1-java-and-ldap.mdtext b/content/api/user-guide/1.1-java-and-ldap.mdtext
deleted file mode 100644
index 440c2e7..0000000
--- a/content/api/user-guide/1.1-java-and-ldap.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: 1.1 - Java and LDAP
-NavPrev: 1-introduction.html
-NavPrevText: 1 - Introduction
-NavUp: 1-introduction.html
-NavUpText: 1 - Introduction
-NavNext: 1.2-ldap-in-a-few-words.html
-NavNextText: 1.2 - LDAP in a few words
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1 - Java and LDAP
-Most developers will at some point need to learn how to communicate with an **LDAP** server. It should be a very simple technology to use but isn't because many aspects are not well known.
-
-Java is one of the most commonly used languages in the enterprise. Some call it the new **Cobol**!
-
-These facts mean it's necessary to communicate over **LDAP** using **Java**. This is why a convenient **API** is necessary, so we created this **API** to fill the necessary gaps.
-
-There are alternatives, like **JNDI**. But the alternatives aren't effective helping users cope with **LDAP**'s inherent complexities. **JNDI**'s semantics are very different from what's required for proper **LDAP** usage. For example:
-
-* **Bind** : used in **LDAP** to authenticate a user but creates an entry in **JNDI**
-* **Unbind** : closes the **LDAP** session in **LDAP** but deletes an entry in **JNDI**
-* **Compare **: is mapped to a search in **JNDI** while its proper usage is to compare to determine if a targeted attribute value matches a particular value inside an **LDAP** entry.
-* Various properties have to be set in **JNDI** in order to connect or tweak the **Search** operation, which is not convenient
-* **Attributes** are case sensitive by default in **JNDI** and not schema aware which is not compliant with LDAP standard.
-* **Name** in **JNDI** can't do a valid comparison in **JNDI**
-* **NamingEnumeration** must be explcitly closed in **JNDI**, and don't close automatically upon disconnect, which causes resource leakage to occur.
-
-Some of these same problems exist for the other **LDAP API**s. Other alternatives are no longer supported and/or lack a permissive license.
-
-All in all, writing applications to perform basic **LDAP** operations in **Java** is a painful task for most developers.
-
-Our target is to provide a better **API**, one that leads to correct and efficient usage of **LDAP** operation.
diff --git a/content/api/user-guide/1.2-ldap-in-a-few-words.mdtext b/content/api/user-guide/1.2-ldap-in-a-few-words.mdtext
deleted file mode 100644
index 2f9ce41..0000000
--- a/content/api/user-guide/1.2-ldap-in-a-few-words.mdtext
+++ /dev/null
@@ -1,49 +0,0 @@
-Title: 1.2 - LDAP in a few words
-NavPrev: 1.1-java-and-ldap.html
-NavPrevText: 1.1 - Java and LDAP
-NavUp: 1-introduction.html
-NavUpText: 1 - Introduction
-NavNext: 1.3-apache-ldap-api-rational.html
-NavNextText: 1.3 - The Apache LDAP API rationale
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2 - LDAP in a few words
-
-**LDAP** is not a new technlology. It has been around since the 90's to mitigate complexities inherent in **X.500** usage. Its name refers to **L**ightweight **D**irectory **A**ccess **P**rotocol. Soon after the first standard was issued, the first full *LDAP* server was created and X.500 became obsolete.
-
-We'll use the term **LDAP** to represent the protocol and **LDAP server** to represent the server that implements it.
-
-## Features
-The **LDAP** protocol provides access to entries stored in a **LDAP Server's** database. It provides the mechanism for fast searching and retrieval of entries. Its data structures are hierarchical, and uses a schema to manage the definition of data formats allowed across those entries.
-
-An **LDAP** client must first connect to a server and disconnect when finished. Some operations may be performed on the data itself, e.g. searches, modifications and deletions, along with a few others.
-
-**LDAP** servers are extensible, but they all use a common protocol providing access to the data in a way that isn't tied to a particular vendor's implementation.
-
-## Characteristics
-**LDAP** servers are fast for retrievals, having been designed specifically for this purpose. But modifications can be costly. These characteristics must be understood when writing applications that use an **LDAP** server for data storage.
-
-Each entry is associated with a location within its corresponding **D**irectory **I**nformation **T**ree, and we use what is known as a **D**istinguished **N**ame (or **Dn**) to describe this address. The base entry is known as the suffix. The suffix along with all entries beneath it are collectively known as the **DIT**.
-
-## Programming
-
-**LDAP** is a part of the **IT** landscape and so it's necessary to learn how to deal with it. **LDAP** servers are used to manage authentications, authorizations, demographic information about users and more. It's very likely that you will have to write some code to access data with **LDAP** at some point, and existing **API**s aren't quite up to the task. This **LDAP API** has been designed to simplify usage and ensure proper interaction with the server.
-
-## Going further
-
-This was a short introduction, there's more literature about **LDAP** on the web : [Wikipedia](http://en.wikipedia.org/wiki/LDAP) provides a good starting point.
diff --git a/content/api/user-guide/1.3-apache-ldap-api-rational.mdtext b/content/api/user-guide/1.3-apache-ldap-api-rational.mdtext
deleted file mode 100644
index ca8ea1f..0000000
--- a/content/api/user-guide/1.3-apache-ldap-api-rational.mdtext
+++ /dev/null
@@ -1,58 +0,0 @@
-Title: 1.3 - The Apache LDAP API rational
-NavPrev: 1.2-ldap-in-a-few-words.html
-NavPrevText: 1.2 - LDAP in a few words
-NavUp: 1-introduction.html
-NavUpText: 1 - Introduction
-NavNext: 1.4-preparation-to-code.html
-NavNextText: 1.4 - Preparation to code
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.3 - The Apache LDAP API rationale
-
-When contemplating the creation of a new Java API for **LDAP**, we needed to first consider whether it was really necessary, because there were already a number of libraries that did it. For example:
-
-* **JNDI** : the default **JDK** **API**
-* **Netscape** (a.k.a Mozilla) [LdapSdk](http://www-archive.mozilla.org/directory/javasdk.html)
-* **OpenLDAP** [JLdap](http://www.openldap.org/jldap/)
-
-So why is the development of our new *LDAP API* for Java NOT the **[NIH](http://en.wikipedia.org/wiki/Not_Invented_Here)** syndrome?
-
-There are a number of reasons for which we'll discuss throughout this chapter.
-
-## History
-The Apache Directory Server project was started using the **JNDI** library, but many of its **LDAP** structures had to be developed in-house because the **JNDI** library was ineffective for interacting with an **LDAP** server. It wasn't convenient for us to use JNDI which means it won't be for you either. Eventually, all of the necessary **LDAP** data structures (_Attribute_, _Entry_, _DN_, ...) were re-implemented by us.
-
-At some point we had to communicate with other **LDAP** servers without using the **JNDI** library, so we developed our own _LdapConnection_ class. This was the first step toward a full **Java API** specifically designed for LDAP usage on the Java platform.
-
-Strangely, after starting this effort (back in 2007), some people from **Sun** (Microsystems), who was working on the **OpenDS** project, contacted us to ask if we'd be interested in helping them create the next version of **JNDI**. ([Resurrecting The Java LDAP Centric API](https://blogs.oracle.com/treydrake/entry/resurrecting_the_java_ldap_centric)). Sadly this effort stalled, as the need for *JNDI2* was no longer a priority for **Sun**. Nevertheless we decided to continue our work but the the pace was slow.
-
-The work renewed after the **OpenDS** project team's presentation at **LdapCon** in 2009 ([Towards a common LDAP API for the Java Platform](http://www.symas.com/ldapcon2009/papers/poitou1.shtml)). The story repeated itself once again after **Oracle** bought **Sun** in 2010, and its project team disbanded.
-
-Despite these fits and starts, a consensus was reached about the need for a new LDAP **API** and what it should be capable of doing. We agreed on these key features for the new **LDAP API**:
-
-* A complete coverage of the **LDAP** protocol
-* A schema aware **API**
-* An easy to use **API**
-* An **API** taking advantage of the new **Java** construction (generics, ellipsis, NIO)
-
-## Result
-Our newly defined **API** fulfills all of these aspects.
-
-We needed to ensure our **LDAP API** was made available to the masses. Because the Apache Software Foundation values community over code, this code was the result of collaboration, and our users are a necessary part of this process. Every time a user finds and reports a bug we have the opportunity to provide a better version of this **API**.
-
-In the end, we're proud to deliver a powerful new Java LDAP API, that is available for everyone to use, including our sub-projects like Apache Directory Server, Apache Directory Studio and most recently -- Apache Fortress.
diff --git a/content/api/user-guide/1.4-preparation-to-code.mdtext b/content/api/user-guide/1.4-preparation-to-code.mdtext
deleted file mode 100644
index 3049d84..0000000
--- a/content/api/user-guide/1.4-preparation-to-code.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 1.4 - Preparation to code
-NavPrev: 1.3-apache-ldap-api-rational.html
-NavPrevText: 1.3 - The Apache LDAP API rational
-NavUp: 1-introduction.html
-NavUpText: 1 - Introduction
-NavNext: 2-basic-ldap-api-usage.html
-NavNextText: 2 - Basic LDAP API Usage
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4 - Preparation to code
-
-The **Apache Directory LDAP API** requires **Java 7** or higher.
-
-Secondly, you must download the **[API 1.0](https://directory.apache.org/api/downloads-1.html)** or **[API 2.0](http://directory.apache.org/api/downloads-2.html)**. This package contains the **LDAP API** plus all of its dependent jars (like _commons-lang_, _slf4j_...).
-
-If you're using **Maven**, add the following dependency on _api-all.jar_ :
-
- :::XML
- <dependency>
- <groupId>org.apache.directory.api</groupId>
- <artifactId>api-all</artifactId>
- <version>${ldap-api-version}</version>
- </dependency>
-
-
-and all of its dependent jar files will be included automatically. That's it, now you should be ready to code!
diff --git a/content/api/user-guide/2-basic-ldap-api-usage.mdtext b/content/api/user-guide/2-basic-ldap-api-usage.mdtext
deleted file mode 100644
index ecdc915..0000000
--- a/content/api/user-guide/2-basic-ldap-api-usage.mdtext
+++ /dev/null
@@ -1,49 +0,0 @@
-Title: 2 - Basic LDAP API usage
-NavPrev: 1-introduction.html
-NavPrevText: 1 - Introduction
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 3-advanced-ldap-api-usage.html
-NavNextText: 3 - Advanced LDAP API Usage
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - Basic LDAP API usage (...)
-
-We provide three different sets of methods to send requests to the **LDAP** server:
-
-* The first set is the simplest. Its methods don't return a response but may throw a LdapOperationException if the operation was not successful.
-* The second set is for advanced users. It works with dedicated Request and Response objects and allows fine-grained control at the LDAP protocol level.
-* The third set allows users to send asynchronous requests.
-
-The first set of methods covers all basic LDAP operations: Bind, Add, Delete, Modify, Move/Rename/MoveAndRename, Compare, and Unbind operations
-
-The second and third sets cover all basic LDAP operations, Extended operations, and LDAP Controls.
-
-## Contents
-
-* [2.1 - Connection and disconnection](2.1-connection-disconnection.html)
-* [2.2 - Binding and unbinding](2.2-binding-unbinding.html)
-* [2.3 - Searching (...)](2.3-searching.html)
-* [2.4 - Adding entries](2.4-adding.html)
-* [2.5 - Deleting entries](2.5-deleting.html)
-* [2.6 - Modifying entries](2.6-modifying.html)
-* [2.7 - Moving an renaming entries (e)](2.7-moving-renaming.html)
-* [2.8 - Comparing entries (e)](2.8-comparing.html)
-* [2.9 - Exception management (...)](2.9-exception-management.html)
-* [2.10 - The LdapConnectionTemplate](2.10-ldap-connection-template.html)
-* [2.11 - The FilterBuilder](2.11-filter-builder.html)
diff --git a/content/api/user-guide/2.1-connection-disconnection.mdtext b/content/api/user-guide/2.1-connection-disconnection.mdtext
deleted file mode 100644
index f0d18de..0000000
--- a/content/api/user-guide/2.1-connection-disconnection.mdtext
+++ /dev/null
@@ -1,119 +0,0 @@
-Title: 2.1 - Connection and disconnection
-NavPrev: 2-basic-ldap-api-usage.html
-NavPrevText: 2 - Basic LDAP API usage
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.2-binding-unbinding.html
-NavNextText: 2.2 - Binding and unbinding
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - Connection and disconnection
-
-The **LDAP** is a protocol requires users to be connected, and likely identified (authenticated), before sending requests to the server. This connection can potentially be maintained forever. What makes the **LDAP** protocol different from, say, the **HTTP** protocol is that the connections are issued explicitly. Here we'll see how it's done.
-
-## Opening a connection
-
-We can open a secure or a standard connection.
-
-### Standard connection
-
-We can first establish a standard connection, where the data is sent and received in clear text (encoded in ASN.1 BER, but not encrypted). This example shows how it's done:
-
- :::Java
- LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
-
-Here we created an unsafe connection locally using the 389 port. Which is quite simple to do but not safe because data is not encrypted.
-
-### Secure connection
-
-Although the **LDAPS** (**LDAP** over **SSL**) is now considered as deprecated, many people still use it. The big advantage of not using **LDAPS** is that you don't need two different listening ports (one for **LDAP** -389- and another one for **LDAPS** -636- ).
-
-The only difference with the previous example is that we tell the connection to use **SSL**, by passing **_true_** as a third parameter (incidentally, passing **_false_** sets an unsafe connection).
-
-Here is an example
-
- :::Java
- LdapConnection connection = new LdapNetworkConnection( "localhost", 636, true );
-
-## Maintaining the connection opened
-
-We keep the connection open for a limited period of time, defaulting to 30 seconds. This might be not long enough, so one can change this delay by calling the _setTimeOut()_ method :
-
- :::Java
- LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
- connection.setTimeOut( 0 );
- ...
- connection.close();
-
->**Note:** Setting a value equal or below 0 will keep the connection open forever (assuming the connection is not explicitly closed by the client).
-
-## Closing the connection
-
-Once the connection is no longer needed (remember that holding a connection keeps the session open on the server and a socket is held open between the client and the server), then you must close it. This is done by calling the _close()_ method :
-
- :::Java
- LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
- ...
- connection.close();
-
-## Using a pool of connections
-
-Creating a connection is expensive. If that connection will be reused, or if your application needs multiple connections, you may want to consider using a _connection pool_.
-
-This process is slightly more complex given that there are many parameters that can be used to tune the pool. Here is an example:
-
- :::Java
- LdapConnectionConfig config = new LdapConnectionConfig();
- config.setLdapHost( hostname );
- config.setLdapPort( port );
- config.setName( adminDn );
- config.setCredentials( adminPassword );
-
- DefaultLdapConnectionFactory factory = new DefaultLdapConnectionFactory( config );
- factory.setTimeOut( connectionTimeout );
-
- // optional, values below are defaults
- GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
- poolConfig.lifo = true;
- poolConfig.maxActive = 8;
- poolConfig.maxIdle = 8;
- poolConfig.maxWait = -1L;
- poolConfig.minEvictableIdleTimeMillis = 1000L * 60L * 30L;
- poolConfig.minIdle = 0;
- poolConfig.numTestsPerEvictionRun = 3;
- poolConfig.softMinEvictableIdleTimeMillis = -1L;
- poolConfig.testOnBorrow = false;
- poolConfig.testOnReturn = false;
- poolConfig.testWhileIdle = false;
- poolConfig.timeBetweenEvictionRunsMillis = -1L;
- poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_BLOCK;
-
- LdapConnectionPool pool = new LdapConnectionPool(
- new DefaultPoolableLdapConnectionFactory( factory ), poolConfig ) );
-
-This creates a pool of connections that are pre-authenticated. If you don't setName and setCredentials, then the pool will contain unauthenticated connections.
-
-The DefaultPoolableLdapConnectionFactory is sufficient for many cases. However some operations result in modifications to the connection itself. For example, when the pool is created, a bind operation will occur with the credentials supplied as part of the config. If you borrow a connection and perform a bind yourself, that would result in the connection being re-bound as a different user. The next time that connection gets borrowed, things are likely to break. If you perform any operation that results in a modification of the connection, you should instead use ValidatingPoolableLdapConnectionFactory:
-
- :::Java
- ...
- LdapConnectionPool pool = new LdapConnectionPool(
- new ValidatingPoolableLdapConnectionFactory( factory ), poolConfig ) );
- ...
-
-A connection pool using this factory will unbind and rebind any connection that was modified while it was borrowed (_see the javadoc for more detail_). This will be slower due to the additional operations, but not significantly.
diff --git a/content/api/user-guide/2.10-ldap-connection-template.mdtext b/content/api/user-guide/2.10-ldap-connection-template.mdtext
deleted file mode 100644
index c90e900..0000000
--- a/content/api/user-guide/2.10-ldap-connection-template.mdtext
+++ /dev/null
@@ -1,269 +0,0 @@
-Title: 2.10 - The LdapConnectionTemplate
-NavPrev: 2.9-exception-management.html
-NavPrevText: 2.9 - Exception management
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.11-filter-builder.html
-NavNextText: 2.11 - The FilterBuilder
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-2.10 - Why use the LdapConnectionTemplate?
-==========================================
-
-The LdapConnectionTemplate provides simplified access to the API functions. It does so by
-
-* [Managing Connections](#managing-connections)
-* [Providing Factory Methods For Model Objects](#providing-factory-methods-for-model-objects)
-* [Providing CRUD Methods](#providing-crud-methods)
-* [Handling Search Result Iteration](#handling-search-result-iteration)
-* [Providing Simplified, Password Policy Aware, Authentication/Password Modification Methods](#providing-simplified-password-policy-aware-authenticationpassword-modification-methods)
-* [Other Useful Methods](#other-useful-methods)
-
-Conceptually it uses the Template Method design pattern to do all of the boiler plate work for you. It can give control back as needed for special cases.
-
-Managing Connections
---------------------
-
-The connection template manages connections through a connection pool. The connection pool must be supplied to the constructor:
-
- :::Java
- LdapConnectionConfig config = new LdapConnectionConfig();
- config.setLdapHost( hostname );
- config.setLdapPort( port );
- config.setName( adminDn );
- config.setCredentials( adminPassword );
-
- DefaultLdapConnectionFactory factory = new DefaultLdapConnectionFactory( config );
- factory.setTimeOut( connectionTimeout );
-
- // optional, values below are defaults
- GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
- poolConfig.lifo = true;
- poolConfig.maxActive = 8;
- poolConfig.maxIdle = 8;
- poolConfig.maxWait = -1L;
- poolConfig.minEvictableIdleTimeMillis = 1000L * 60L * 30L;
- poolConfig.minIdle = 0;
- poolConfig.numTestsPerEvictionRun = 3;
- poolConfig.softMinEvictableIdleTimeMillis = -1L;
- poolConfig.testOnBorrow = false;
- poolConfig.testOnReturn = false;
- poolConfig.testWhileIdle = false;
- poolConfig.timeBetweenEvictionRunsMillis = -1L;
- poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_BLOCK;
-
- // could use DefaultPoolableLdapConnectionFactory instead
- // see javadoc for ValidatingPoolableLdapConnectionFactory
- // for an explanation
- LdapConnectionTemplate ldapConnectionTemplate =
- new LdapConnectionTemplate( new LdapConnectionPool(
- new ValidatingPoolableLdapConnectionFactory( factory ), poolConfig ) );
-
-This may look complicated, but most of the parameters are optional and it's an easy way for you to manage connections in a safe and efficient manner.
-
-Providing Factory Methods For Model Objects
--------------------------------------------
-
-The connection template implements an interface called the ModelFactory. Any implementation of this factory can be injected into the template once it is constructed. By default, it uses ModelFactoryImpl which in turn constructs the standard Apache LDAP API model objects. This abstraction frees you from having to be concerned with implementation details while still giving you the power to override the default behavior as you see fit.
-
- :::Java
- ModelFactory modelFactory = new MyCustomModelFactory();
- ldapConnectionTemplate.setModelFactory( modelFactory );
-
-Providing CRUD Methods
-----------------------
-
-The standard CRUD methods are provided (*though in this case Add, Lookup, Modify, Delete*) with a couple useful overloads. Add, Delete, and Modify all provide at least 2 approaches. The first is creating your own XxxRequest objects and supplying that to the method. These request objects can be created using the ModelFactory methods provided by LdapConnectionTemplate. The second, more elegant solution, is to use the DN and RequestBuilder approach. This approach will generate the request for you from the internal ModelFactory and provide it to a callback for you to fill in the details. This has the added benefit of translating any LdapException's that may occur (usually due to model implementation setter methods) to LdapRuntimeException, to remove the ***need*** for try/catch blocks. Now for some examples:
-
-Add provides the standard approaches of supplying your own AddRequest and using RequestBuilder, as well as a third shortcut approach where you supply all the attributes instead of a RequestBuilder:
-
- :::Java
- // using RequestBuilder
- AddResponse response = ldapConnectionTemplate.add(
- ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
- new RequestBuilder<AddRequest>() {
- @Override
- public void buildRequest( AddRequest request ) throws LdapException {
- request.getEntry()
- .add( "objectClass", "top", "person", "organizationalPerson", "inetOrgPerson" )
- .add( "cn", "Kermit The Frog" )
- .add( "givenName", "Kermit" )
- .add( "sn", "The Frog" )
- .add( "mail", "kermitthefrog@muppets.org" )
- .add( "uid", "kermitthefrog" );
- }
- } );
-
- // using Attributes list
- AddResponse response = ldapConnectionTemplate.add(
- ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ),
- ldapConnectionTemplate.newAttribute( "objectClass",
- "top", "person", "organizationalPerson", "inetOrgPerson" ),
- ldapConnectionTemplate.newAttribute( "cn", "Miss Piggy" ),
- ldapConnectionTemplate.newAttribute( "givenName", "Miss" ),
- ldapConnectionTemplate.newAttribute( "sn", "Piggy" ),
- ldapConnectionTemplate.newAttribute( "mail", "misspiggy@muppets.org" ),
- ldapConnectionTemplate.newAttribute( "uid", "misspiggy" ) );
-
-Modify simply supplies the 2 standard approaches:
-
- :::Java
- // using RequestBuilder
- ModifyResponse response = ldapConnectionTemplate.modify(
- ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ),
- new RequestBuilder<ModifyRequest>() {
- @Override
- public void buildRequest( ModifyRequest request ) throws LdapException {
- request.replace( "sn", "The Frog" )
- .replace( "cn", "Miss The Frog" )
- .replace( "mail", "missthefrog@muppets.org" );
- }
- } );
-
-Delete provides the 2 standard approaches plus an additional DN-only option as that is most likely enough:
-
- :::Java
- // using DN only
- DeleteResponse response = ldapConnectionTemplate.delete(
- ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ) );
-
-Lookup is a different story in that it is an accessor (instead of mutator) so its interface must provide a way of handling the expected response data. To that end, we supply an EntryMapper. EntryMapper defines how a returned ldap entry should be interpreted. This is typically used to construct a domain object:
-
- :::Java
- // using a previously defined EntryMapper
- Muppet kermit = ldapConnectionTemplate.lookup(
- ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
- muppetEntryMapper );
-
- // using an inline defined EntityMapper
- String email = ldapConnectionTemplate.lookup(
- ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
- new String[] { "mail" }, // attribute list
- new EntryMapper<String>() {
- @Override
- public String map( Entry entry ) throws LdapException {
- return entry.get( "mail" ).getString();
- }
- } );
-
-More information on EntryMapper can be found in the [Handling Search Result Iteration](#handling-search-result-iteration) section.
-
-
-Handling Search Result Iteration
---------------------------------
-
-Searching usually contains a lot of boilerplate code for building requests and iterating through its responses. This template does the work for you. It iterates over the entire result set, feeds each entry through an EntryMapper, and assembles the results into a list tht is returned to the caller. All you have to do is provide the EntryMapper for mapping a single entry to a domain object. EntryMapper itself is a very simple interface with one method. As you saw before in the lookup documentation, they are typically defined as static members of your service classes:
-
- :::Java
- // typically mappers are reused, so define a static member
- private static final EntryMapper<Muppet> muppetEntryMapper =
- new EntryMapper<Muppet>() {
- @Override
- public Muppet map( Entry entry ) throws LdapException {
- return new Muppet.Builder()
- .setId( entry.getDn() )
- .setFirstName( entry.get( "givenName" ).getString() )
- .setLastName( entry.get( "sn" ).getString() )
- .setEmailAddress( entry.get( "mail" ).getString() )
- .build();
- }
- };
-
-And now your searches become much simpler:
-
- :::Java
- List<Muppet> allTheMuppets = ldapConnectionTemplate.search(
- "ou=muppets,dc=muppets,dc=org",
- "(objectClass=inetOrgPerson)",
- SearchScope.ONELEVEL,
- muppetEntryMapper );
-
-Now that is just plain ***SIMPLE***. The search method has many overloads to simplify usages for the most common LDAP operations. There is also a searchFirst method which provides all the same overloads and is designed to return the first matching result:
-
- :::Java
- Muppet kermit = ldapConnectionTemplate.searchFirst(
- "ou=muppets,dc=muppets,dc=org",
- "(mail=kermitthefrog@muppets.org)",
- SearchScope.ONELEVEL,
- muppetEntryMapper );
-
-It is also natural to pair the search function with the FilterBuilder:
-
- :::Java
- import static org.apache.directory.ldap.client.api.search.FilterBuilder.equal;
- import static org.apache.directory.ldap.client.api.search.FilterBuilder.or;
-
- ...
-
- Muppet kermit = ldapConnectionTemplate.search(
- "ou=muppets,dc=muppets,dc=org",
- or(
- equal( "mail", "kermitthefrog@muppets.org" ),
- equal( "mail", "misspiggy@muppets.org" ) ),
- SearchScope.ONELEVEL,
- muppetEntryMapper );
-
-This has the added benefit of ensuring that your search filter has been property encoded per [RFC4515 section 3](https://tools.ietf.org/html/rfc4515.html#section-3). For more information, see [Filter Builder](/api/user-guide/2.11-filter-builder.html).
-
-
-Providing Simplified, Password Policy Aware, Authentication/Password Modification Methods
------------------------------------------------------------------------------------------
-
-One of the most common usages of LDAP is as an identity provider. As such, the most common operation is authentication, and password management. If your LDAP server supports the [password policy control](http://tools.ietf.org/html/draft-behera-ldap-password-policy-10) then the authenticate method is very handy:
-
- :::Java
- // throws PasswordException if authentication fails
- PasswordWarning warning = ldapConnectionTemplate.authenticate(
- ldapConnectionTemplate.newDn( "uid=" + uid + ", ou=people, dc=example, dc=com" ),
- password );
-
- // or if you authenticate using an attribute not in the dn
- PasswordWarning warning = ldapConnectionTemplate.authenticate(
- "ou=people,dc=example,dc=com",
- "(mail=kermitthefrog@muppets.com)",
- SearchScope.ONELEVEL,
- "set4now".toCharArray() );
-
-In this case, if authentication failed, a PasswordException is thrown. If authentication was successful, any warnings will be returned in the PasswordWarning object, or null will be returned if there are no warnings.
-
-Modifying a password is simple as well:
-
- :::Java
- // using administrator account to modify a users password
- ldapConnectionTemplate.modifyPassword( userDn, password );
-
- // or user account modifying their own password
- ldapConnectionTemplate.modifyPassword( userDn, oldPassword, newPassword );
-
- // or if you want want more control
- ldapConnectionTemplate.modifyPassword( userDn, oldPassword, newPassword, asAdmin );
-
-If you modify the password as an administrator, then the oldPassword is not required, and if your password policy is set to, the password reset flag will be set causing a PasswordWarning to be returned the next time authenticate was called for that user.
-
-
-Other Useful Methods
---------------------
-
-The template provides a method that checks the response and throws an exception if the request was unsuccessful. It was designed to be chained:
-
- :::Java
- // using DN only
- DeleteResponse response = ldapConnectionTemplate.responseOrException(
- ldapConnectionTemplate.delete(
- ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ) ) );
-
diff --git a/content/api/user-guide/2.11-filter-builder.mdtext b/content/api/user-guide/2.11-filter-builder.mdtext
deleted file mode 100644
index 4846e35..0000000
--- a/content/api/user-guide/2.11-filter-builder.mdtext
+++ /dev/null
@@ -1,218 +0,0 @@
-Title: 2.11 - The FilterBuilder
-NavPrev: 2.10-ldap-connection-template.html
-NavPrevText: 2.10 - The LdapConnectionTemplate
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 3-advanced-ldap-api-usage.html
-NavNextText: 3 - Advanced LDAP API Usage
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-2.11 - The FilterBuilder(e)
-===========================
-
-This class is a builder for constructing well formed search filters according to [RFC 4515](https://tools.ietf.org/html/rfc4515.html). This builder is most convenient when using static imports. For example:
-
- import static org.apache.directory.ldap.client.api.search.FilterBuilder.and;
- import static org.apache.directory.ldap.client.api.search.FilterBuilder.equal;
- import static org.apache.directory.ldap.client.api.search.FilterBuilder.or;
-
- ...
-
- String filter =
- or(
- and(
- equal( "givenName", "kermit" ),
- equal( "sn", "the frog" ) ),
- and(
- equal( "givenName", "miss" ),
- equal( "sn", "piggy" ) ) )
- .toString()
-
-
-## And filter
-
-
-Returns a new FilterBuilder that will combine all of the supplied filters with a **logical AND** (&). For example:
-
- and( equal( "givenName", "kermit" ), equal( "sn", "the frog" ) ).toString()
-
-would result in the string: _(&(givenName=kermit)(sn=the frog))_
-
-Which would match all entries with a given name of kermit and a surname the frog.
-
-
-## Or filter
-
-Returns a new FilterBuilder that will combine all of the supplied filters with a **logical OR** (|). For example:
-
- or( equal( "givenName", "kermit" ), equal( "givenName", "walter" ) ).toString()
-
-would result in the string: _(|(givenName=kermit)(givenName=walter))_
-
-Which would match any entry with the givenName of either kermit or walter.
-
-
-## Not filter
-
-Returns a new FilterBuilder for negating another filter (!). For example:
-
- not( present( "givenName" ) ).toString();
-
-would result in the string: _(!(givenName=*))_
-
-
-## Present Filter
-
-Returns a new FilterBuilder for testing the presence of an attributes. For example:
-
- present( "givenName" ).toString();
-
-would result in the string: _(givenName=*)_
-
-Which would match any entry that has a givenName attribute.
-
-
-## Equal Filter
-
-Returns a new FilterBuilder for testing equality of an attribute. For example:
-
- equal( "cn", "Kermit The Frog" ).toString();
-
-would result in the string: _(cn=Kermit The Frog)_
-
-Which would match entries with the common name Kermit The Frog. Be careful when using the equal filter as it is an _EXACT MATCH_ filter. While it may seem natural to use \* as a wildcard, it will actually be escaped using this filter. If you meant to use a wildcard in your filter, you should use one of [startsWith](#startswith-filter), [endsWith](#endswith-filter), [contains](#contains-filter), or [substring](#substring-filter), .
-
-## Extensible Filter
-
-Returns a new FilterBuilder for testing equality using specified matching rules.
-For example:
-
- extensible( "cn", "Kermit The Frog" ).toString();
-
-would result in the string: _(cn:=Kermit The Frog)_
-
-Which would match entries with the common name Kermit The Frog.
-
- extensible( "cn", "Kermit The Frog" )
- .useDnAttributes()
- .toString();
-
-would result in the string: _(cn:dn:=Kermit The Frog)_
-
-Which would match entries with the common name Kermit The Frog even if the common name was only specified as part of the dn.
-
- extensible( "cn", "Kermit The Frog" )
- .setMatchingRule( "caseExactMatch" )
- .toString();
-
-would result in the string: _(cn:caseExactMatch:=Kermit The Frog)_
-
-Which would match entries with the common name Kermit The Frog, using a case sensitive matcher.
-
- extensible( "cn", "Kermit The Frog" )
- .useDnAttributes()
- .setMatchingRule( "caseExactMatch" )
- .toString();
-
-would result in the string: _(cn:dn:caseExactMatch:=Kermit The Frog)_
-
-Which would match entries with the common name Kermit The Frog, using a case sensitive matcher even if the name was only specified as part of the dn.
-
- extensible( "Kermit The Frog" )
- .setMatchingRule( "1.2.3.4.5.6.7" )
- .toString();
-
-would result in the string: _(:1.2.3.4.5.6.7:=Kermit The Frog)_
-
-Which would match entries with any attribute whose value is Kermit The Frog, using the _hypothetical_ matching rule indicated by the oid 1.2.3.4.5.6.7.
-
-## Less Or Equal Filter
-
-Returns a new FilterBuilder for testing lexicographical less than. For example:
-
- lessThanOrEqual( "sn", "mzzzzzz" ).toString();
-
-would result in the string: _(sn<=mzzzzzz)_
-
-which would match results whose surname starts with the first half of the alphabet. Note, this is not perfect, but if you know anybody with a last name that starts with an _m_ followed by six _z's__...
-
-## Greater Or Equal Filter
-
-Returns a new FilterBuilder for testing lexicographical greater than. For example:
-
- greaterThanOrEqual( "sn", "n" ).toString();
-
-would result in the string: _(sn>=n)_
-
-which would match results whose surname starts with the second half of the alphabet.
-
-## Approximate Filter
-
-Returns a new FilterBuilder for testing the approximate equality of an attribute. For example:
-
- approximatelyEqual( "l", "san fransico" ).toString();
-
-would result in the string: _(l~=san fransico)_
-
-Which MIGHT match results whose locality is San Francisco. The matching rule used to apply this filter is dependent on the server implementation.
-
-## StartsWith Filter
-
-Returns a new FilterBuilder that constructs a SubString filter with an initial part, zero or more any parts, but no final part. For example:
-
- startsWith( "sn", "Th", "Soft", "Foun" )).toString()
-
-would result in the string: _(sn=Th\*Soft\*Foun\*)_
-
-Which would match any entry with an sn starting with the string 'Th', followed by 'Soft', then 'Foun', like 'The Apache Software Foundation'.
-
-## EndsWith Filter
-
-Returns a new FilterBuilder that constructs a SubString filter with no initial part, zero or more any parts, and a final part. For instance:
-
- endsWith( "sn", "Soft", "Foun", "ion" )).toString()
-
-would result in the string: _(sn=\*Soft\*Foun\*ion)_
-
-Which would match any entry with an sn containing the string 'Soft' followed by 'Foun' ending in 'ion', like 'The Apache Software Foundation'.
-
-## Contains Filter
-
-Returns a new FilterBuilder that constructs a SubString filter with no initial part, zero or more any parts, and no final part. For instance:
-
- contains( "sn", "Soft", "Foun" )).toString()
-
-would result in the string: _(sn=\*Soft\*Foun\*)_
-
-Which would match any entry with an sn containing the string 'Soft' followed by 'Foun', like 'The Apache Software Foundation'.
-
-## Substring Filter
-
-Returns a new FilterBuilder that constructs a SubString filter with an initial part, zero or more any parts, and a final part. For instance:
-
- substring( "sn", "The", "Soft", "Foun", "ion" )).toString()
-
-would result in the string: _(sn=The\*Soft\*Foun\*ion)_
-
-Which would match any entry with an sn starting with 'The', followed by 'Soft', then 'Foun', and ending with 'ion', like 'The Apache Software Foundation'.
-
-Note that if only two strings are supplied for parts, they will be the initial and the final:
-
- substring( "sn", "The", "ion" )).toString()
-
-would result in the string: _(sn=The\*ion)_
diff --git a/content/api/user-guide/2.2-binding-unbinding.mdtext b/content/api/user-guide/2.2-binding-unbinding.mdtext
deleted file mode 100644
index e431491..0000000
--- a/content/api/user-guide/2.2-binding-unbinding.mdtext
+++ /dev/null
@@ -1,240 +0,0 @@
-Title: 2.2 - Binding and unbinding
-NavPrev: 2.1-connection-disconnection.html
-NavPrevText: 2.1 - Connection and disconnection
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.3-searching.html
-NavNextText: 2.3 Searching
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - Binding and unbinding
-
-In **LDAP**, if one wants to access the data in the base, the common way to do it is to bind to the server. However, it's important to understand that binding is a different from connecting.
-
-Creating a connection to an **LDAP** server opens a socket between the client and the server. You must provide the address and the port in order to do this.
-
-The **bind** operation, on the other hand, creates a _Session_ which will hold user information for the duration of the session. This information is limited, but includes the user's credentials.
-
-But it's important to know that it's possible to bind anonymously, which doesn't require a user or password, and still be able to send requests to the server (although the server can forbid anonymous binds).
-
-Once the user has finished interacting with the server, they can unbind, destroying the session held on the server. This operation does not close the connection, because, again _bind != connection_!
-
-## Binding
-
-There are two possible types of binds in *LDAP*:
-
-* **Simple**
-* **SASL**
-
-The first one is based on a userid/password sent to the server, which verifies the credentials are valid. It's also possible to proceed with an anonymous bind explicitly.
-
-The second type is more complicated, and is used whenever authentication with a specific mechanism, like **DIGEST-MD5**, **Kerberos** or certificate based is required.
-
-### Simple Bind
-One can issue three kinds of simple binds:
-
-* _anonymous bind_
-* _name/password bind_
-* _unauthenticated authentication bind_
-
-The first one is the easiest, but depending on the server's configuration, will be accepted or rejected (not all servers allow anonymous binds)
-
-Most of the time, the _bind_ operation will not return anything. You either get bound, or will receive an _LdapException_ if an error occurs.
-
-Issuing an anonymous bind is simple, you neither provide a user nor a password:
-
- :::Java
- @Test
- public void testAnonymousBindRequest() throws Exception
- {
- connection.bind();
- }
-
-Issuing a user/password bind is slightly more complex, because those credentials must be included:
-
- :::Java
- @Test
- public void testSimpleBindRequest() throws Exception
- {
- connection.bind( "uid=admin,ou=system", "secret" );
- }
-
->**Note** It's important to note that the user's name is a *[Dn](6.9-dn.html)*, not a simple name like 'John Doe"
-
-Last, not least, there is a quite unknown feature in **LDAP** bind that allows you to issue a Bind request without providing a password. It's equivalent to an anonymous bind, except that the server can log the user's name, thus being able to trace what the user does. Servers might forbid such bind, and this will be the case if the server disallow anonymous binds.
-
-Note that this kind of bind will be supported only if the server allows anonymous binds. It's not supported by *ApacheDS*.
-
- :::Java
- @Test
- public void testSimpleBindRequest() throws Exception
- {
-
- connection.bind( "uid=admin,ou=system" );
- }
-
-### SASL Binding
-
-There are various **SASL** mechanisms that can be used to bind to a **LDAP** server. The **Apache LDAP API** support the following 5 mechanisms:
-
-#### PLAIN
-
-To be completed...
-
-#### CRAM-MD5
-
-To be completed...
-
-#### DIGEST-MD5
-
-To be completed...
-
-#### EXTERNAL
-
-To be completed...
-
-#### GSSAPI
-
-First, non-trivial **Kerberos** authentication requires configuration. Creating a **Kerberos** configuration is not well documented elsewhere, so we include here sample code. One approach is to create a **JAAS** configuration file. Here’s what such a file might contain:
-
- :::text
- myapp {
- com.sun.security.auth.module.Krb5LoginModule required debug=true useKeyTab=true principal="host/ilab2.myorg.org@MYORG.ORG" refreshKrb5Config=true keyTab="/etc/krb5.keytab";
- };
-
-See online documentation for _Krb5LoginModule_ for possible options. This example uses the host’s principal, stored in _/etc/krb5.keytab_. What goes after **@** is the **Kerberos** domain name.
-
-Note that if you specify a credential cache, the cache must be in a file. Many operating systems now put the user’s credentials in **KEYRING** or **KCM**. That worn’t work with Java.
-
-_“myapp”_ is the name supplied as the login context name. See the code below.
-
-When you run the program, you must tell java where the configuration file is. e.g. _“java -Djava.security.auth.login.config=jaas.config”_.
-
-Here is code to connect to ldap with this configuration. We assume that _ldapNetworkConnection_ has already been opened using connect.
-
- :::Java
- saslGssApiRequest = new SaslGssApiRequest();
- saslGssApiRequest.setLoginModuleConfiguration(Configuration.getConfiguration());
- saslGssApiRequest.setLoginContextName( "myapp");
- saslGssApiRequest.setMutualAuthentication( true );
-
- try {
- BindResponse br = ldapNetworkConnection.bind( saslGssApiRequest );
- ldapNetworkConnection.startTls();
- } catch ( LdapException e ) {
- e.printStackTrace();
- }
-
-At this point you can do operations such as search. Note that the argument to _setLoginContextName_ must match the name in the configuration file. This sample uses mutual authentication. It is possible that some **LDAP** servers might not support that. If so you can set it to false. You may not need _startTls_ if the connection is already secure.
-
-Sometimes it is more convenient to supply the configuration information programmatically. Here is an example that sets the same options as the config file
-
- :::Java
- class KerberosConfiguration extends Configuration {
-
- @Override
- public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
- Map<String, String> options = new HashMap<String, String>();
- options.put("useKeyTab", "true");
- try {
- options.put("principal", "host/" + InetAddress.getLocalHost().getCanonicalHostName() + “@MYORG.ORG”);
- } catch (Exception e){
- System.out.println("Can't find our hostname " + e);
- }
- options.put("refreshKrb5Config", "true");
- options.put("keyTab", "/etc/krb5.keytab");
- options.put("debug", "true");
-
- return new AppConfigurationEntry[]{
- new AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule",
- AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
- options),};
- }
- }
-
-Here is how it is used:
-
- :::Java
- saslGssApiRequest = new SaslGssApiRequest();
- saslGssApiRequest.setLoginModuleConfiguration(new KerberosConfiguration());
- saslGssApiRequest.setMutualAuthentication( true );
-
- try {
- BindResponse br = ldapNetworkConnection.bind( saslGssApiRequest );
- ldapNetworkConnection.startTls();
- } catch ( LdapException e ) {
- e.printStackTrace();
- }
-
-Note that it is not necessary to set the login context name, since it is only needed to process the configuration file.’
-
-Warnings:
-
-* **Apache Kerby** does not implement the option to prompt the user for a password, nor does it permit a password to be passed to **GSSAPI**. Thus authentication is limited to key tables and credential caches.
-
-* The ** Apache Kerby** code sets two system properties. In the default case, it clears **KRB5_CONF** and sets _javax.security.auth.useSubjectCredsOnly_ to true. If other code in your application uses **Kerberos**, be aware that there could be conflicts. Be particularly concerned about multi-threaded code that uses different values. Note that in Kirby you can explicitly set **KRB5_CONF**, with _setKrb5ConfFilePath_, or cause Kirby to set it with setRealmName, setKdcHost, and setKdcPort. If you use different settings for these options in different threads, there is a potential thread-safety issue.
-
-* The Java implementation of **Kerberos** has the ability to read standard **Kerberos** credential cache files, e.g. _/tmp/krb5cc_%{uid}_. However it can’t read credentials from **KEYRING** or **KCM**. If your code asks for authentication to come from an existing credential cache, make sure that it is in a file. If you write an application that expects to use existing credentials for logged in users, without prompting for a password, you may need to set _default_ccache_name_ in _/etc/krb5.conf_ to a file, e.g.
- _default_ccache_name = /tmp/krb5cc_%{uid}_
-This is not an issue if your authentication comes from key tables or prompts the user.
-
-* The encryption types supported depends upon the Java version. E,g. _aes128-cts-hmac-sha256-128_ and _aes256-cts-hmac-sha384-192_ are supported only as of Java 11.
-
-
-## Rebinding
-
-It's possible to issue a **Bind** on an already bound connection and the existing LDAP session will be terminated, and replaced by a new LDAP session. In any case, the connection is not dropped when doing so. Note that if the connection was encrypted, it remains encrypted.
-
- :::Java
- @Test
- public void testRebind() throws Exception
- {
- connection.bind( "uid=admin,ou=system", "secret" );
-
- // Now, rebind
- connection.bind( "cn=john doe,dc=example,dc=com", "secret" );
-
- assertTrue( connection.isConnected() );
- assertTrue( connection.isAuthenticated() );
- }
-
-If you issue a _bind_ on the same connection with some different credentials, then the existing session will be terminated on the server, and a new one will be created. All the pending requests for the initial session will be lost.
-
-## Unbinding
-
-This is a trivial operation : you just send an **UnbindRequest** to the server, which will invalidate your session.
-
-It's important to know that when you issue an **Unbind**, the connection is dropped. It's done like this:
-
- :::Java
- @Test
- public void testUnbind() throws Exception
- {
- connection.bind( "uid=admin,ou=system", "secret" );
-
- // Now, unbind
- connection.unBind();
- assertFalse( connection.isConnected() );
- assertFalse( connection.isAuthenticated() );
-
- // And Bind again.
- connection.bind( "uid=admin,ou=system", "secret" );
- }
-
-Last, but not least, if you close the connection, the session also terminates.
-
diff --git a/content/api/user-guide/2.3-searching.mdtext b/content/api/user-guide/2.3-searching.mdtext
deleted file mode 100644
index 317928b..0000000
--- a/content/api/user-guide/2.3-searching.mdtext
+++ /dev/null
@@ -1,170 +0,0 @@
-Title: 2.3 - Searching
-NavPrev: 2.2-binding-unbinding.html
-NavPrevText: 2.2 - Binding and unbinding
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.4-adding.html
-NavNextText: 2.4 - Adding entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3 - Searching (...)
-
-Searching is the most important operation in **LDAP**. It has to be fast, very fast. On the other hand, as the server does the processing while looking for entries, the client must provide information to get accurate results.
-
-The idea is to define a search **API** which is easy to use in the simplest cases, but provides all the capability to send complex search requests.
-
-## Simple search
-
-Let's first look at a simple search. To process a search we need a starting point in the tree, a filter, and a scope. Here's an example:
-
- :::java
- @Test
- public void testSearch() throws Exception
- {
- EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL );
-
- for ( Entry entry : cursor )
- {
- assertNotNull( entry );
- System.out.println( entry );
- }
-
- cursor.close();
- }
-
-
-In this example, the _connection_ has been previously created. We search for all entries starting at *ou=system* along with its children, which have an _ObjectClass_ attribute (all the entries have such an attribute, so we should get back all the entries). The scope (_ONELEVEL_) searches one level under the starting base.
-
-A cursor of entries is returned, which can be iterated over. Every call to the _getEntry()_ method returns the next entry in the LDAP result set.
-
-That's pretty much it!
-
-But this is not really enough, there are many possible options.
-
->**Note** Don't forget to close the cursor, otherwise the associated data remains in memory forever (causing a memory leak)! Best practice is to use try-with-resources statement.
-
-### Searching using a DN
-
-In the previous sample, we used a String to define the starting point of the search. Sometimes it's convenient to start a search with a DN (i.e. because you got the DN from another operation). In this case, no need to transform the DN into a String before doing your search, simply use the DN!
-
- :::java
- @Test
- public void testSearchWithDn() throws Exception
- {
- Dn systemDn = new Dn( "ou=system" );
-
- EntryCursor cursor = connection.search( systemDn, "(objectclass=*)", SearchScope.ONELEVEL );
-
- for ( Entry entry : cursor )
- {
- assertNotNull( entry );
- System.out.println( entry );
- }
-
- cursor.close();
- }
-
-This is it!
-
-### Scope
-
-There are three different different scopes you can use to search for data:
-
-* SearchScope.OBJECT : return the entry for a given DN, if it exists. Note that you could use `LdapConnection.lookup` if the filter is irrelevent.
-* SearchScope.ONELEVEL : return all elements below the current DN, but not the element associated with the DN.
-* SearchScope.SUBLEVEL : return all the elements starting from the given DN, including the element associated with the DN, whatever the depth of the tree.
-
-### Filter
-
-The filter is used to define the elements that are targeted. There are various possibilities to construct a filter, using one or more connectors, and one or more expression nodes.
-
-Connectors use a prefix notation, followed by as many expression nodes as necessary, like in (& (node1) (node2) ... (nodeN))
-
-Expression nodes are always contained within parenthesis, with a left part - the attributeType, and a right part - the value -.
-
-Here is the list of possible connectors:
-
-* & : n-ary AND connector, all the nodes must evaluate to TRUE
-* | : n-ary OR connector, at least one of the node must evaluate to true
-* ! : 1-ary NOT connector, the node must evaluate to false
-
-And here is the list of possible expression nodes, assuming that an expression node:
-
-* `=` Equality expression node : the selected entry matches the right part
-* `=*` Presence expression node : the entry has the Attribute on the left side
-* `>=` Superior expression node : the entry should be superior to the right part
-* `<=` Inferior expression node : the entry should be superior to the right part
-* `=[start][*][middle][*][final]` Substring expression node : the entry should match a substring
-
->**Note:** As of Apache DS 2.0, we don't support approx matches nor extensible matches.
-
-## More complex searches
-
-Sometimes, you want to have more control over the search operation, either with the parameters in use, or the results that are returned.
-
-A search can return other things than entries. In fact, you can get four different kinds of responses:
-
-* When it's a normal entry, you will receive a SearchResultEntry
-* When it's done, you will receive a SearchResultDone
-* When the response is a reference to another entry, you will get a SearchResultReference
-* In some cases, you may also receive an IntermediateResponse.
-
-You may also add a Control to the search request, or request some specific AttributeType to be returned. The parameters that may be injected into a SearchRequest are as follows:
-
-* The base DN
-* The filter
-* The scope (one of OBJECT, ONELEVEL or SUBTREE)
-* The size limit
-* The time limit
-* The list of attributes to return
-* The alias dereferencing mode (one of DEREF_ALWAYS, DEREF_FINDING_BASE_OBJ, DEREF_IN_SEARCHING or NEVER_DEREF_ALIASES)
-* The TypesOnly flag (to get the AttributeTypes but no values)
-* The controls
-
-In both cases, you should fill the _SearchRequest_ message and send it to the server:
-
- :::Java
- @Test
- public void testSearchWithSearchRequest() throws Exception
- {
- // Create the SearchRequest object
- SearchRequest req = new SearchRequestImpl();
- req.setScope( SearchScope.SUBTREE );
- req.addAttributes( "*" );
- req.setTimeLimit( 0 );
- req.setBase( new Dn( "ou=system" ) );
- req.setFilter( "(cn=user1)" );
-
- // Process the request
- SearchCursor searchCursor = connection.search( req );
-
- while ( searchCursor.next() )
- {
- Response response = searchCursor.get();
-
- // process the SearchResultEntry
- if ( response instanceof SearchResultEntry )
- {
- Entry resultEntry = ( ( SearchResultEntry ) response ).getEntry();
- System.out.println( resultEntry );
- }
- }
- }
-
-As we can see, the response is different, we are returned a _SearchCursor_ instance, and we must verify the response type before being able to process it.
-
diff --git a/content/api/user-guide/2.4-adding.mdtext b/content/api/user-guide/2.4-adding.mdtext
deleted file mode 100644
index 69b734b..0000000
--- a/content/api/user-guide/2.4-adding.mdtext
+++ /dev/null
@@ -1,166 +0,0 @@
-Title: 2.4 - Adding entries
-NavPrev: 2.3-searching.html
-NavPrevText: 2.3 Searching
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.5-deleting.html
-NavNextText: 2.5 - Deleting entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.4 - Adding entries
-
-Adding entries is one of the base operations a user can do on an **LDAP** server. Nevertheless, it's an operation that implies many checks, and frequently the user receives strange error messages. We will see how to add an entry using the **LDAP API**, and analyze the various error cases that can occur.
-
-## Adding an entry
-Here is the simplest way to add an entry into the server, assuming that the entry is correct. In order to add an entry, you must provide the location where the entry is stored (its _Dn_) and the list of its _Attributes_ contained within it.
-
-Here are two examples where the entry is injected using **LDIF**:
-
- :::Java
- @Test
- public void testAddLdif1() throws Exception
- {
- connection.add(
- new DefaultEntry(
- "cn=testadd,ou=system", // The Dn
- "ObjectClass: top",
- "ObjectClass: person",
- "cn: testadd_cn",
- "sn: testadd_sn" ) );
-
- assertTrue( connection.exists( "cn=testadd,ou=system" ) );
- }
-
-In this basic example, we are adding a new entry, created using some **LDIF** formatted parameters, the first one being the entry's _Dn_.
-
-Note that it is possible to use some variables in the **LDIF** instead of pure text. Here is the same example, resulting to the same entry being added:
-
- :::Java
- @Test
- public void testAddLdif2() throws Exception
- {
- String cn = "testadd_cn";
- String sn = "testadd_sn";
-
- connection.add(
- new DefaultEntry(
- "cn=testadd,ou=system", // The Dn
- "ObjectClass: top",
- "ObjectClass: person",
- "cn", cn, // Note : there is no ':' when using a variable
- "sn", sn ) );
-
- assertTrue( connection.exists( "cn=testadd,ou=system" ) );
- }
-
-Down the line, what is important is that the _add()_ operation is taking a full **[Entry](6.12-entry.html)**.
-
-We can also create the **[Entry](6.12-entry.html)** in a different way, which is shown in the following paragraphs.
-
-## Sending an _AddRequest_
-
-When more control is needed we ask the server to add an entry by sending an **[AddRequest]()**, which allows a **[Control]()** to be included in the request.
-
-Here is an example (note that the control is just injected to demonstrate the feature, it doesn't really do anything special in this example):
-
- :::java
- @Test
- public void testAddWithControl() throws Exception
- {
- assertFalse( connection.exists( "cn=testadd,ou=system" ) );
-
- Entry entry = new DefaultEntry(
- "cn=testadd,ou=system",
- "ObjectClass : top",
- "ObjectClass : person",
- "cn: testadd_sn",
- "sn: testadd_sn" );
-
- AddRequest addRequest = new AddRequestImpl();
- addRequest.setEntry( entry );
- addRequest.addControl( new ManageDsaITImpl() );
-
- AddResponse response = connection.add( addRequest );
-
- assertNotNull( response );
- assertEquals( ResultCodeEnum.SUCCESS, response.getLdapResult().getResultCode() );
-
- assertTrue( connection.exists( "cn=testadd,ou=system" ) );
- }
-
-### Asynchronous addition
-
-Sometimes we need to add an entry, but not check the result immediately. It's just a matter of calling the _addAsync()_ method, which returns a _Future_ that can be checked somewhere else in the code:
-
- :::java
- @Test
- public void testAddAsyncLdif() throws Exception
- {
- assertFalse( connection.exists( "cn=testAsyncAdd,ou=system" ) );
-
- Entry entry = new DefaultEntry(
- "cn=testAsyncAdd,ou=system",
- "ObjectClass: top",
- "ObjectClass: person",
- "cn: testAsyncAdd_cn",
- "sn: testAsyncAdd_sn" );
-
- AddRequest addRequest = new AddRequestImpl();
- addRequest.setEntry( entry );
-
- AddFuture addFuture = connection.addAsync( addRequest );
-
- // Here, we can do something else before checking that the entry has been added
-
- AddResponse addResponse = addFuture.get( 1000, TimeUnit.MILLISECONDS );
-
- assertNotNull( addResponse );
- assertEquals( ResultCodeEnum.SUCCESS, addResponse.getLdapResult().getResultCode() );
-
- assertTrue( connection.exists( "cn=testAsyncAdd,ou=system" ) );
- }
-
-## Do, Don't
-
-Successfully adding an entry assumes that the entry was correct, i.e. the attributes and values are compatible with the LDAP schema. There are many things checked by the server. Here is a list of constraints that you should respect in order to get your entry injected:
-
-* The entry must have at least one **Structural** _ObjectClass_
-* If the entry has more than one **Structural** _ObjectClass_, then they must be hierarchically related
-* The _ObjectClasses_ define the list of allowed **Structural** _AttributeTypes_ that can be used (**MAY** and **MUST**)
-* All the **MUST** **[AttributeTypes]()** must be present
-* Each added value must follow the _AttributeType_ _Syntax_
-* If the _AttributeType_ is single valued, then you can't add more than one value
-* The entry's _Dn_ must have a parent
-* You are not allowed as a user to inject operational attributes, unless they have the **USER-MODIFICATION** flag set to true.
-
-
-There are also some other constraints, depending on the server, if it implements _NameForms_, _DITStructureRules_ or _DITContentRules_.
-
-Another reason an entry can be rejected is that there aren't enough privilege to add it. You must ensure the LDAP server's configuration allows you to add an entry in the correct location.
-
-## Errors
-
-<DIV class="note" markdown="1">
-At first, you might expect to get an exception if the entry addition has failed. If the server is rejecting the addition, <b>you will get NO exception*</b>. Exceptions are only thrown client side if the entry is not built correctly, or if the connection is not opened.
-
-In any other case, the server will simply return a <b>[LdapResult]()</b> instance containing either <b>SUCCESS</b> or the cause of the rejection.
-</DIV>
-
-Usually, if you get an error while adding an entry, the message is hard to read. Most of the errors occur because the entry already exists, or because the entry has an LDAP schema violation.
-
-The _LdapResult_ in the response will provide helpful clues as to what the root cause is.
diff --git a/content/api/user-guide/2.5-deleting.mdtext b/content/api/user-guide/2.5-deleting.mdtext
deleted file mode 100644
index c5439d2..0000000
--- a/content/api/user-guide/2.5-deleting.mdtext
+++ /dev/null
@@ -1,143 +0,0 @@
-Title: 2.5 - Deleting entries
-NavPrev: 2.4-adding.html
-NavPrevText: 2.4 - Adding entries
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.6-modifying.html
-NavNextText: 2.6 - Modifying entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.5 - Deleting entries
-
-Deleting an entry is pretty easy, it just requires the entry's _DN_. There is one important thing to understand though, if the entry has children, the operation will fail.
-
-## Simple entry deletion
-
-We request a deletion by providing the entry's _DN_, as in the following example:
-
- :::Java
- @Test
- public void testDeleteLeafNode() throws Exception
- {
- assertTrue( session.exists( "cn=child1,cn=parent,ou=system" ) );
-
- try
- {
- connection.delete( "cn=child1,cn=parent,ou=system" );
- }
- catch ( LdapException le )
- {
- fail( le.getMessage() );
- }
-
- assertFalse( session.exists( "cn=child1,cn=parent,ou=system" ) );
- }
-
-
-Trying to delete a parent node would result in an error (NOT_ALLOWED_ON_NON_LEAF) :
-
- :::Java
- @Test
- public void testDeleteNonLeafFailure() throws Exception
- {
- assertTrue( session.exists( "cn=parent,ou=system" ) );
-
- try
- {
- connection.delete( "cn=parent,ou=system" );
- }
- catch ( LdapException le )
- {
- fail( le.getMessage() );
- }
-
- assertTrue( session.exists( "cn=parent,ou=system" ) );
- }
-
-
-## Recursive deletion of entries
-
-Usually, you can't delete an entry and all of its children in one operation. However, some servers accept such requests if you send a delete request and a TreeDelete control. This control is a [draft](http://tools.ietf.org/html/draft-armijo-ldap-treedelete-02), which has been implemented by **Microsoft**, **OpenDS**, **OpenDJ**. It will delete all the children and the entry itself. We don't use a normal _delete()_ method, there is a specific method, _deleteTree()_. Here is an example :
-
- :::Java
- @Test
- public void testDeleteWithCascadeControl() throws Exception
- {
- assertTrue( session.exists( "cn=parent,ou=system" ) );
-
-
- try
- {
- connection.deleteTree( "cn=parent,ou=system" );
- }
- catch ( LdapException le )
- {
- fail( le.getMessage() );
- }
-
- assertFalse( session.exists( "cn=parent,ou=system" ) );
- }
-
-
-## Sending a DeleteRequest with a control
-
-It's also possible to associate a **[Control]** with the delete request. In order to do that, you have to create a _DelRequest_ instance. In the following example, we will add the Delete Tree control (this make this call equivalent to the _deleteTree()_ method).
-
- :::Java
- @Test
- public void testDeleteWithControl() throws Exception
- {
- assertTrue( session.exists( "cn=parent,ou=system" ) );
-
- if ( connection.isControlSupported( "1.2.840.113556.1.4.805" ) )
- {
- DeleteRequest deleteRequest = new DeleteRequestImpl();
- deleteRequest.setName( new Dn( "cn=parent,ou=system" ) );
- Control deleteTreeControl = new OpaqueControl( "1.2.840.113556.1.4.805" );
- deleteRequest.addControl( deleteTreeControl );
-
- DeleteResponse deleteResponse = connection.delete( deleteRequest );
-
- assertNotNull( deleteResponse );
- assertEquals( ResultCodeEnum.SUCCESS, deleteResponse.getLdapResult().getResultCode() );
- assertFalse( session.exists( "cn=parent,ou=system" ) );
- }
- }
-
-
-## Asynchronous delete
-
-You can also decide to send an asynchronous delete request : the method will return a Future that you can check later. You have to construct a **[DeleteRequest]** instance. Here is an example :
-
- :::Java
- @Test
- public void testDeleteAsync() throws Exception
- {
- assertTrue( session.exists( "cn=child,cn=parent,ou=system" ) );
-
- DeleteRequest deleteRequest = new DeleteRequestImpl();
- deleteRequest.setName( new Dn( "cn=child,cn=parent,ou=system" ) );
-
- DeleteFuture deleteFuture = connection.deleteAsync( deleteRequest );
-
- DeleteResponse deleteResponse = deleteFuture.get( 1000, TimeUnit.MILLISECONDS );
-
- assertNotNull( deleteResponse );
- assertEquals( ResultCodeEnum.SUCCESS, deleteResponse.getLdapResult().getResultCode() );
- assertFalse( session.exists( "cn=child,cn=parent,ou=system" ) );
- }
diff --git a/content/api/user-guide/2.6-modifying.mdtext b/content/api/user-guide/2.6-modifying.mdtext
deleted file mode 100644
index 61a530b..0000000
--- a/content/api/user-guide/2.6-modifying.mdtext
+++ /dev/null
@@ -1,402 +0,0 @@
-Title: 2.6 - Modifying entries
-NavPrev: 2.5-deleting.html
-NavPrevText: 2.5 - Deleting entries
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.7-moving-renaming.html
-NavNextText: 2.7 - Moving an renaming entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.6 - Modifying entries
-
-There are several ways an entry can be modified. Mainly, it's about adding or deleting an attribute, or modifying the values associated with an existing attribute.
-
-It's important to understand that many modifications can be applied on a single entry. All those modifications will be applied in an all or none fashion. i.e., if any of the modifications are invalid, none will occur. Also if the server crashes while applying the mods, it's guaranteed that the entry remains consistent.
-
-## How it works?
-
-Each modification to be applied on an entry is encapsulated into an intermediate class : a _Modification_ instance, which can be created as :
-
- :::Java
- Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName", "John", "Peter" );
-
-Here the modification instance represents addition of values "John" and "Peter" to the _giveName_ attribute (the _givenName_ attribute can have more than one value).
-
-There are four different kind of modifications:
-
-* ModificationOperation.ADD_ATTRIBUTE: add an attribute and values to an entry
-* ModificationOperation.REMOVE_ATTRIBUTE: remove an attribute and values from an entry
-* ModificationOperation.REPLACE_ATTRIBUTE: replace some existing values from an entry
-* ModificationOperation.INCREMENT_ATTRIBUTE: increment an Integer value of an attribute
-
-## Adding or removing full attributes
-
-The following two operations completely add or remove attributes.
-
-### Adding new attributes
-
-First of all, let's learn how to add an attribute. First you must know which entry to modify, which means you must know its Dn. Next, you must create the _Modification_ instance which is applied to the entry. Here is the code that is used to add a _givenName_ attribute to an existing entry :
-
- :::Java
- ...
- Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
- "John", "Peter" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName );
- ...
-
-#### Adding more than one attribute
-
-What if you want to apply more than one modification to the entry ?
-
-Easy : create more than one _Modification_ instance, and add them before calling the _modify_ method :
-
- :::Java
- ...
- Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
- "John", "Peter" );
- Modification addedInitials = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "initials",
- "JD" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName, addedInitials );
- ...
-
-You can add as many _Modification_ instances as needed.
-
-#### Errors
-
-If you try to add an attribute that already exists, you will get an error, like this one :
-
- :::Java
- ...
- Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
- "John", "Peter" );
- Modification addedUid = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "uid",
- "Ted" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName, addedUid );
- ...
-
-results in :
-
- :::Java
- org.apache.directory.api.ldap.model.exception.LdapAttributeInUseException: ATTRIBUTE_OR_VALUE_EXISTS: failed for MessageType : MODIFY_REQUEST
- Message ID : 3
- Modify Request
- Object : 'uid=Doe,dc=acme,dc=com'
- Modification[0]
- Operation : add
- Modification
- givenName: John
- givenName: Peter
- Modification[1]
- Operation : add
- Modification
- uid: Ted
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@13532916: ERR_54 Cannot add a value which is already present : admin
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2064)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- ...
-
-Here, we've tried to add the _uid_ attribute that already exists, and the error trace tells us as much.
-
-Another potential error occurs when adding an attribute type that isn't allowed on that entry. This occurs because the Entry's ObjectClass does not allow such an attribute (per the schema), or because the server forbids modification of that entry, due to the ACIs applied on this entry.
-
-Last, but not least, and hopefully this is obvious, the entry *must* exist prior to modification!
-
-### Removing an attribute
-
-Removing an attribute is actually a bit simpler than adding one, because the values for the attribute don't need to be specified. Here's an example where the _givenName_ attribute is removed from an entry:
-
-
- :::Java
- ...
- Modification deletedGivenName = new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, "givenName" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", adeletedivenName );
- ...
-
-Here, we've created a modification, specifying the _givenName_ attribute must be removed, and we apply the modification request to the entry.
-
-Again, more than one attribute may be deleted from an entry. It's a matter of creating more than one _Modification_ instances and applying them to the entry.
-
-#### Errors
-
-If you try to delete an attribute that does not exist in the entry, you will get this error:
-
- :::Java
- org.apache.directory.api.ldap.model.exception.LdapNoSuchAttributeException: NO_SUCH_ATTRIBUTE: failed for MessageType : MODIFY_REQUEST
- Message ID : 3
- Modify Request
- Object : 'uid=admin,ou=system'
- Modification[0]
- Operation : delete
- Modification
- givenName: (null)
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@fbe6f598: ERR_55 Trying to remove an non-existant attribute:
- attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
- DESC 'RFC2256: first name(s) for which the entity is known by'
- SUP name
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
- USAGE userApplications
- )
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2057)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:302)
-
-
-Here, the entry does not contain the _givenName_ attribute.
-
-Another potential error is when you trying to remove a mandatory attribute, per the entry's ObjectClass constraints.
-
-Otherwise, the server might forbid modification of entry due to the ACIs that are applicable to it.
-
-Again the entry *must* exist prior to performing the modification!
-
-## Adding, removing or replacing attribute values
-
-You can now update an attribute's values themselves, atomically, instead of removing the full attribute, and add it back but with updated values. We use the exact same _Modification_ instance, with the same three _ModificationOperation_, except that the semantics slightly differ.
-
-Typically, this is what happens when using one of the three _ModificationOperation_ on an attribute:
-
-* ModificationOperation.ADD_ATTRIBUTE : add values to an attribute. If the Attribute does not exist, it will be added
-* ModificationOperation.REMOVE_ATTRIBUTE : remove values from an attribute.
-* ModificationOperation.REPLACE_ATTRIBUTE : replace all the values from an attribute by the provided new values
-
-### Add values
-
-Let's see with the addition of values. Here, we will assume we have an entry like:
-
- dn: uid=jDoe,dc=acme,dc=com
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- uid: jDoe
- userPassword: secret
- sn: John Tom Doe
- cn: Doe
- givenName: John
-
-We will add the 'Tom' given name to the _givenName_ attribute in this entry :
-
- :::Java
- ...
- Modification addedGivenNameValue = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName", "Tom" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenNameValue );
- ...
-
-The entry now has two values for the _giveName_ attribute :
-
- dn: uid=jDoe,dc=acme,dc=com
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- uid: jDoe
- userPassword: secret
- sn: John Tom Doe
- cn: Doe
- givenName: John
- givenName: Tom
-
-
-#### Errors
-
-Again, such an operation might fail for many reasons. Let's see what are the possible errors:
-
-First, if the attribute's value already exists. You will get an error like this:
-
- org.apache.directory.api.ldap.model.exception.LdapAttributeInUseException: ATTRIBUTE_OR_VALUE_EXISTS: failed for MessageType :
- MODIFY_REQUEST
- Message ID : 5
- Modify Request
- Object : 'uid=admin,ou=system'
- Modification[0]
- Operation : add
- Modification
- givenName: John
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@867e79fe: ERR_54 Cannot add a value which is already present : John
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2064)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:303)
-
-Note that depending on the attribute's syntax, you may get this type of error because you entered a value with different casing when the syntax is case-insensitive. Typically, if the attribute contains the value 'John' and you try to add the value 'JOHN', you will get this error message. Be sure you know what the attribute syntax allows you to do...
-
-Second, if the attribute is single valued, it will not be possible to add another value to it. When this happens you'll get the following error message:
-
- org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException: CONSTRAINT_VIOLATION: failed for MessageType : MODIFY_REQUEST
- Message ID : 3
- Modify Request
- Object : 'c=FR,ou=users,ou=system'
- Modification[0]
- Operation : add
- Modification
- c: US
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@cdf2ed2f: ERR_278 More than one value has been provided for the single-valued attribute: c
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2127)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:297)
-
-Third, the ACIs set on the server may not allow updating an entry or its attribute.
-
-### Removing values
-
-Removing values follow the same pattern. First select the entry, choose its attribute, and list the values to be removed from it. Here is an exemple:
-
- :::Java
- ...
- Modification removedGivenNameValue = new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, "givenName", "Tom" );
-
- connection.modify( "uid=Doe,dc=acme,dc=com", removedGivenNameValue );
- ...
-
-The value 'Tom' just added should now be removed from the _givenName_ attribute, but the value 'John' should still be present.
-
-How do we remove the last value of an attribute? It's quite simple. The attribute itself must be removed from the entry, if this is allowed (see below).
-
-#### Errors
-
-There are more potential erros with this operation. Let's list them all.
-
-First, the value you want to remove does not exist. You will get such an error:
-
- org.apache.directory.api.ldap.model.exception.LdapNoSuchAttributeException: NO_SUCH_ATTRIBUTE: failed for MessageType :
- MODIFY_REQUEST
- Message ID : 5
- Modify Request
- Object : 'uid=admin,ou=system'
- Modification[0]
- Operation : delete
- Modification
- givenName: Pete
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@39800276: ERR_56 Cannot remove an absent value from attribute : attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
- DESC 'RFC2256: first name(s) for which the entity is known by'
- SUP name
- EQUALITY caseIgnoreMatch
- SUBSTR caseIgnoreSubstringsMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
- USAGE userApplications
- )
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2057)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:327)
-
-Second, if you try to remove the last value of an attribute which was declared mandatory (in the schema) the following error will occur:
-
- org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException: OBJECT_CLASS_VIOLATION: failed for MessageType :
- MODIFY_REQUEST
- Message ID : 3
- Modify Request
- Object : 'uid=billyd,ou=users,ou=system'
- Modification[0]
- Operation : delete
- Modification
- sn: billyd
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@5e80ddb2: ERR_279 Required attributes [sn(2.5.4.4)] not found within entry uid=billyd,ou=users,ou=system
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2081)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:314)
-
-Here, we tried to remove the _sn_ attribute's last value from an entry where it's a required attribute.
-
-Third, if you try to remove a value which was used as part of the entry's _RDN_ : which is never allowed. Typically, for the 'uid=billyd,ou=users,ou=system' entry, you can't remove the 'billyd' value from the 'uid' attribute. This is the error that occurs when such a modification is attempted:
-
- org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException: NOT_ALLOWED_ON_RDN: failed for MessageType :
- MODIFY_REQUEST
- Message ID : 3
- Modify Request
- Object : 'uid=billyd,ou=users,ou=system'
- Modification[0]
- Operation : delete
- Modification
- uid: billyd
- org.apache.directory.api.ldap.model.message.ModifyRequestImpl@4d149d78: ERR_62 Entry uid=billyd,ou=users,ou=system does not have the uid attributeType, which is part of the RDN";
- at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2081)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
- at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
- at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:314)
-
-There are also classical errors, when ACLs forbid the removal of a value, or the entry doesn't exist.
-
-### Replace values
-
-Here, what we want to do is to replaces all the values from an attribute with some new values. All in all, this is equivalent to first remove the values, then inject the new values, using modifications, except that in some cases, doing so will not work.
-
-An example where such an operation is mandatory is when replacing the values of a mandatory attribute with something different: with two successive operations, that would fail. A replace will work.
-
-What is important here is that the operation simply replace *all* the existing values* with new ones, removing the previous ones.
-
-Let's see how it works with a simple example, with an entry containing:
-
- dn: uid=jDoe,dc=acme,dc=com
- objectClass: person
- objectClass: organizationalPerson
- objectClass: inetOrgPerson
- uid: jDoe
- userPassword: secret
- sn: John Tom Doe
- cn: Doe
- givenName: John
- givenName: Peter
-
-We will try to replace the _givenName_:
-
- Modification replaceGn = new DefaultModification( ModificationOperation.REPLACE_ATTRIBUTE, "givenName",
- "Jack" );
-
- connection.modify( "uid=jDoe,dc=acme,dc=com", replaceGn );
-
-The modified entry will have its _givenName_ value replaced by 'Jack', the two previous values will have been removed.
-
-There is one corner case with this operation: creating a _Modification_ instance where the attribute has no value, then the attribute will be removed from the entry.
-
-#### Errors
-
-You will get the same errors seen in the two previous operation (ADD and REMOVE) for the very same use cases. Here are some more things to watch out for:
-
-* never inject more than one value in a SINGLE_VALUE attribute
-* never remove a value which is used by the RDN
-* never delete all the values of a mandatory attribute
-* always have the right to modify the entry
-* never try to update a non-existent entry
-
-### Increment attribute
-
-This feature will only work with servers supporting the feature. It can be checked by reading the _rootDSE_ _supportedFeatures_ attribute, which should contain the **1.3.6.1.1.14** value.
-
-The idea is to make it possible to increment an integer attribute in one single operation, instead of reading the entry first, and modify the value in a second operation. That makes the increment operation atomic, and faster as only one operation will be necessary.
-
-Four methods are available in the _ModifyRequest_ operation:
-
-* ModifyRequest increment( String attribute ): Increment by 1 the attribute value
-* ModifyRequest increment( Striung attribute, int ): Increment by N the attribute value
-* ModifyRequest increment( Attribute attribute ): Increment by 1 the attribute value
-* ModifyRequest increment( Attribute attribute, int ): Increment by N the attribute value
-
-As you can see, it's possible to increment the value by more than 1 (which is the default).
-
-Note that if the increment attribute is muklti-valued, then all the values will be incremented.
-
diff --git a/content/api/user-guide/2.7-moving-renaming.mdtext b/content/api/user-guide/2.7-moving-renaming.mdtext
deleted file mode 100644
index 09e980e..0000000
--- a/content/api/user-guide/2.7-moving-renaming.mdtext
+++ /dev/null
@@ -1,48 +0,0 @@
-Title: 2.7 - Moving an renaming entries
-NavPrev: 2.6-modifying.html
-NavPrevText: 2.6 - Modifying entries
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.8-comparing.html
-NavNextText: 2.8 - Comparing entries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.7 - Moving an renaming entries
-
-LDAP allows you to do more than adding, deleting or modifying entries : you can also move them, or rename them. Here, you are not changing the content of an entry, but its position in the **DIT**, or its name.
-
-Actually, changing an entry's name **may* have an impact on the entry's content, as the *DN* always contains elements that are part of the entry.
-
-Both operation can be applied at the same time.
-
-Actually the LDAP protocol reunite those two function into one call (**MODDN**, also called **MODRDN**), but for clarity, we defined three different methods, beside a fith one that mimic the LDAP protocol **MODDN** function :
-
-* _move( current DN, new superior DN )_
-* _rename ( old DN, new DN[, keep the old RDN] )_
-* _moveAndRename( current DN, new DN[, keep the old RDN])_
-* _modifyDn_( ModifyDnRequest )
-
-## Move operation
-
-## Rename operation
-
-## Move and Rename operation
-
-## ModifyDn operation
-
-## Asynchornous ModifyDn operation
\ No newline at end of file
diff --git a/content/api/user-guide/2.8-comparing.mdtext b/content/api/user-guide/2.8-comparing.mdtext
deleted file mode 100644
index 94c9a3c..0000000
--- a/content/api/user-guide/2.8-comparing.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: 2.8 - Comparing entries
-NavPrev: 2.7-moving-renaming.html
-NavPrevText: 2.7 - Moving an renaming entries
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.9-exception-management.html
-NavNextText: 2.9 - Exception management
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.8 - Comparing entries (e)
\ No newline at end of file
diff --git a/content/api/user-guide/2.9-exception-management.mdtext b/content/api/user-guide/2.9-exception-management.mdtext
deleted file mode 100644
index a5f330c..0000000
--- a/content/api/user-guide/2.9-exception-management.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: 2.9 - Exception management
-NavPrev: 2.8-comparing.html
-NavPrevText: 2.8 - Comparing entries
-NavUp: 2-basic-ldap-api-usage.html
-NavUpText: 2 - Basic LDAP API usage
-NavNext: 2.10-ldap-connection-template.html
-NavNextText: 2.10 - The LdapConnectionTemplate
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.9 - Exception management (...)
diff --git a/content/api/user-guide/3-advanced-ldap-api-usage.mdtext b/content/api/user-guide/3-advanced-ldap-api-usage.mdtext
deleted file mode 100644
index 648eb70..0000000
--- a/content/api/user-guide/3-advanced-ldap-api-usage.mdtext
+++ /dev/null
@@ -1,35 +0,0 @@
-Title: 3 - Advanced LDAP API Usage
-NavPrev: 2-basic-ldap-api-usage.html
-NavPrevText: 2 - Basic LDAP API Usage
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 4-schema-management.html
-NavNextText: 4 - Schema Management
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3 - Advanced LDAP API Usage (...)
-
-## Contents
-
-* [Controls](3.1-controls.html)
-* [Extended operations (e)](3.2-extended-operations.html)
-* [Referrals (e)](3.3-referrals.html)
-* [Aliases (e)](3.4-aliases.html)
-* [LDIF, DSML (...)](3.5-ldif-dsml.html)
-* [Abandonning an operation (e)](3.6-abandonning.html)
-* [Server informations (e)](3.7-server-informations.html)
diff --git a/content/api/user-guide/3.1-controls.mdtext b/content/api/user-guide/3.1-controls.mdtext
deleted file mode 100644
index 6c3ae77..0000000
--- a/content/api/user-guide/3.1-controls.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: 3.1 - Controls
-NavPrev: 3-advanced-ldap-api-usage.html
-NavPrevText: 3 - Advanced LDAP API Usage
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.2-extended-operations.html
-NavNextText: 3.2 - Extended Operations
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1 - Controls
-
-A LDAP Control is an extension to an operation. It tells the server to do something aside the standard operation, or it let the server send back some information to the client. A Control contains three different parts :
-
-* An identifier, the control OID
-* A flag telling the server what to do if it does not know about the control or if it results in an error (either return an error or ignore the control)
-* A value which is generally BER encoded
-
-There are many controls available, some being standardized, other being server specific.
-
-One or more control can be added to any operation.
-
-Note that either the client or the server might not know about the controls being used, and if the criticality flag is set to FALSE, the server will ignore the control in this case.
-
-Please check [this page](6.7-control.html) for a detailed description on controls usage.
\ No newline at end of file
diff --git a/content/api/user-guide/3.2-extended-operations.mdtext b/content/api/user-guide/3.2-extended-operations.mdtext
deleted file mode 100644
index 1154c7f..0000000
--- a/content/api/user-guide/3.2-extended-operations.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.2 - Extended Operations
-NavPrev: 3.1-controls.html
-NavPrevText: 3.1 - Controls
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.3-referrals.html
-NavNextText: 3.3 - Referrals
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.2 - Extended Operations
-
diff --git a/content/api/user-guide/3.3-referrals.mdtext b/content/api/user-guide/3.3-referrals.mdtext
deleted file mode 100644
index 2f8852f..0000000
--- a/content/api/user-guide/3.3-referrals.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.3 - Referrals
-NavPrev: 3.2-extended-operations.html
-NavPrevText: 3.2 - Extended Operations
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.4-aliases.html
-NavNextText: 3.4 - Aliases
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.3 - Referrals
-
diff --git a/content/api/user-guide/3.4-aliases.mdtext b/content/api/user-guide/3.4-aliases.mdtext
deleted file mode 100644
index dfe5562..0000000
--- a/content/api/user-guide/3.4-aliases.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.4 - Aliases
-NavPrev: 3.3-referrals.html
-NavPrevText: 3.3 - Referrals
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.5-ldif-dsml.html
-NavNextText: 3.5 - LDIF and DSML
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.4 - Aliases
-
diff --git a/content/api/user-guide/3.5-ldif-dsml.mdtext b/content/api/user-guide/3.5-ldif-dsml.mdtext
deleted file mode 100644
index 48175d5..0000000
--- a/content/api/user-guide/3.5-ldif-dsml.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.5 - LDIF and DSML
-NavPrev: 3.4-aliases.html
-NavPrevText: 3.4 - Aliases
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.6-abandonning.html
-NavNextText: 3.6 - Abandonning an operation
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.5 - LDIF and DSML
-
diff --git a/content/api/user-guide/3.6-abandonning.mdtext b/content/api/user-guide/3.6-abandonning.mdtext
deleted file mode 100644
index 7506cea..0000000
--- a/content/api/user-guide/3.6-abandonning.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.6 - Abandonning an operation
-NavPrev: 3.5-ldif-dsml.html
-NavPrevText: 3.5 - LDIF and DSML
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 3.7-server-informations.html
-NavNextText: 3.7 - Server Informations
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.6 - Abandonning an operation
-
diff --git a/content/api/user-guide/3.7-server-informations.mdtext b/content/api/user-guide/3.7-server-informations.mdtext
deleted file mode 100644
index a852f1b..0000000
--- a/content/api/user-guide/3.7-server-informations.mdtext
+++ /dev/null
@@ -1,26 +0,0 @@
-Title: 3.7 - Server informations
-NavPrev: 3.6-abandonning.html
-NavPrevText: 3.6 - Abandonning an operation
-NavUp: 3-advanced-ldap-api-usage.html
-NavUpText: 3 - Advanced LDAP API Usage
-NavNext: 4-schema-management.html
-NavNextText: 4 - Schema Management
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.7 - Server informations
-
diff --git a/content/api/user-guide/4-schema-management.mdtext b/content/api/user-guide/4-schema-management.mdtext
deleted file mode 100644
index a7d9156..0000000
--- a/content/api/user-guide/4-schema-management.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: 4 - Schema Management
-NavPrev: 3-advanced-ldap-api-usage.html
-NavPrevText: 3 - Advanced LDAP API Usage
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 5-ldap-security.html
-NavNextText: 5 - LDAP Security
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - Schema Management
-
-Every LDAP server necessarily has a schema that's used to define its accepted data elements along with their rules for usage (syntax).
-
-An LDAP Schema is a complex combination of many schema elements. Here's we'll define those schema elements and how to organize them. Last, but not least, we'll explain how to leverage the schema on the client side.
-
-## Contents
-
-* [Schema](4.1-schema.html)
-* [SchemaManager](4.2-schema-manager.html)
- * [SchemaObjects](4.2.1-schema-objects.html)
- * [AttributeTypes](4.2.1.1-attribute-types.html)
- * [ObjectClasses](4.2.1.2-object-classes.html)
- * [Syntaxes](4.2.1.3-syntaxes.html)
- * [MatchingRules](4.2.1.4-matching-rules.html)
- * [DITContentRules](4.2.1.5-dit-content-rules.html)
- * [DITStructureRules](4.2.1.6-dit-structure-rules.html)
- * [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
- * [NameForms](4.2.1.8-name-forms.html)
- * [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
- * [Registries](4.2.2-registries.html)
- * [SchemaLoader](4.2.3-schema-loader.html)
diff --git a/content/api/user-guide/4.1-schema.mdtext b/content/api/user-guide/4.1-schema.mdtext
deleted file mode 100644
index d82a6d3..0000000
--- a/content/api/user-guide/4.1-schema.mdtext
+++ /dev/null
@@ -1,47 +0,0 @@
-Title: 4.1 - Schema
-NavPrev: 4-schema-management.html
-NavPrevText: 4 - Schema Management
-NavUp: 4-schema-management.html
-NavUpText: 4 - Schema Management
-NavNext: 4.2-schema-manager.html
-NavNextText: 4.2 - Schema manager
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.1 - Schema
-
-A **Schema** is a set of elements that are used by the **LDAP Server** to describe the data that are stored. The top two elements are **ObjectClass** and **AttributeType**. An **ObjectClass** is a container, describing what an **LDAP** entry can contain, while an **AttributeType** describe each singe element stored in this container.
-
-The key here is that an **LDAP** entry uses **ObjectClasses** to list all the possible **AttributeTypes** that an entry can contain, some of them being mandatory, some other optional.
-
-Now, there is more. We have many other **Schema Objects** that are colateral:
-
-* **LdapComparator** (_ApacheDS_ specific)
-* **DitContentRule**
-* **DitStructureRule**
-* **MatchingRule**
-* **MatchingRuleUse**
-* **NameForm**
-* **Normalizer** (_ApacheDS_ specific)
-* **Syntax**
-* **SyntaxChecker** (_ApacheDS_ specific)
-
-Most of those elements are defined in [RFC 4512](https://tools.ietf.org/html/rfc4512), we have added three others (**LDdapComparator**, **Normalizer** and **SyntaxChecker**) in order to make the server easy to extend by adding some new ones.
-
-Those **SchemaObjects** are used to refine the relation between elements, or define their syntax, or some other constraints. The most important ones are **LdapComparator**, **MatchingRule**, **Normalizer**, **Syntax** and **SyntaxChecker**. All of them have dependencies, exposed in this picture:
-
-![SchemaObjects relationship](images/SchemaObjects.png)
diff --git a/content/api/user-guide/4.2-schema-manager.mdtext b/content/api/user-guide/4.2-schema-manager.mdtext
deleted file mode 100644
index d0ea011..0000000
--- a/content/api/user-guide/4.2-schema-manager.mdtext
+++ /dev/null
@@ -1,81 +0,0 @@
-Title: 4.2 - Schema Manager
-NavPrev: 4.1-schema.html
-NavPrevText: 4.1 - Schema
-NavUp: 4-schema-management.html
-NavUpText: 4 - Schema Management
-NavNext: 5-ldap-security.html
-NavNextText: 5 - LDAP Security
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2 - Schema Manager
-
-The API and the ApacheDS server components must to keep schema elements available to interrogate and use. This is done through what we call a **SchemaManager**. It hides the internal structure of the schema objects from the users.
-
-
-## Contents
-
-* [SchemaObjects](4.2.1-schema-objects.html)
- * [AttributeTypes](4.2.1.1-attribute-types.html)
- * [ObjectClasses](4.2.1.2-object-classes.html)
- * [Syntaxes](4.2.1.3-syntaxes.html)
- * [MatchingRules](4.2.1.4-matching-rules.html)
- * [DITContentRules](4.2.1.5-dit-content-rules.html)
- * [DITStructureRules](4.2.1.6-dit-structure-rules.html)
- * [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
- * [NameForms](4.2.1.8-name-forms.html)
- * [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
-* [Registries](4.2.2-registries.html)
-* [SchemaLoader](4.2.43-schema-loader.html)
-
-## Introduction
-
-The **SchemaManager** stores all the Schema elements (**[AttributeTypes (e)]()**, **[ObjectClasses (e)]()**, ... Internally, we store these elements into what is call a **Registries**. Registries are hives where each Schema Object is stored. Each schema element has a dedicated **Registry** associated with it. Think of it as a Map which returns a reference to a specific Schema Element according to its name or OID.
-
- Note :
- Each Schema Element is properly defined by one of its names or <b>OID</b>. The <b>OID</b> must be unique across all schema elements,
- when the name can be used in different schema element (for instance, the <b>audio</b> <b>AttributeType</b> or <b>ObjectClass</b>)
-
-From the user point of view, the **SchemaManager** is seen as a representation of the available LDAP schema elements. It can of course be extended, or modified, by adding or removing schema elements. For historic reasons, the schema elements are gathered into what we call a **schema**. Usually, this is what you load into a **schemaManager**
-
-The server has one instance of a **SchemaManager**, which is used internally, and a users aren't allowed to control it. On the client side, we can load a **SchemaManager** either from the server (which will be a duplicated instance), or from existing schema files. We can even create a brand new **SchemaManager** and fill it with anything needed.
-
-## The various pieces of the puzzle...
-
-Creating a **SchemaManager** results in a complex structure being created, and involves a lot of other helper class. We will separate the description into three groups:
-
-* The elements stored in the **SchemaManager**
-* The containers in which those **SchemaObject** instances are stored, called **Registries**
-* The classes used to initialize the **SchemaManager**, called the **SchemaLoader** (whch comes in various flavors)
-
-## Getting a SchemaManager
-
-The very first thing we do to access the schema elements is to gain access to the **SchemaManager**. This can be done in many ways:
-
-* you can create one from scratch, and load it with the elements you want
-* you can use a default **SchemaManager**, with some default schema elements
-* you can create a **SchemaManager**, and load the schema elements from a destination
-* last, not least - and probably the most interesting possibility -, you can connect to a LDAP server and load the schema from it.
-
-We will show how to proceed in each of these four use cases.
-
-
-## Using a SchemaManager
-
-Let's first assume you have an instance of a **SchemaManager** (we will see later how to get such an instance).
-
-
diff --git a/content/api/user-guide/4.2.1-schema-objects.mdtext b/content/api/user-guide/4.2.1-schema-objects.mdtext
deleted file mode 100644
index edfa6a8..0000000
--- a/content/api/user-guide/4.2.1-schema-objects.mdtext
+++ /dev/null
@@ -1,95 +0,0 @@
-Title: 4.2.1 - Schema Objects
-NavPrev: 4.2-schema-manager.html
-NavPrevText: 4.2 - Schema Manager
-NavUp: 4.2-schema-manager.html
-NavUpText: 4.2 - Schema Manager
-NavNext: 4.2.2-registries.html
-NavNextText: 4.2.2 - Registries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1 - Schema Objects
-
-## Content
-
-* [AttributeTypes](4.2.1.1-attribute-types.html)
-* [ObjectClasses](4.2.1.2-object-classes.html)
-* [Syntaxes](4.2.1.3-syntaxes.html)
-* [MatchingRules](4.2.1.4-matching-rules.html)
-* [DITContentRules](4.2.1.5-dit-content-rules.html)
-* [DITStructureRules](4.2.1.6-dit-structure-rules.html)
-* [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
-* [NameForms](4.2.1.8-name-forms.html)
-* [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
-
-# Introduction
-
-LDAP defines 8 different Schema Objects, that are used to define what we can store in a LDAP server, how what we store is organized, and which constraints are applied on those elements.
-
-In the API, we also define 3 other **SchemaObjects**, which are necessary to control the values and to compare them. They are hard coded, and can be extended if needed.
-
-## The Schema Object list
-
-Here are the 8 LDAP **SchemaObject**s and the 3 additional ones :
-
-| Name | Description |
-|---|---|
-| **[ObjectClasses (e)](4.8-object-classes.html)** | Defines the permitted **AttributeType**s of an entry |
-| **[AttributeTypes (...)](4.2-attribute-types.html)** | Defines the type of attributes we can store in an entry |
-| **[Syntaxes (e)](4.9-syntaxes.html)** | Defines the syntax that is applied to the **AttributeType** values |
-| **[MatchingRules (e)](4.5-matching-rules.html)** | The rules that are used to match **AttributeType**'s values |
-| **[DITContentRules (e)](4.3-dit-content-rules.html)** | Defines the allowed or forbidden **AttributeType**s and **ObjectClasse**s |
-| **[DITStructureRules (e)](4.4-dit-structure-rules.html)** | Defines the hierarchical relationships between entries |
-| **[NameForms (e)](4.7-name-forms.html)** | Defines the **AttributeType**s that may be use in a **RDN** |
-| **[MatchingRuleUses (e)](4.6-matching-rule-uses.html)** | Defines the **AttributeType**s that can be used for a **MatchingRule** |
-| _**[SyntaxChecker (e)]()**_ | The function that do the check on values |
-| _**[Normalizer (e)]()**_ | The function that normalize the values |
-| _**[LdapComparator (e)]()**_ | The function that compare two values |
-
-The last three elements are ApacheDS specific.
-
-All those elements have some tight relationships. The following schema expose all the relations between all those elements :
-
-![](images/SchemaObjects.png)
-
-## Java Class hierarchy
-
-Here is the relation between the various Java classes that are implementing the various **SchemaObject**s elements :
-
-![](images/SchemaObjectHier.png)
-
-As we can see, the 3 specific **SchemaObject**s are derived from a **LoadableSchemaObject** abstract class, which allows the developper to inject a new instance of one of those 3 **SchemaObject**s.
-
-From teh developper point of view, the interesting methods are the following :
-
-* equals() : checks that two **SchemaObject** instances are equals
-* getDescription() : gets the DESC part of the **SchemaObject**
-* getExtension(String) : gets the given extension (X-abc)
-* getExtensions() : gets all the extensions for this **SchemaObject**
-* getName() : gets the first name fo this **SchemaObject**
-* getNames() : gets all the nales for this **SchemaObject**
-* getObjectType() : gets the **SchemaObject** type
-* getOid() : gets the **SchemaObject** OID
-* getSchemaName() : gets the associated shcema name, if any
-* getSpecification() : gets the OpenLDAP synatx specification for this **SchemaObject**
-* hasExtension(String) : tells if this **SchemaObject** has some extensions
-* isDisabled() : tells if this **SchemaObject** is disabled
-* isEnabled() : tells if this **SchemaObject** is enabled
-* isObsolete() : tells if this **SchemaObject** is obsolete and should not been used
-* isReadOnly() : tells if this **SchemaObject** can't be modified
-
-All those methods are available for all the **SchemaObject**. There are specific methods available for each specific **SchemaObject**, taht will be exposed in the dedicated pages.
diff --git a/content/api/user-guide/4.2.1.1-attribute-types.mdtext b/content/api/user-guide/4.2.1.1-attribute-types.mdtext
deleted file mode 100644
index acced9f..0000000
--- a/content/api/user-guide/4.2.1.1-attribute-types.mdtext
+++ /dev/null
@@ -1,81 +0,0 @@
-Title: 4.2.1.1 - AttributeTypes
-NavPrev: 4.2.1-schema-objects.html
-NavPrevText: 4.2.1 - Schema Objects
-NavUp: 4.2.1-schema-object.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.2-object-classes.html
-NavNextText: 4.2.1.2 - ObjectClasses
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.1 - AttributeTypes
-
-The **AttributeType** **SchemaObject** exposes extra parameters. Here is the description as found in RFC 4512 :
-
- 4.1.2. Attribute Types
-
- Attribute Type definitions are written according to the ABNF:
-
- AttributeTypeDescription = LPAREN WSP
- numericoid ; object identifier
- [ SP "NAME" SP qdescrs ] ; short names (descriptors)
- [ SP "DESC" SP qdstring ] ; description
- [ SP "OBSOLETE" ] ; not active
- [ SP "SUP" SP oid ] ; supertype
- [ SP "EQUALITY" SP oid ] ; equality matching rule
- [ SP "ORDERING" SP oid ] ; ordering matching rule
- [ SP "SUBSTR" SP oid ] ; substrings matching rule
- [ SP "SYNTAX" SP noidlen ] ; value syntax
- [ SP "SINGLE-VALUE" ] ; single-value
- [ SP "COLLECTIVE" ] ; collective
- [ SP "NO-USER-MODIFICATION" ] ; not user modifiable
- [ SP "USAGE" SP usage ] ; usage
- extensions WSP RPAREN ; extensions
-
- usage = "userApplications" / ; user
- "directoryOperation" / ; directory operational
- "distributedOperation" / ; DSA-shared operational
- "dSAOperation" ; DSA-specific operational
-
-The follwing methods have been added to cover ones not already present within the **SchemaObject** interface :
-
-* getEquality() : returns the **MatchingRule** instance used to control the equality of the **AttributeType**
-* getEqualityName() : returns the name of the EQUALITY **MatchingRule**.
-* getEqualityOid() : returns the OID of the EQUALITY **MatchingRule**.
-* getOrdering() : returns the **MatchingRule** instance used to control the ordering of the *AttributeType**
-* getOrderingName() : returns the name of the ORDERING **MatchingRule**.
-* getOrderingOid() : returns the OID of the ORDERING **MatchingRule**.
-* getSubstring() : returns the **MatchingRule** instance used to match a substring from the **AttributeType**
-* getSubstringName() : returns the name of the SUBSTR **MatchingRule**.
-* getSubstringOid() : returns the OID of the SUBSTR **MatchingRule**.
-* getSuperior() : returns the **AttributeType** instance that this instance inherits from
-* getSuperiorName() : returns the superior **AttributeType**'s name
-* getSuperiorOid() : returns the superior **AttributeType**'s OID
-* getSyntax() : returns the associated **LdapSyntax** instance (or the parent's **AttributeType**'s one)
-* getSyntaxLength() : returns the maximum length for the **AttributeType** value
-* getSyntaxName() : returns the associated **LdapSyntax** instance's name
-* getSyntaxOid() : returns the associated **LdapSyntax** instance's OID
-* getUsage() : returns the usage (one of (USER_APPLICATIONS, DIRECTORY_OPERATION, DISTRIBUTED_OPERATION and DSA_OPERATION)
-* isAncestorOf(AttributeType) : tells if the **AttributeType** is the superior of another one
-* isCollective() : tells if the **AttributeType** is a collective attribute
-* isDescendantOf(AttributeType)
-* isOperational() : tells if the **AttributeType** is an operational attribute (one of DIRECTORY_OPERATION, DISTRIBUTED_OPERATION and DSA_OPERATION)
-* isSingleValued() : tells if the **AttributeType** only accept single values
-* isUser() : tells if the **AttributeType** is a USER_APPLICATIONS attribute
-* isUserModifiable() : tells if the **AttributeType** is modifiable or not
-
-What is important to know is that an **AttributeType** may inherit some characteristics from a **SUP** **AttributeType**. For example, the **Syntax**, **MatchingRules**, etc. In any case, if you don't define the specific characteristics for a given **AttributeType**, they'll be inherited from its parent -- if there is one.
diff --git a/content/api/user-guide/4.2.1.2-object-classes.mdtext b/content/api/user-guide/4.2.1.2-object-classes.mdtext
deleted file mode 100644
index 1d08f96..0000000
--- a/content/api/user-guide/4.2.1.2-object-classes.mdtext
+++ /dev/null
@@ -1,59 +0,0 @@
-Title: 4.2.1.2 - ObjectClasses
-NavPrev: 4.2.1.1-attribute-types.html
-NavPrevText: 4.2.1.1 - AttributeTypes
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.3-syntaxes.html
-NavNextText: 4.2.1.3 - Syntaxes
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.2 - ObjectClasses
-
-The **ObjectClass** represents the list of mandatory and optional **AttributeType**s
-
-Here is the description as found in RFC 4512 :
-
- ObjectClassDescription = LPAREN WSP
- numericoid ; object identifier
- [ SP "NAME" SP qdescrs ] ; short names (descriptors)
- [ SP "DESC" SP qdstring ] ; description
- [ SP "OBSOLETE" ] ; not active
- [ SP "SUP" SP oids ] ; superior object classes
- [ SP kind ] ; kind of class
- [ SP "MUST" SP oids ] ; attribute types
- [ SP "MAY" SP oids ] ; attribute types
- extensions WSP RPAREN
-
- kind = "ABSTRACT" / "STRUCTURAL" / "AUXILIARY"
-
-Each **ObjectClass** as a type (ABSTRACT, STRUCTURAL or AUXILIARY) and may inherit from another **ObjectClass**
-
-The important part of the **ObjectClass** is the **AttributeType** definition : not only does it list all of the **AttributeTypes** defined in the list itself, but it also contains the inherited attribute types. Note that you may have an optional **AttributeType** defined in a parent, which is made mandatory.
-
-The available methods are :
-
-* getMayAttributeTypeOids() : gets the list of optional **AttributeType**s (proper and inherited)
-* getMayAttributeTypes() : gets the list of optional **AttributeType**s' OID(proper and inherited)
-* getMustAttributeTypeOids() : gets the list of mandatory **AttributeType**s' OID (proper and inherited)
-* getMustAttributeTypes() : gets the list of mandatory **AttributeType**s (proper and inherited)
-* getSuperiorOids() : gets the list of inherited **ObjectClass**es' OIDs (the full hierarchy)
-* getSuperiors() : gets the list of inherited **ObjectClass**es (the full hierarchy)
-* getType() : returns the **ObjectClass** type (one of ABSTRACT, AUXILIARY or STRUCTURAL)
-* isAbstract() : tells if the **ObjectClass* is ABSTRACT.
-* isAuxiliary() : tells if the **ObjectClass* is AUXILIARY.
-* isStructural() : tells if the **ObjectClass* is STRUCTURAL.
diff --git a/content/api/user-guide/4.2.1.3-syntaxes.mdtext b/content/api/user-guide/4.2.1.3-syntaxes.mdtext
deleted file mode 100644
index f0e61a9..0000000
--- a/content/api/user-guide/4.2.1.3-syntaxes.mdtext
+++ /dev/null
@@ -1,43 +0,0 @@
-Title: 4.2.1.3 - Syntaxes
-NavPrev: 4.2.1.2-object-classes.html
-NavPrevText: 4.2.1.2 - ObjectClasses
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.4-matching-rules.html
-NavNextText: 4.2.1.4 - MatchingRules
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.3 - Syntaxes
-
-The **LdapSyntax** class implements the LDAP **Syntax**s schema objects. A **Syntax** defines constraints applied to the **AttributeType** value. Here is the RFC description of a **Syntax** :
-
- SyntaxDescription = LPAREN WSP
- numericoid ; object identifier
- [ SP "DESC" SP qdstring ] ; description
- extensions WSP RPAREN ; extensions
-
-The important part of the **Syntax** is its **OID** which is used in the **AttributeType** and **MatchingRule**.
-
-In order to enforce a **Syntax**, the **LDAP API** is associated with a **SyntaxChecker**, which is a Java class (see the chapter about ApacheDS Schema Elements).
-
-## Methods
-
-The are the two most important methods that you might need:
-
-* getSyntaxChecker() : retreive the associated class that is used to check a syntax
-* isHumanReadable() : tells if the AttributeType is a String or a byte[]
diff --git a/content/api/user-guide/4.2.1.4-matching-rules.mdtext b/content/api/user-guide/4.2.1.4-matching-rules.mdtext
deleted file mode 100644
index ca9b90a..0000000
--- a/content/api/user-guide/4.2.1.4-matching-rules.mdtext
+++ /dev/null
@@ -1,45 +0,0 @@
-Title: 4.2.1.4 - MatchingRules
-NavPrev: 4.2.1.3-syntaxes.html
-NavPrevText: 4.2.1.3 - Syntaxes
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.5-dit-content-rules.html
-NavNextText: 4.2.1.5 - DITContentRules
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.4 - MatchingRules
-
-A **MatchingRule** is used when processing search requests using **Filter**s, or a **Compare** or during **Modify** operations. An **AttributeType** defines up to 3 types of **MatchingRule**s:
-
-* EQUALITY : for comparisons for equality
-* ORDERING : for comparisons involving the <= or >= operators
-* SUBSTR : for comparisons involving substrings, like '*xyz' or 'x*z'
-
-There are a few extra parameters that are defined in the **MatchingRule** class:
-
-* getSyntax() : gets the **Syntax** instance associated with the **MatchingRule**
-* getSyntaxOid() : gets the **Syntax** OID associated with the **MatchingRule**
-
-We also have 2 specific methods that are used to compare or normalize a value:
-
-* getLdapComparator() : gets the **LdapComparator** to use to compare 2 values
-* getNormalizer() : gets the **Normalizer** used to normalize a value
-
-Those are convenient methods, specifically when you need to compare two values.
-
-A **MatchingRule** instance is associated with a **LdapSyntax** and a **Normalizer** because it may need to get information about the attribute value check and normalization. It also contains a reference to the associated **LdapComparator**.
diff --git a/content/api/user-guide/4.2.1.5-dit-content-rules.mdtext b/content/api/user-guide/4.2.1.5-dit-content-rules.mdtext
deleted file mode 100644
index 3badd01..0000000
--- a/content/api/user-guide/4.2.1.5-dit-content-rules.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.1.5 - DitContentRules
-NavPrev: 4.2.1.4-matching-rules.html
-NavPrevText: 4.2.1.4 - MatchingRules
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - SchemaObjects
-NavNext: 4.2.1.6-dit-structure-rules.html
-NavNextText: 4.2.1.6 - DitStructureRules
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.5 - DitContentRules
-
-Not yet supported...
\ No newline at end of file
diff --git a/content/api/user-guide/4.2.1.6-dit-structure-rules.mdtext b/content/api/user-guide/4.2.1.6-dit-structure-rules.mdtext
deleted file mode 100644
index 93aee30..0000000
--- a/content/api/user-guide/4.2.1.6-dit-structure-rules.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.1.6 - DitStructureRules
-NavPrev: 4.2.1.5-dit-content-rules.html
-NavPrevText: 4.2.1.5 - DitContentRules
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.7-matching-rule-uses.html
-NavNextText: 4.2.1.7 - MatchingRuleUses
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.6 - DitStructureRules
-
-Not yet supported...
\ No newline at end of file
diff --git a/content/api/user-guide/4.2.1.7-matching-rule-uses.mdtext b/content/api/user-guide/4.2.1.7-matching-rule-uses.mdtext
deleted file mode 100644
index 7e8e43d..0000000
--- a/content/api/user-guide/4.2.1.7-matching-rule-uses.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.1.7 - MatchingRuleUses
-NavPrev: 4.2.1.6-dit-structure-rules.html
-NavPrevText: 4.2.1.6 - DitStructureRules
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.8-name-forms.html
-NavNextText: 4.2.1.8 - NameForms
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.7 - MatchingRuleUses
-
-Not yet supported...
diff --git a/content/api/user-guide/4.2.1.8-name-forms.mdtext b/content/api/user-guide/4.2.1.8-name-forms.mdtext
deleted file mode 100644
index 74f2bc9..0000000
--- a/content/api/user-guide/4.2.1.8-name-forms.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.1.8 - NameForms
-NavPrev: 4.2.1.7-matching-rule-use.html
-NavPrevText: 4.2.1.7 - Matching Rule Uses
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.1.9-apacheds-schema-elements.html
-NavNextText: 4.2.1.9 - ApacheDS Schema Elements
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.8 - NameForms
-
-Not yet supported...
diff --git a/content/api/user-guide/4.2.1.9-apacheds-schema-elements.mdtext b/content/api/user-guide/4.2.1.9-apacheds-schema-elements.mdtext
deleted file mode 100644
index 645d0db..0000000
--- a/content/api/user-guide/4.2.1.9-apacheds-schema-elements.mdtext
+++ /dev/null
@@ -1,64 +0,0 @@
-Title: 4.2.1.9 - ApacheDS Schema Element
-NavPrev: 4.2.1.8-name-forms.html
-NavPrevText: 4.2.1.8 - Name Forms
-NavUp: 4.2.1-schema-objects.html
-NavUpText: 4.2.1 - Schema Objects
-NavNext: 4.2.2-registries.html
-NavNextText: 4.2.2 - Registries
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.1.9 - ApacheDS Schema Element
-
-We have defined 3 more schema elements that are needed to use the **SchemaManager**:
-* SyntaxChecker : used to check a value's syntax
-* Normalizer : used to normalize a value before a comparison
-* LdapComparator : used to compare two values for a given syntax
-
-## SyntaxChecker
-
-This class exposes this method:
-
-* isValidSyntax(Object): tells if the value is correct
-
-## Normalizer
-
-This class is used to normalize values into a canonical form. This is a process exposed in [RFC4518|https://tools.ietf.org/html/rfc4518]. Basically, each String is passed trhough a 6-step process:
-
-* Transcode
-* Map
-* Normalize
-* Prohibit
-* Check Bidi (Bidirectional)
-* Insignificant Character Handling
-
-This can be done using one of these two methods:
-
-* normalize(String) : normalize a String
-* normalize(Value<?>) : normalize a Value, which can be a String or a byte[]
-
-This class is used internally when comparing two values, but you should not need it.
-
-## LdapComparator
-
-This class is used to compare two values whenever their syntax are the same. Here is the method that does it:
-
-* equals(Object) : says if a value is equal to another one.
-
-Note because the **LdapComparator** class implements the **Comparator** interface, one can compare two values using the following method:
-
-* compare( v1, v2 ): compares two values
diff --git a/content/api/user-guide/4.2.2-registries.mdtext b/content/api/user-guide/4.2.2-registries.mdtext
deleted file mode 100644
index 2651691..0000000
--- a/content/api/user-guide/4.2.2-registries.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: 4.2.2 - Registries
-NavPrev: 4.2.1-schema-objects.html
-NavPrevText: 4.2.1 Schema Objects
-NavUp: 4.2-schema-manager.html
-NavUpText: 4.2 - Schema Manager
-NavNext: 4.2.3-schema-loader.html
-NavNextText: 4.2.3 - Schema Loader
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.2 - Registries
-
-The **Registries** are the place where all **SchemaObject**s are stored and retrieved from. It contains a registry per **SchemaObject**, plus a global registry which is used to retreive a **SchemaObject** from its OID (the OID is unique), and a list of the loaded schemas.
-
-Basically, it's the data center of the **SchemaManager**. When you call **SchemaManager.getAttributeType( String )**, the **SchemaManager** will look into the **AttributeTypeRegistry** for the **AttributeType** instance associated with the name or OID.
-
-You usually won't need to manipulate this class at all.
diff --git a/content/api/user-guide/4.2.3-schema-loader.mdtext b/content/api/user-guide/4.2.3-schema-loader.mdtext
deleted file mode 100644
index 8a2b5cd..0000000
--- a/content/api/user-guide/4.2.3-schema-loader.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 4.2.3 - SchemaLoader
-NavPrev: 4.2.2-registries.html
-NavPrevText: 4.2.2 - Registries
-NavUp: 4.2-schema-manager.html
-NavUpText: 4.2 - Schema Manager
-NavNext: 5-ldap-security.html
-NavNextText: 5 - LDAP Security
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4.2.3 - SchemaLoader
-
-The **SchemaLoader** is a utility class that loads a **Schema** into the **SchemaManager**. It comes in many flavors, depending on the source containing the **Schema**.
diff --git a/content/api/user-guide/5-ldap-security.mdtext b/content/api/user-guide/5-ldap-security.mdtext
deleted file mode 100644
index b427d92..0000000
--- a/content/api/user-guide/5-ldap-security.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: 5 - LDAP Security
-NavPrev: 4-schema-management.html
-NavPrevText: 4 - Schema Management
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 6-ldap-data-structures.html
-NavNextText: 6 - LDAP Data Structures
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5 - LDAP Security
-
-**LDAP** databases store critical information that must be kept secure. The **Apache LDAP API** can access the data securely while in flight but can't protect it while at rest -- that's for the database system itself to do.
-
-Generally speaking when it comes to securing a system, we are addressing the three **A**s: Authentication, Authorization and Auditing.
-
-The only aspect we will focus on is the **Authentication** part, because the **LDAP** protocol does not address the other two, when it comes to an **API**. We will talk about authorization a little bit in the last chapter.
-
-Another aspect of security is encryption:
-- securing the communication between the client and the server
-- password hash
-
-Last, but not least, we have seen how to perform a simple bind to an **LDAP** server using a name and a password. There are other ways to bind, using **SASL**. We will also explain how to use certificates in **SSL/StartTLS**.
-
-## Contents
-
-* [5.1 - LDAPS](5.1-ldaps.html)
-* [5.2 - StartTLS (e)](5.2-start-tls.html)
-* [5.3 - SASL Bind](5.3-sasl-bind.html)
-* [5.4 - Password handling](5.4-password-handling.html)
-* [5.5 - Certificates](5.5-certificates.html)
-* [5.6 - ACI and ACLs (e)](5.6-aci-and-acls.html)
diff --git a/content/api/user-guide/5.1-ldaps.mdtext b/content/api/user-guide/5.1-ldaps.mdtext
deleted file mode 100644
index 324ad18..0000000
--- a/content/api/user-guide/5.1-ldaps.mdtext
+++ /dev/null
@@ -1,122 +0,0 @@
-Title: 5.1 - LDAPS
-NavPrev: 5-ldap-security.html
-NavPrevText: 5 - LDAP Security
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 5.2-start-tls.html
-NavNextText: 5.2 - StartTLS
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-
-# 5.1 - LDAPS
-
-**LDAP** supports **SSL**, it's called **LDAPS**, and it uses a dedicated port. As of today, and since 2000, **LDAPS** is deprecated and **StartTLS** should be used.
-
-That being said, many servers accept **LDAPS**, and the **Apache LDAP API** supports it.
-
-## How does it work ?
-
-The **SSL** protocol ensures that data is transmitted encrypted, and guarantees that the data received is valid. Noone can capture this data and read it, assuming the ciphers used are of sufficient strength.
-
-With **SSL**, a dialog between the client and the server occurs, and when both agree on the particular cipher to use, then all subsequent data is encrypted. This dialog may include a mutual validation of their X.509 certificates.
-
-## Protocols
-
-There are many version that can be used, but the idea is to use the most recent one, if the server supports it. In any case, as we depend on **Java**, we are also limited by the supported version on the client side. Here are all of the existing versions, and their statuses:
-
-| SSLversion | Java 7 Client | Java 7 Server | Java 8 Client | Java 8 Server |
-|---|---|---|---|---|
-| 2.0 | N/A | N/A | N/A | N/A |
-| 3.0 | Disabled | Disabled | N/A | N/A |
-| 3.1 (aka TLSv1) | **Enabled** | **Enabled** | **Enabled** | **Enabled** |
-| 3.2 (aka TLSv1.1 | Disabled | **Enabled** | **Enabled** | **Enabled** |
-| 3.3 (aka TLSv1.2) | Disabled | **Enabled** | **Enabled** | **Enabled** |
-
-(_Disabled_ means it's not active by default, and so must be activated explicitly).
-
-The default is Java will choose the best fit, assuming that it always starts with the newest version (**TLSv1.2**).
-
-Still, you can enforce the version used -- if needed.
-
-## A quick primer
-
-Here is all that is needed to get **LDAPS** connections established with a server :
-
- try ( LdapConnection connection = new LdapNetworkConnection( "server-name", 636, true ) )
- {
- connection.bind( "uid=admin,ou=system", "secret" );
-
- assertTrue( connection.isAuthenticated() );
- }
-
-It's as simple as that! The **636** port is the default **LDAPS** port for standard **LDAP** servers, when running as **root**, and for **ApacheDS** you must pick **10636**. The **true** flag is set to secure the connection. You don't need to close the connection, it will be done automatically upon exiting the try{...} block.
-
-By default, the selected protocol is **TLS**, and the server's certificate is not verified.
-
-## A more sophisticated sample
-
-It's possible to have more control on the **SSL** configuration, and specifically to provide a specific **TrustManager** :
-
- try ( LdapConnection connection = new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPortSSL(),
- new NoVerificationTrustManager() ) )
- {
- connection.bind( "uid=admin,ou=system", "secret" );
-
- assertTrue( ((LdapNetworkConnection)connection).getConfig().isUseSsl() );
- assertTrue( connection.isAuthenticated() );
- }
-
-Here, we use the _NoVerificationTrustManager_ class, but you may define your own implementation of it. The **Fortress** project uses [this class](https://github.com/apache/directory-fortress-core/blob/master/src/main/java/org/apache/directory/fortress/core/ldap/LdapClientTrustStoreManager.java).
-
-## Using a configuration
-
-One step further : you can define a dedicated configuration that is passed to the constructor. Many parameters can be defined:
-
-* the enabled cipher suites: a list of ciphers that may be used (like "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", etc)
-* the enabled protocols: a list of protocals that may be used ( "SSLv3", "TLS", "TLSv1", "TLSv1.1", "TLSv1.2")
-* the KeyManager instances
-* the SecureRandom instance
-* the SSL protocol to use: one of the enabled protocols
-* the TrustManager instances
-
-All these parameters are configured using the _LdapConnectionConfig_ class :
-
- LdapConnectionConfig sslConfig = new LdapConnectionConfig();
- sslConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
- sslConfig.setUseSsl( true );
- sslConfig.setLdapPort( getLdapServer().getPortSSL() );
- sslConfig.setTrustManagers( new NoVerificationTrustManager() );
-
- try ( LdapConnection connection = new LdapNetworkConnection( sslConfig ) )
- {
- connection.bind( "uid=admin,ou=system", "secret" );
-
- assertTrue( ((LdapNetworkConnection)connection).getConfig().isUseSsl() );
- assertTrue( connection.isAuthenticated() );
- }
-
-## LDAPS or startTLS ?
-
-The important point to understand with **LDAPS** is that every request being exchanged between the client and the server is encrypted, because its underlying transport is encrypted. That means you can't start communicating with the LDAP server before the connection is secured.
-
-It has a few drawbacks:
-- first of all, it has an added CPU cost, as everything has to be encrypted and decrypted.
-- second, it requires a dedicated port, thus some specific routing rules (firewall, load balancers, etc)
-- third, it's a all of nothing choice. If you want to return to a non-encrypted communication, you must use another connection.
-
-This is the why the **startTLS** extended operation should be used instead.
diff --git a/content/api/user-guide/5.2-start-tls.mdtext b/content/api/user-guide/5.2-start-tls.mdtext
deleted file mode 100644
index 7c98009..0000000
--- a/content/api/user-guide/5.2-start-tls.mdtext
+++ /dev/null
@@ -1,91 +0,0 @@
-Title: 5.2 - StartTLS
-NavPrev: 5.1-ldaps.html
-NavPrevText: 5.1 - LDAPS
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 5.3-sasl-bind.html
-NavNextText: 5.3 - SASL Bind
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.2 - StartTLS
-
-As we have seen in the previous chapter, **LDAPS** has some drawbacks. There is a better alternative for securing communications between the client and server -- **startTLS**.
-
-The idea is to use an existing connection to send a message to the server and request it to be encrypted. We keep going with the current connection, on the same port, but the exchanged data will continue as encrypted.
-
-The **startTLS** extended operation is used for this. It's a pure LDAP request that blocks other requests on the connection until it becomes secured. Of course, if some operations are pending, the operation will not be executed until the pending operations are completed.
-
-## How to use it
-
-It's quite simple. You just have to inform an opened connection to send the **startTLS** extended operation. It can be done at any time. Here is a quick example:
-
- try ( LdapNetworkConnection connection =
- new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() ) )
- {
- connection.connect();
-
- Entry admin = connection.lookup( "uid=admin,ou=system" );
-
- // startTLS
- connection.startTls();
- ...
-
-As you can see, we'll used the _startTLS()_ method, and it occurred in the middle of an LDAP session. (There previously was data transmission with the server in clear text).
-
-You can also send the _startTLS_ request prior to a bind, protecting the entire session:
-
- try ( LdapNetworkConnection connection =
- new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() ) )
- {
- // startTLS
- connection.startTls();
-
- Entry admin = connection.lookup( "uid=admin,ou=system" );
- ...
-
-That's about it...
-
-## Advanced usage
-
-We just saw basic usage of the **startTLS** extended operation. Keep in mind that behind the scene, a **TLS** session will be established, which requires some negotiation between the client and the server. It's not different from the establishement of an **LDAPS** connection, except that we're doing it on top of an existing **LDAP** connection. Still, the client and the server must exchange ciphers, certificates, and agree on which protocol version to use. You probably need more control.
-
-The **startTLS()** method uses an **LdapConnectionConfig** instance for parameters in order to define things like -- **TrustManagers**, allowed ciphers, enabled protocol versions, **KeyManager** instances, etc. You simply need an **LdapConnectionConfig** instance, and load it with instructions. for example, if you want to use a specific **TrustManager** that doesn't verify the server's certificate:
-
- LdapConnectionConfig tlsConfig = new LdapConnectionConfig();
- tlsConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
- tlsConfig.setLdapPort( getLdapServer().getPort() );
- tlsConfig.setTrustManagers( new NoVerificationTrustManager() );
-
- try ( LdapNetworkConnection connection =
- new LdapNetworkConnection( tlsConfig ) )
- {
- // Connect
- connection.connect();
-
- // At this point, we are not oo a secured connection
- connection.bind( "uid=admin,ou=system", "secret" );
-
- // At this point, we are not oo a secured connection. Let's secure it
- connection.startTls();
- ...
-
-In this example, the **startTls** call uses the parameter that was loaded into the _tlsConfig_ instance.
-
-## Here's what isn't supported
-
-The [LDAP StartTLS RFC](https://tools.ietf.org/html/rfc2830) requires more than securing connections. Typically, it's possible to stop securing a connection, using a **Graceful Closure** operation. That feature isn't currently supported.
diff --git a/content/api/user-guide/5.3-sasl-bind.mdtext b/content/api/user-guide/5.3-sasl-bind.mdtext
deleted file mode 100644
index 80a7914..0000000
--- a/content/api/user-guide/5.3-sasl-bind.mdtext
+++ /dev/null
@@ -1,114 +0,0 @@
-Title: 5.3 - SASL Bind
-NavPrev: 5.2-start-tls.html
-NavPrevText: 5.2 - StartTLS
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 5.4-password-handling.html
-NavNextText: 5.4 - Password Handling
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
->**Note:** Work in progress...
-
-# 5.3 - SASL Bind
-
-*SASL* is defined by [RFC 4422](https://tools.ietf.org/html/rfc4422) which obsoletes [RFC2222](https://tools.ietf.org/html/rfc2222). There are also a few RFCs that are related to *SASL*, they are listed in the next paragraph.
-
-In any case, as *ApacheDS* and the *Apache LDAP API* are based on *Java*, we depend on the *Java* *SASL* impementation. Typically, this is handled by the *SunSASL* provider, which only support the following mechanisms, as of Java 8 :
-
-* PLAIN (Client)
-* CRAM-MD5 (Client/Server)
-* DIGEST-MD5 (Client/Server)
-* GSSAPI (Client/Server)
-* EXTERNAL (Client)
-
-Note that in *Java 9*, those mechanisms are spread in two different providers, the *GSSAPI* mechanism being handled by the *JdkSASL* provider.
-
-We currently don't support any other provider.
-
-## SASL Bind handling
-
-The *SASL* framework may require more than one *BindRequest*/*BindResponse* to be exchanched, as ther server may need more information from the client. The client must be ready to deal with such situation, by controling the resturned result : *SASL_BIND_IN_PROGRESS* means more is required.
-
-In any case, the client must send a first *BindRequest* with the proper information. We have dedicated methods to do so, based on the *SASL* mechanism to use :
-
-* bindSaslPlain() : *PLAIN* mechanism
-* bindSaslCramMd5() : *CRAM-MD5* mechanism
-* bindSaslDigestMd5() : *DIGEST-MD5* mechanism
-* bindSaslGssApi() : *GSSAPI* mechanism
-* bindSaslExternal() : *EXTERNAL* mechaism
-
-We don't support the *SASL* *ANONYMOUS* mechanism.
-
-There is also a more generic method that anyone can use with any mechanism, assuming we have a class implementing it :
-
-* bindSasl( Saslrequest )
-
-It's just about using an instance of a class extending the *SaslRequest* interface.
-
-
-Here is an example of a *SASL* bind, where we assume we have an entry which *uid* is "hnelson", and a *userPassword* which is "secret" (note that the password must be in clear text in the server) :
-
- :::java
- LdapNetworkConnection connection = new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() );
-
- BindResponse resp = connection.bindSaslCramMd5( "hnelson", "secret" );
- assertEquals( ResultCodeEnum.SUCCESS, resp.getLdapResult().getResultCode() );
-
-
-
-## RFCs
-
-Here are the list of RFCs related to *SASL*:
-
-![](../../images/icons/information.gif) : Informational
-
-![](../../images/icons/lightbulb.gif) : Historic
-
-![](../../images/icons/lightbulb_on.gif) : Proposed Standard
-
-![](../../images/icons/warning.gif) : Experimental
-
-![](../../images/icons/thumbs_up.gif) : Best current practice
-
-
-### Obsolete RFCs
-
-| RFC | Description | Obsoleted by | Status |
-|---|---|---|---|
-| [RFC 2222](https://tools.ietf.org/html/rfc2222) | Simple Authentication and Security Layer (SASL) | [RFC 4422](https://tools.ietf.org/html/rfc4422), [RFC 4752](https://tools.ietf.org/html/rfc4752) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 2245](https://tools.ietf.org/html/rfc2245) | Anonymous SASL Mechanism | [RFC 4505](https://tools.ietf.org/html/rfc4505) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 2831](https://tools.ietf.org/html/rfc2831) | Using Digest Authentication as a SASL Mechanism | [RFC 4505](https://tools.ietf.org/html/rfc4505) | ![](../../images/icons/lightbulb.gif) |
-| [RFC 4013](https://tools.ietf.org/html/rfc4013) | SASLprep: Stringprep Profile for User Names and Passwords | [RFC 7613](https://tools.ietf.org/html/rfc7613)| ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 7613](https://tools.ietf.org/html/rfc7613) | Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords | [RFC 8265](https://tools.ietf.org/html/rfc8265) | ![](../../images/icons/lightbulb_on.gif) |
-
-### Active RFCs
-
-| RFC | Description | Status |
-|---|---|---|---|
-| [RFC 2444](https://tools.ietf.org/html/rfc2444) | The One-Time-Password SASL Mechanism | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 2808](https://tools.ietf.org/html/rfc2808) | The SecurID(r) SASL Mechanism | ![](../../images/icons/information.gif) |
-| [RFC 4422](https://tools.ietf.org/html/rfc4422) | Simple Authentication and Security Layer (SASL) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 4505](https://tools.ietf.org/html/rfc4505) | Anonymous Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 4616](https://tools.ietf.org/html/rfc4616) | The PLAIN Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 4752](https://tools.ietf.org/html/rfc4752) | The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 5801](https://tools.ietf.org/html/rfc58à&) | Using Generic Security Service Application Program Interface (GSS-API) Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 5802](https://tools.ietf.org/html/rfc5802) | Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 6331](https://tools.ietf.org/html/rfc6331) | Moving DIGEST-MD5 to Historic | ![](../../images/icons/information.gif)|
-| [RFC 7677](https://tools.ietf.org/html/rfc7677) | SCRAM-SHA-256 and SCRAM-SHA-256-PLUS Simple Authentication and Security Layer (SASL) Mechanisms | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC 8265](https://tools.ietf.org/html/rfc8265) | Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords | ![](../../images/icons/lightbulb_on.gif) |
-
diff --git a/content/api/user-guide/5.4-password-handling.mdtext b/content/api/user-guide/5.4-password-handling.mdtext
deleted file mode 100644
index 09cf8dd..0000000
--- a/content/api/user-guide/5.4-password-handling.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 5.4 - Password Handling
-NavPrev: 5.3-sasl-bind.html
-NavPrevText: 5.3 - SASL Bind
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 5.5-certificates.html
-NavNextText: 5.5 - Certificates
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.4 - Password Handling
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/5.5-certificates.mdtext b/content/api/user-guide/5.5-certificates.mdtext
deleted file mode 100644
index e7d51b2..0000000
--- a/content/api/user-guide/5.5-certificates.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 5.5 - Certificates
-NavPrev: 5.4-password-handling.html
-NavPrevText: 5.4 - Password Handling
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 5.6-aci-and-acls.html
-NavNextText: 5.6 - ACI and ACLs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.5 - Certificates
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/5.6-aci-and-acls.mdtext b/content/api/user-guide/5.6-aci-and-acls.mdtext
deleted file mode 100644
index 2d2bc68..0000000
--- a/content/api/user-guide/5.6-aci-and-acls.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 5.6 - ACI and ACLs
-NavPrev: 5.5-certificates.html
-NavPrevText: 5.5 - Certificates
-NavUp: 5-ldap-security.html
-NavUpText: 5 - LDAP Security
-NavNext: 6-ldap-data-structures.html
-NavNextText: 6 - LDAP Data Structures
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5.6 - ACI and ACLs
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6-ldap-data-structures.mdtext b/content/api/user-guide/6-ldap-data-structures.mdtext
deleted file mode 100644
index bba4026..0000000
--- a/content/api/user-guide/6-ldap-data-structures.mdtext
+++ /dev/null
@@ -1,63 +0,0 @@
-Title: 6 - LDAP Data Structures
-NavPrev: 5-ldap-security.html
-NavPrevText: 5 - LDAP Security
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 7-requests-responses.html
-NavNextText: 7 - Requests and Responses
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6 - LDAP Data Structures (...)
-
-## Contents
-
-* [6.1 - AdministrativePoint](6.1-administrative-point.html)
-* [6.2 - AdministrativeRole](6.2-administrative-role.html)
-* [6.3 - Attribute](6.3-attribute.html)
-* [6.4 - AttributeType](6.4-attribute-type.html)
-* [6.5 - Ava](6.5-ava.html)
-* [6.6 - Csn](6.6-csn.html)
-* [6.7 - Control](6.7-control.html)
-* [6.8 - Cursor](6.8-cursor.html)
-* [6.9 - Dn](6.9-dn.html)
-* [6.10 - DITContentRule](6.10-dit-content-rule.html)
-* [6.11 - DITStructureRule](6.11-dit-structure-rule.html)
-* [6.12 - Entry](6.12-entry.html)
-* [6.13 - ExprNode](6.13-expr-node.html)
-* [6.14 - LdapComparator](6.14-ldap-comparator.html)
-* [6.15 - LdapResult](6.15-ldap-result.html)
-* [6.16 - LdapSyntax](6.16-ldap-syntax.html)
-* [6.17 - LdapUrl](6.17-ldap-url.html)
-* [6.18 - LdifControl](6.18-ldif-control.html)
-* [6.19 - LdifEntry](6.19-ldif-entry.html)
-* [6.20 - MatchingRule](6.20-matching-rule.html)
-* [6.21 - MatchingRuleUse](6.21-matching-rule-use.html)
-* [6.22 - Message](6.22-message.html)
-* [6.23 - Modification](6.23-modification.html)
-* [6.24 - NameForm](6.24-name-form.html)
-* [6.25 - Normalizer](6.25-normalizer.html)
-* [6.26 - ObjectClass](6.26-object-class.html)
-* [6.27 - Oid](6.27-oid.html)
-* [6.28 - Rdn](6.28-rdn.html)
-* [6.29 - Referral](6.29-referral.html)
-* [6.30 - Refinment](6.30-refinment.html)
-* [6.31 - SchemaManager](6.31-schema-manager.html)
-* [6.32 - Subentry](6.32-subentry.html)
-* [6.33 - SubtreeSpecification](6.33-subtree-specification.html)
-* [6.34 - SyntaxChecker](6.34-syntax-checker.html)
-* [6.35 - Value](6.35-value.html)
diff --git a/content/api/user-guide/6.1-administrative-point.mdtext b/content/api/user-guide/6.1-administrative-point.mdtext
deleted file mode 100644
index e13992e..0000000
--- a/content/api/user-guide/6.1-administrative-point.mdtext
+++ /dev/null
@@ -1,69 +0,0 @@
-Title: 6.1 - AdministrativePoint
-NavPrev: 6-ldap-data-structures.html
-NavPrevText: 6 - LDAP data structures
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.2-administrative-role.html
-NavNextText: 6.2 - AdministrativeRole
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.1 - AdministrativePoint
-
-<DIV class="note" markdown="1">
-These classes are currently only used by the server. It will be available on the client side later on.
-</DIV>
-
-An _AdministrativePoint_ is an _entry_ in the _DIT_ which is associated with some _AdministrativeArea_. In **ApacheDS** we support 4 different kind of roles:
-
-* ACI
-* Collective Attributes
-* SubSchema
-* Triggers
-
-We also have three different types of _AdministrativePoint_s:
-
-* Autonomous AdministrativePoint (AAP)
-* Specific AdministrativePoint (SAP)
-* Inner AdministrativePoint (IAP)
-
-Each of the roles comes in one of 3 'flavors' (except the SubSchema whch has only 2 flavors). So we have the following classes:
-
-* AccessControl
- * AccessControlAAP
- * AccessControlSAP
- * AccessControlIAP
-* CollectiveAttribute
- * CollectiveAttributeAAP
- * CollectiveAttributeSAP
- * CollectiveAttributeIAP
-* Subschema
- * SubschemaAAP
- * SubschemaSAP
-* Triggers
- * TriggerExecutionAAP
- * TriggerExecutionSAP
- * TriggerExecutionIAP
-
-These classes stores the following information:
-
-* dn : The DN of the root entry for this administration point.
-* uuid : The associated entryUUID
-* role : The Administrative role
-* parent : The parent (if any) AdministrativePoint
-* children : All the descendant of this AdministrativePoint
-
diff --git a/content/api/user-guide/6.10-dit-content-rule.mdtext b/content/api/user-guide/6.10-dit-content-rule.mdtext
deleted file mode 100644
index 829de02..0000000
--- a/content/api/user-guide/6.10-dit-content-rule.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.10 - DITContentRule
-NavPrev: 6.9-dn.html
-NavPrevText: 6.9 - Dn
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.11-dit-structure-rule.html
-NavNextText: 6.11 - DITStructureRule
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.10 - DITContentRule
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.11-dit-structure-rule.mdtext b/content/api/user-guide/6.11-dit-structure-rule.mdtext
deleted file mode 100644
index 7f32855..0000000
--- a/content/api/user-guide/6.11-dit-structure-rule.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.11 - DITStructureRule
-NavPrev: 6.10-dit-content-rule.html
-NavPrevText: 6.10 - DITContentRule
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.12-entry.html
-NavNextText: 6.12 - Entry
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.11 - DITStructureRule
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.12-entry.mdtext b/content/api/user-guide/6.12-entry.mdtext
deleted file mode 100644
index c980b54..0000000
--- a/content/api/user-guide/6.12-entry.mdtext
+++ /dev/null
@@ -1,466 +0,0 @@
-Title: 6.12 - Entry
-NavPrev: 6.11-dit-structure-rule.html
-NavPrevText: 6.11 - DITStructureRule
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.13-expr-node.html
-NavNextText: 6.13 - ExprNode
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.12 - Entry
-
-The _Entry_ class is one of the most important ones in the _API_. It describes the base element stored into a *LDAP* server, and it associates a _Dn_ and some _Attributes_.
-
-We have two kinds of _Entry_ in the _API_, depending on the presence of a _SchemaManager_ in the _Entry_, or not.
-
-We also provide a few extended classes, like the _ImmutableEntry_, an immutable version of the _Entry_.
-
-## What an entry?
-
-An entry is an object containing a _Dn_ and some _Attributes_. The following schema shows what's inside an _entry_:
-
-![](images/entry.png)
-
-## Creating an Entry
-
-We have many ways to create an _Entry_. Basically, an _Entry_ has a _Dn_ and some _Attributes_. It can be schema aware, or not. We provide constructors to allow a user to create the kind of _Entry_ wanted.
-
-The simplest way to create an _Entry_ is to call the default constructor. The created entry will have no attributes, and no _Dn_. We can also make it schema aware by passing a _SchemaManager_. Here is an example:
-
- :::Java
- Entry entry = new DefaultEntry();
-
- // Now set the DN and some attributes
- Entry entry = new DefaultEntry();
-
- entry.setDn( "dc=example, dc=com" );
- entry.add( "objectClass", "top", "domain" );
- entry.add( "dc", "example" );
-
- // Schema aware entry
- Entry entry2 = new DefaultEntry( schemaManager);
-
- entry2.add( "objectClass", "top", "domain" );
- entry2.add( "dc", "example" );
-
-
-You can also create an _Entry_ passing a _Dn_, but no attribute. We can create schema aware entries this way too, passing a _SchemaManager_.
-
- :::Java
- Dn dn = new Dn( schemaManager, "DomainComponent=example, dc=COM" );
- Entry entry = new DefaultEntry( "dc=example, dc=com" );
-
- entry.add( "objectClass", "top", "domain" );
- entry.add( "dc", "example" );
-
- Entry entry2 = new DefaultEntry( schemaManager, "dc=example, dc=com" );
-
- entry2.add( "objectClass", "top", "domain" );
- entry2.add( "dc", "example" );
- ...
-
-We can also create an entry by copying an existing entry. The created _Entry_ must be schema aware. Here is an example:
-
- :::Java
- Entry entry = new DefaultEntry( schemaManager, "dc=example, dc=com" );
-
- entry2.add( "objectClass", "top", "domain" );
- entry2.add( "dc", "example" );
-
- Entry entry2 = new DefaultEntry( schemaManager, entry );
-
- assertEquals( entry.getDn(), entry2.getDn() );
-
- entry.clear();
-
-Last, but not least, it's possible to create an _Entry_ using a list of LDIF formated attributes. An example worth ten lines of documentation, so let's see what it means.
-
-First, we will create a schema agnostic entry:
-
- :::Java
- Entry entry = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: domain",
- "dc: example"
- );
-
-We can also provide a complete LDIF file (except that we can't add the _dn_):
-
- :::Java
- String ldif =
- "objectClass: top\n" + // The \n is mandatory.
- "objectClass: domain\n" +
- "dc: example";
-
- Entry entry = new DefaultEntry( "dc=example, dc=com", ldif );
-
-
-One can also combine LDIF and variables like in this example (note that if you use a variable, the attribute must not be followed by the *':'* char):
-
- :::Java
- String domain = "example";
-
- Entry entry = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: domain",
- "cc", domain // No ':'
- );
-
-All in all, the following constructors are available :
-
-* DefaultEntry() : Default constructor
-* DefaultEntry(SchemaManager) : Default constructor for a schema aware entry
-* DefaultEntry(String) : Creates an entry with a DN as a String
-* DefaultEntry(SchemaManager, String) : Creates a schema aware entry with a DN as a String
-* DefaultEntry(Dn) : Creates an entry with a DN
-* DefaultEntry(SchemaManager, Dn) : Creates a schema aware entry with a DN as a String
-* DefaultEntry(Dn, Object...) : Creates an entry with a DN and some attributes
-* DefaultEntry(SchemaManager, String, Object...) : Creates a schema aware entry with a DN as a String, and some attributes
-* DefaultEntry(SchemaManager, Dn, Object...) : Creates a schema aware entry with a DN and some attributes
-* DefaultEntry(SchemaManager, Entry) : Creates an entry using a copy of another entry
-
-## Modifying an Entry
-
-We have six methods available that modify the _Entry_ content : _add_, _clear_, _put_, _remove_, _removeAttribute_ and _setDn_. We will review six four methods in the following paragraphs.
-
-### Adding Attributes
-
-Two methods can be used to add attribute into an _Entry_. The first one will add a completed _Attribute_, the second one will add some values into an existing _Attribute_.
-
-In any case, we can add either an empty attribute, or an attribute with some values. Those values can be _Strings_, _byte[]_ or _Values_. The added attributes can be schema aware, and we can also provide a user provided name for the attribute type.
-
-##### add() methods
-
-The first method makes it possible to add some existing _Attribute_ to an _Entry_. Let's see how it works:
-
- :::Java
- Attribute cn = new DefaultAttribute( "cn", "test" );
- Attribute cn2 = new DefaultAttribute( "cn", "test2" );
-
- Entry entry = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test" );
-
- // Add the new attribute
- entry.add( cn );
-
- // Try to add a second value
- entry.add( cn2 );
-
-
-Otherwise, we can add a new attribute and values into the _Entry_ by passing both parameters. We can also pass an _AttributeType_ to the _add()_ method, making the added attribute schema aware. Note that if the _Entry_ itself is already schema aware, this is not necessary.
-
-Here are some examples, the first one with a schema aware _Entry_, the second one with a schema agnostic _Entry_:
-
-For a schema aware entry :
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test" );
-
- // Add the new attribute
- entry.add( "cn", "test" );
-
- // Try to add a second value
- entry.add( "cn", "A second test " );
-
- // We can also add a value to an existing Attribute
- entry.add( "sn", "Another SN" );
-
- // And even add many values in one shot
- entry.add( "cn", "value1", "value2" );
-
-
-
-For a schema agnostic entry :
-
- :::Java
- Entry entry = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test" );
-
- // Add the new attribute
- entry.add( "cn", "test" );
-
- // Try to add a second value
- entry.add( "cn", "A second test" );
-
-
-As you can see, there is no real difference between those two methods, except that we pass the _schemaManager_ into the first one.
-
-
-##### put() methods
-
-The big difference with the _add_ method is that the attribute is not added, it will replace an existing one. let's see with an example :
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test" );
-
- // Add the new attribute
- entry.put( "cn", "test" );
-
- // Try to add a second value : the 'cn' attribute will now contain only 'test2'
- entry.put( "cn", "test2" );
-
-### Removing Attributes
-
-We can remove either an attribute having a specific value, or an entire attribute. In order to remove a complete attribute, you just have to provide the attribute's name, and use the _removeAttributes_ method.
-
-Here are examples for both usages :
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- // Remove the "test2" value
- entry.remove( "cn", "test2" );
-
- // Try to remove the full attribute
- entry.removeAttributes( "cn" );
-
-### Storing a Dn
-
-It's also possible to store a new _Dn_ into the Entry, using the _setDn() method. It will replace an existing _Dn_ This method takes either a _Dn_ instance, or a _String_ representing a valid _Dn_.
-
-
-### Clearing the Entry
-
-You can remove all the _Attribute_s from the entry, using the _clear()_ method :
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- // Remove all the attributes
- entry.clear();
-
-The _Dn_ will still be around though.
-
-## Attribute data access methods
-
-The *API* provides convenient methods to access the _Entry_ content, and to check if it contains some attributes or some values. We will show these methods in the paragraphs that follow.
-
-### Contains method
-
-The _contains_ and _containsAttributes_ methods check that the _Entry_ contains _Attributes_ and _values_.
-
-One can check for the existence of a specific value for a given attribute, or even for multiple values for a specific attribute. Let's see the _contains_ method in action:
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- // Check that the entry contains the 'cn' and 'sn' Attributes
- boolean contains = entry.containsAttribute( "cn", "sn" );
-
- // Check that the entry contains 3 given values of the 'cn' Attribute
- contains = entry.contains( "cn", "test1", "test2", "test3" );
-
-Note that if one value does not exist, the _contains() method will return false.
-
-### getAttributes() and get() methods
-
-Returns the _Attribute_ having the given name if it exists. The following test demonstrates its usage:
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- // Get the 'cn' Attribute
- Attribute cn = entry.get( "cn" );
-
- // Get all the Attributes
- Collection<Attribute> attributes = entry.getAttributes();
-
-
-### getDn()
-
-This method returns the _Entry_'s _Dn_.
-
-### hasObjectClass methods
-
-The _hasObjectClass()_ methods are used to discover if an _Entry_ has a specific _ObjectClass_. This is a convenient method, as it's possible to do the same thing with a _contains()_ call, but with one less parameter (you don't have to provide the _"ObjectClass"_ as a first parameter).
-
-Here is an example using the two existing methods:
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "cn=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "cn: example",
- "sn: test"
- );
-
- // Test the presence
- boolean isPresent = entry.hasObjectClass( "person", " TOP " );
-
-As for the _contains()_ method, it will return true if and only if all the ObjectClasses are present in the _entry_.
-
-Obviously, dealing with a schema agnostic _Entry_, those methods are more strict. You have to use the exact ObjectClasses case sensitive trimmed names (in the previous example, we can use upper cased names, even with spaces around the names).
-
-Also note that the _hasObjectClass_ method used with _AttributeType_ does not work on a schema agnostic entry.
-
-## Miscellaneous methods
-
-We also have some other methods which can be used on an _Entry_. Here is a list of those methods.
-
-#### clone()
-
-Creates a copy of the current _Entry_. All the _Attributes_ are also cloned.
-
-#### iterator()
-
-Allows an iteration over all the _Attributes_. The following examples shows how this can be used:
-
- :::Java
- @Test
- Entry entry = new DefaultEntry(
- "cn=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "cn: example",
- "sn: test"
- );
-
- for ( Attribute attribute : entry )
- {
- System.out.println( "Attribute : \n" + attribute.toString() );
- }
-
-This produces the following output:
-
- :::Java
- Attribute :
- sn: test
-
- Attribute :
- cn: example
-
- Attribute :
- objectclass: top
- objectclass: person
-
-Note that the _Attribute_ order is not guaranteed.
-
-#### isSchemaAware()
-
-Tells if the ¨_Entry_ has an associated _SchemaManager_.
-
-#### size()
-
-Returns the number of _Attribute_ stored in the _Entry_.
-
-#### equals(Object)
-
-Check if two *Entries* are equal or not. It's important to understand that depending on whether the entry is schema aware or not, the comparison will be processed differently. Typically, the attribute's name must be equivilent after being trimmed and set to lowercase. If the entry is not schema aware, and we can't compare an attribute named 'cn' with another one named '2.5.4.3' in this case (the _Entry_ must be schema aware to allow such comparison). More important, the values *must* be identical (same casing, same spaces) in this case.
-The attribute's values order is irrelevant.
-
-Here are one example with a schema agnostic _Entry_:
-
- :::Java
- Entry entry = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- Entry entry2 = new DefaultEntry(
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test2",
- "CN: test1",
- "cn: test3" );
-
- // Will return true
- boolean result = entry.equals( entry2 );
-
-and another example with a schema aware _Entry_:
-
- :::Java
- Entry entry = new DefaultEntry(
- schemaManager,
- "dc=example, dc=com",
- "objectClass: top",
- "objectClass: person",
- "sn: test",
- "cn: test1",
- "cn: test2",
- "cn: test3" );
-
- Entry entry2 = new DefaultEntry(
- schemaManager,
- "dc=example,dc=com",
- "objectClass: TOP",
- "objectClass: person",
- "sn: Test",
- "cn: Test2",
- "2.5.4.3: test1",
- "CommonName: test3" );
-
- // Will return true
- boolean result = entry.equals( entry2 );
diff --git a/content/api/user-guide/6.13-expr-node.mdtext b/content/api/user-guide/6.13-expr-node.mdtext
deleted file mode 100644
index 7257e37..0000000
--- a/content/api/user-guide/6.13-expr-node.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.13 - ExprNode
-NavPrev: 6.12-entry.html
-NavPrevText: 6.12 - Entry
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.14-ldap-comparator.html
-NavNextText: 6.14 - LdapComparator
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.13 - ExprNode
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.14-ldap-comparator.mdtext b/content/api/user-guide/6.14-ldap-comparator.mdtext
deleted file mode 100644
index bfe8629..0000000
--- a/content/api/user-guide/6.14-ldap-comparator.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.14 - LdapComparator
-NavPrev: 6.13-expr-node.html
-NavPrevText: 6.13 - ExprNode
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.15-ldap-result.html
-NavNextText: 6.15 - LdapResult
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.14 - LdapComparator
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.15-ldap-result.mdtext b/content/api/user-guide/6.15-ldap-result.mdtext
deleted file mode 100644
index 3109294..0000000
--- a/content/api/user-guide/6.15-ldap-result.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.15 - LdapResult
-NavPrev: 6.14-ldap-comparator.html
-NavPrevText: 6.14 - LdapComparator
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.16-ldap-syntax.html
-NavNextText: 6.16 - LdapSyntax
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.15 - LdapResult
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.16-ldap-syntax.mdtext b/content/api/user-guide/6.16-ldap-syntax.mdtext
deleted file mode 100644
index fbe0a88..0000000
--- a/content/api/user-guide/6.16-ldap-syntax.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.16 - LdapSyntax
-NavPrev: 6.15-ldap-result.html
-NavPrevText: 6.15 - LdapResult
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.17-ldap-url.html
-NavNextText: 6.17 - LdapUrl
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.16 - LdapSyntax
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.17-ldap-url.mdtext b/content/api/user-guide/6.17-ldap-url.mdtext
deleted file mode 100644
index dabec10..0000000
--- a/content/api/user-guide/6.17-ldap-url.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.17 - LdapUrl
-NavPrev: 6.16-ldap-syntax.html
-NavPrevText: 6.16 - LdapSyntax
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.18-ldif-control.html
-NavNextText: 6.18 - LdifControl
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.17 - LdapUrl
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.18-ldif-control.mdtext b/content/api/user-guide/6.18-ldif-control.mdtext
deleted file mode 100644
index 6b2b45c..0000000
--- a/content/api/user-guide/6.18-ldif-control.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.18 - LdifControl
-NavPrev: 6.17-ldap-url.html
-NavPrevText: 6.17 - LdapUrl
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.19-ldif-entry.html
-NavNextText: 6.19 - LdifEntry
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.18 - LdifControl
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.19-ldif-entry.mdtext b/content/api/user-guide/6.19-ldif-entry.mdtext
deleted file mode 100644
index 73c524d..0000000
--- a/content/api/user-guide/6.19-ldif-entry.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.19 - LdifEntry
-NavPrev: 6.18-ldif-control.html
-NavPrevText: 6.18 - LdifControl
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.20-matching-rule.html
-NavNextText: 6.20 - MatchingRule
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.19 - LdifEntry
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.2-administrative-role.mdtext b/content/api/user-guide/6.2-administrative-role.mdtext
deleted file mode 100644
index c7f41c1..0000000
--- a/content/api/user-guide/6.2-administrative-role.mdtext
+++ /dev/null
@@ -1,47 +0,0 @@
-Title: 6.2 - AdministrativeRole
-NavPrev: 6.1-administrative-point.html
-NavPrevText: 6.1 - AdministrativePoint
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.3-attribute.html
-NavNextText: 6.3 - Attribute
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.2 - AdministrativeRole
-
-<DIV class="note" markdown="1">
-These classes are currently only used by the server. It will be available on the client side later on.
-</DIV>
-
-The _AdministrativeRole_ structure is a **enum** listing the possible roles we can select for an _AdministrativePoint_. We currently support 4 different roles:
-
-* Access Control
-* Collective Attributes
-* SubSchema
-* Triggers
-
-And each of those roles can be combine with their scope:
-
-* AutonomousArea
-* AccessControlSpecificArea
-* AccessControlInnerArea
-* CollectiveAttributeSpecificArea
-* CollectiveAttributeInnerArea
-* SubSchemaSpecificArea
-* TriggerExecutionSpecificArea
-* TriggerExecutionInnerArea
diff --git a/content/api/user-guide/6.20-matching-rule.mdtext b/content/api/user-guide/6.20-matching-rule.mdtext
deleted file mode 100644
index 1b077d9..0000000
--- a/content/api/user-guide/6.20-matching-rule.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.20 - MatchingRule
-NavPrev: 6.19-ldif-entry.html
-NavPrevText: 6.19 - LdifEntry
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.21-matching-rule-use.html
-NavNextText: 6.21 - MatchingRuleUse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.20 - MatchingRule
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.21-matching-rule-use.mdtext b/content/api/user-guide/6.21-matching-rule-use.mdtext
deleted file mode 100644
index 7b5b53f..0000000
--- a/content/api/user-guide/6.21-matching-rule-use.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.21 - MatchingRuleUse
-NavPrev: 6.20-matching-rule.html
-NavPrevText: 6.20 - MatchingRule
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.22-message.html
-NavNextText: 6.22 - Message
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.21 - MatchingRuleUse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.22-message.mdtext b/content/api/user-guide/6.22-message.mdtext
deleted file mode 100644
index 3eb9af7..0000000
--- a/content/api/user-guide/6.22-message.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.22 - Message
-NavPrev: 6.21-matching-rule-use.html
-NavPrevText: 6.21 - MatchingRuleUse
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.23-modification.html
-NavNextText: 6.23 - Modification
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.22 - Message
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.23-modification.mdtext b/content/api/user-guide/6.23-modification.mdtext
deleted file mode 100644
index 30b1a1d..0000000
--- a/content/api/user-guide/6.23-modification.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.23 - Modification
-NavPrev: 6.22-message.html
-NavPrevText: 6.22 - Message
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.24-name-form.html
-NavNextText: 6.24 - NameForm
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.23 - Modification
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.24-name-form.mdtext b/content/api/user-guide/6.24-name-form.mdtext
deleted file mode 100644
index ec6e30f..0000000
--- a/content/api/user-guide/6.24-name-form.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.24 - NameForm
-NavPrev: 6.23-modification.html
-NavPrevText: 6.23 - Modification
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.25-normalizer.html
-NavNextText: 6.25 - Normalizer
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.24 - NameForm
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.25-normalizer.mdtext b/content/api/user-guide/6.25-normalizer.mdtext
deleted file mode 100644
index 80b4b5b..0000000
--- a/content/api/user-guide/6.25-normalizer.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.25 - Normalizer
-NavPrev: 6.24-name-form.html
-NavPrevText: 6.24 - NameForm
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.26-object-class.html
-NavNextText: 6.26 - ObjectClass
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.25 - Normalizer
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.26-object-class.mdtext b/content/api/user-guide/6.26-object-class.mdtext
deleted file mode 100644
index bb3587c..0000000
--- a/content/api/user-guide/6.26-object-class.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.26 - ObjectClass
-NavPrev: 6.25-normalizer.html
-NavPrevText: 6.25 - Normalizer
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.27-oid.html
-NavNextText: 6.27 - Oid
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.26 - ObjectClass
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.27-oid.mdtext b/content/api/user-guide/6.27-oid.mdtext
deleted file mode 100644
index f1a7550..0000000
--- a/content/api/user-guide/6.27-oid.mdtext
+++ /dev/null
@@ -1,81 +0,0 @@
-Title: 6.27 - Oid
-NavPrev: 6.26-object-class.html
-NavPrevText: 6.26 - ObjectClass
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.28-rdn.html
-NavNextText: 6.28 - Rdn
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.27 - Oid
-
-## Introduction
-
-An *OID* stands for *Object* *ID*entifier. It's part of the *ASN/1* standard. Basically, it's a hierarchy, named a 'registration tree'. It's a list of 'arcs', which values start at '0', and each arc is separated with a dot ( '.' ).
-
-There are three defined root arcs :
-
- * itu-t (0)
- * iso (1)
- * joint-iso-itu-t (2)
-
-There are some places on the internet where one can look at the existing OIDs. Here is one: [OID repository](http://www.oid-info.com/cgi-bin/display?tree=&see=all).
-
-## Syntax
-
-The OID syntax is pretty simple. Numbers are separated with periods between them, e.g. 0.1.245
-
-There are a few extra rules:
-
- * The first number must be 0, 1 or 2
- * If it's 0 or 1, then the second number must be between 0 and 39
- * A period must be preceded and followed by a number
- * A 0 at first position is never followed by another digit
- * There is no limit for the number of digits. For example, 2.25.81407072025111374527560065493494091452, is a legitimate OID value.
-
-## API
-
-The *Apache LDAP API* offers a few functions that can be used to manipulate an OID. In any case, there is not a constructor for an OID.
-
-The class to use is *org.apache.directory.api.asn1.util.Oid*. It creates immutable instances.
-
-### static Oid fromBytes( byte[] )
-
-Returns an *Oid* instance constructed using a *byte[]* representing an encoded OID.
-
-### static Oid fromString( String )
-
-Returns an *Oid* instance constructed from a *String* representing an OID.
-
-### static boolean isOid( String )
-
-Tells if a *String* is a valid OID.
-
-### String toString()
-
-Return the *String* representation of an *Oid* instance.
-
-### byte[] toBytes()
-
-Return the *byte[]* representation of an *Oid* instance.
-
-## OID parsing
-
-We use a *FSA* (Finite State Automaton) to parse a String to get an internal representation of an OID. Here is a picture showing the *FSA* we are using:
-
-![OID FSA](images/OID-state-automaton.png)
diff --git a/content/api/user-guide/6.28-rdn.mdtext b/content/api/user-guide/6.28-rdn.mdtext
deleted file mode 100644
index 0a82e94..0000000
--- a/content/api/user-guide/6.28-rdn.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.28 - Rdn
-NavPrev: 6.27-oid.html
-NavPrevText: 6.27 - Oid
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.29-referral.html
-NavNextText: 6.29 - Referral
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.28 - Rdn
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.29-referral.mdtext b/content/api/user-guide/6.29-referral.mdtext
deleted file mode 100644
index c97c9f1..0000000
--- a/content/api/user-guide/6.29-referral.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.29 - Referral
-NavPrev: 6.28-rdn.html
-NavPrevText: 6.28 - Rdn
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.30-refinment.html
-NavNextText: 6.30 - Refinment
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.29 - Referral
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.3-attribute.mdtext b/content/api/user-guide/6.3-attribute.mdtext
deleted file mode 100644
index 2009ac8..0000000
--- a/content/api/user-guide/6.3-attribute.mdtext
+++ /dev/null
@@ -1,344 +0,0 @@
-Title: 6.3 - Attribute
-NavPrev: 6.2-administrative-role.html
-NavPrevText: 6.2 - AdministrativeRole
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.4-attribute-type.html
-NavNextText: 6.4 - AttributeType
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.3 - Attribute
-
-The _Attribute_ class is used to store values associated with an _AttributeType_. An _Entry_ can contain many _Attribute{s_, but only one of them is mandatory: the _ObjectClass_ _Attribute_.
-
-An _Attribute_ can store zero, one or N values, accordingly to its associated _AttributeType_, which may allow null values, and which also can forbid muli-values.
-
-The _Attribute_ has a internal _AttributeType_ which is usually defined using its name. This name is case insensitive, and we can also use the _AttributeType_ _OID_.
-
-## Creating an Attribute
-
-Creating an _Attribute_ is not complex. Again, we split the API into two categories:
-
-* the schema agnostic _Attributes_
-* the schema aware _Attributes_
-
-### Schema agnostic Attribute
-
-If we don't inject a _SchemaManager_ into the constructor, then the _Attribute_ will have no way to control whether its _AttributeType_ exists, nor that its _Values_ are valid.
-
-Let's see how we can create _Attributes_. Basically, all what that needed is to provide the _AttributeType_ as a String, and some _Values_ (that are optional). Here is an example:
-
- :::Java
- Attribute attribute = new DefaultAttribute( " CN " );
-
-Here, we created an empty _Attribute_. Note that _cn_ does not allow empty values, but it's not enforced. Also note that the _AttributeType_ is lowercase and trimmed internally.
-
-Let's see another example, with some values:
-
- :::Java
- Attribute attribute = new DefaultAttribute( " CN ", "test", "Test", " test ", "test" );
-
-Here, we create an _Attribute_ with 3 values. We can see that the values are not duplicated (the _"test"_ value is only inserted once) and that values are case sensitive (the _"test"_ and _"Test"_ values are both stored in the _Attribute_). The values aren't trimmed either, so we can have a _"test"_ and a _" test "_ values stored.
-
-This is why having a schema aware _Attribute_ is really handy.
-
-It's possible to store binary values into an _Attribute_ too:
-
- :::Java
- byte[] bytes1 = new byte[]{0x01, 0x02};
- byte[] bytes2 = new byte[]{0x03, 0x04};
- byte[] bytes3 = new byte[]{0x01, 0x02};
-
- Attribute attribute = new DefaultAttribute( " JpegPhoto ", bytes1, bytes2, bytes3 );
-
-Same here: values are not duplicated.
-
-Note that it's not allowed to store a mix of binary and String values into an _Attribute_:
-
- :::Java
- byte[] bytes1 = new byte[]{0x01, 0x02};
-
- Attribute attribute = new DefaultAttribute( " JpegPhoto ", "test", bytes1 ); // Does not compile
-
-### Schema aware Attribute
-
-We can inject a _SchemaManager_ into the _Attribute_ which will allow more control over the values stored within the _Attribute_. Let's see an example of how this works:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn );
-
-Here, we created an _Attribute_ with a specific _AttributeType_ ('atCn') and no value. Let's create a new _Attribute_ with some values:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn, "test", "Test", " test " );
-
-The important point here is that the values are all considered equal. The _contains_ method also uses the schema to compare its given value with the interned values. Here, with the _cn_ _AttributeType_, the value is not case sensitive, so _"TEST"_ is considered as an existing value, even if we injected _"test"_.
-
-## Modifying an Attribute
-
-Now that we created an _Attribute_ we would like to add or remove values from it. This is quite easy. We have a set of methods to add or remove values, and depending on whether the _Attribute_ is schema aware or not, the added values will be checked.
-
-### Adding some value
-
-Here is an example of a value addition into a schema agnostic _Attribute_, then the same operation into a schema aware _Attribute_:
-
- :::Java
- Attribute attribute = new DefaultAttribute( " CN " );
- Attribute attributeSA = new DefaultAttribute( atCn );
-
- // Add two values
- attribute.add( "test1", "" );
-
- // add two values
- attributeSA.add( "test1", "" );
-
-
-We can see that the schema aware _Attribute_ just contains only one value after the operation, as the _cn_ attribute type does not allow empty strings.
-
-There is one important point to understand -- whenever a schema agnostic _Attribute_ is created, it knows nothing about the type of values it will store. Once the first value is added, the _Attribute_ will be typed accordingly to the first value added. Then we can no longer add values that are not of the same type.
-
-If the _Attribute_ is schema aware, it's quite obvious. You won't be able to add a binary value into a Human Readable _Attribute_.
-The following test shows that:
-
- :::Java
- Attribute attribute = new DefaultAttribute( " CN " );
- Attribute attributeSA = new DefaultAttribute( atCn );
-
- byte[] bytes = new byte[]{0x01, 0x02};
-
-
- // Add two values
- attribute.add( "test1" );
- attribute.add( bytes );
-
- // add two values
- attributeSA.add( "test1" );
- attributeSA.add( bytes );
-
-### Removing some values
-
-Removing a value from an _Attribute_ is a trivial operation. Of course, if the _Attribute_ is schema aware, we will use the _AttributeType_ comparator to check if the value is present in the _Attribute_ or not (the comparator is associated with the attribute equality _MatchingRule_.
-
-Here is an example:
-
- :::Java
- Attribute attribute = new DefaultAttribute( " CN " );
-
- // Add three values
- attribute.add( "test1", "test2", "test3" );
-
- // Remove 2 of them
- attribute.remove( "test2", "test3" );
-
- // Try to remove the last one, using wrong casing
- attribute.remove( "Test1" );
-
-And the same example, on a schema aware _Attribute_. It demonstrates how convenient it is to manipulate such schema aware objects:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn );
-
- // Add three values
- attribute.add( "test 1", "test 2", "test 3" );
-
- // Remove 2 of them
- attribute.remove( "TEST 2", "test 3" );
-
- // Try to remove the last one, using wrong casing
- attribute.remove( "Test 1" );
-
-## Attribute data access methods
-
-We have a set of methods used to get some information about the _Attribute_. They are described in this chapter.
-
-### contains()
-
-Checks if the given values are present in the _Attribute_. We can check for more than one value, but in this case, the method returns _true_ only if **all** the values are present.
-
-If the _Attribute_ is schema aware, then the check uses the _AttributeType_ to compare the given values with the interned values, otherwise, we do a strict comparison.
-
-Here is an example:
-
- :::Java
- Attribute attribute1 = new DefaultAttribute( atCn );
-
- // Add three values
- attribute1.add( "test 1", "test 2", "test 3" );
-
- Attribute attribute2 = new DefaultAttribute( "cn" );
-
- // Add three values
- attribute2.add( "test 1", "test 2", "test 3" );
-
-### get()
-
-Returns the first value from the _Attribute_. The first value is the one which has been added first. Note that it returns a _Value_ instance.
-
-### getAttributeType()
-
-Returns the internal _AttributeType_, if the _Attribute_ is schema aware.
-
-### getBytes()
-
-Returns the first value as a _byte[]_, if the _Attribute_ is not human readable. The user **must** know that the _Attribute_ contains binary values, otherwise they will get an _LdapInvalidAttributeValueException_.
-
-### getString()
-
-Returns the first value as a _String_, if the _Attribute_ is human readable. The user **must** know that the _Attribute_ contains String values, otherwise they will get an _LdapInvalidAttributeValueException_.
-
-### getId()
-
-Returns the _AttributeType_ normalized ID. If the _Attribute_ is schema agnostic, it will be the trimmed and lower cased user provided ID, otherwise it will be the _AttributeType_ OID (not the name).
-
-### getUpId()
-
-Returns the attribute type user provided ID, if the user provided one. Typically, if the _Attribute_ is schema aware, the user might not provide an ID, and in this case, this method will return the _AttributeType_ name, or default to the OID.
-
-### isHumanReadable()
-
-Tells if the _Attribute_ contains String values or binary values.
-
-## Miscellaneous methods
-
-We also have a set of miscellaneous methods, which are not frequently used. Here they are:
-
-### apply( AttributeType )
-Inject an _AttributeType_ into the _Attribute_, making it schema aware. It will check that the associated values are valid at the same time, and normalize the values.
-
-Here is an example of the impact of such a method on an existing attribute :
-
- :::Java
- Attribute attribute = new DefaultAttribute( "CN", " A test" );
-
- attribute.apply( atCn );
-
-It shows that we can now check that a value is not literately compared, the modified attribute uses the Equality _MatchingRule_ to compare the values.
-
-Here is another example, where we try to apply an attribute type to some attribute containing an invalid value : it generates an exception, as expected.
-
- :::Java
- byte[] bytes = new byte[]{0x01, 0x02};
- Attribute attribute = new DefaultAttribute( "CN", bytes );
-
- attribute.apply( atCn );
-
-
-### clear()
-
-This method removes all the values from the attribute. The attribute type is not removed. Here is an example demonstrating how it works:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn, "test1", "test2" );
-
- attribute.clear();
-
-### clone()
-
-This method creates a new instance of an existing attribute. All of the attribute values along with its attribute type are cloned and distinct from the original attribute.
-
-### equals( Object )
-
-Compares two _Attributes_. All of its values are compared and should be present in both attributes. If you compare a schema aware _Attribute_ with a schema agnostic _Attribute_, they won't be equal.
-
-Here is a snippet of code demonstrating the _equals_ method:
-
- :::Java
- Attribute attribute1 = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
- Attribute attribute2 = new DefaultAttribute( atCn, "Test 3", "Test 2 ", "Test 1" );
- Attribute attribute3 = new DefaultAttribute( "cn", "test 1", "test 3", "test 2" );
- Attribute attribute4 = new DefaultAttribute( "cn", "test 1", "test 3", "test 2" );
-
- // Should be true
- boolean equals = attribute1.equals( attribute2 );
- equals = attribute3.equals( attribute4 );
-
- // Should be false
- equals = attribute1.equals( attribute3 );
- equals = attribute1.equals( attribute4 );
- equals = attribute2.equals( attribute4 );
-
- // Now, inject an AttrbuteType in one attribute
- attribute4.apply( atCn );
-
- // The previously not equals attributes are now equal :
- equals = attribute1.equals( attribute4 );
- equals = attribute2.equals( attribute4 );
-
-
-### isInstanceOf( AttributeType )
-
-Tells if an _Attribute_ derives from a given _AttributeType_. It can be useful if you have a schema aware _Attribute_ and want to know if its attribute type inherits from another one. Here is an example of usage:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
-
- // Should be true
- boolean value = attribute.isInstanceOf( atCn );
-
-### isValid( AttributeType )
-
-Checks if the _Attribute_ contains valid data. It's useful if one wants to apply an _AttributeType_ to the _Attribute_, as the _isValid_ method will tell if it's possible to do so without throwing an exception.
-
-Here is some code that test the different use cases:
-
- :::Java
- Attribute attribute1 = new DefaultAttribute( "cn", "\uFFFDtest" );
-
- // Should be false
- boolean isValid = attribute1.isValid( atCn ) );
-
- Attribute attribute2 = new DefaultAttribute( "cn" );
-
- // Should be false, 'cn' requires a value
- isValid = attribute2.isValid( atCn );
-
- Attribute attribute3 = new DefaultAttribute( "cn", "test" );
-
- // Should be true
- value = attribute3.isValid( atCn );
-
- Attribute attribute4 = new DefaultAttribute( "dc", "test", "test2" );
-
- // Should be false, we can't put more than one value in 'dc'
- value = attribute4.isValid( atDc );
-
-### iterator()
-
-A convenient way to iterate over all of the _Attribute_ values. It enables the _for ( Value<?> value : attribute )_ construct. Here is an example using the iterator:
-
- :::Java
- Attribute attribute = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
-
- for ( Value<?> value : attribute )
- {
- System.out.println( "Value : " + value );
- }
-
-This code produces the following output:
-
- :::Java
- Value : test 1
- Value : test 2
- Value : test 3
-
-### setUpId()
-
-Sets the user provided identifier for the attribute type. If the _Attribute_ is schema agnostic, then the normalized ID will be the given user provided ID lower cased and trimmed. If it's schema aware, it will be used instead of the _AttributeType_ ID.
-
-### size()
-Returns the number of values stored in this _Attribute_
diff --git a/content/api/user-guide/6.30-refinment.mdtext b/content/api/user-guide/6.30-refinment.mdtext
deleted file mode 100644
index 8d13a2d..0000000
--- a/content/api/user-guide/6.30-refinment.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.30 - Refinment
-NavPrev: 6.29-referral.html
-NavPrevText: 6.29 - Referral
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.31-schema-manager.html
-NavNextText: 6.31 - SchemaManager
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.30 - Refinment
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.31-schema-manager.mdtext b/content/api/user-guide/6.31-schema-manager.mdtext
deleted file mode 100644
index 4a61af0..0000000
--- a/content/api/user-guide/6.31-schema-manager.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.31 - SchemaManager
-NavPrev: 6.30-refinment.html
-NavPrevText: 6.30 - Refinment
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.32-subentry.html
-NavNextText: 6.32 - Subentry
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.31 - SchemaManager
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.32-subentry.mdtext b/content/api/user-guide/6.32-subentry.mdtext
deleted file mode 100644
index 423704b..0000000
--- a/content/api/user-guide/6.32-subentry.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.32 - Subentry
-NavPrev: 6.31-schema-manager.html
-NavPrevText: 6.31 - SchemaManager
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.33-subtree-specification.html
-NavNextText: 6.33 - SubtreeSpecification
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.32 - Subentry
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.33-subtree-specification.mdtext b/content/api/user-guide/6.33-subtree-specification.mdtext
deleted file mode 100644
index 318836a..0000000
--- a/content/api/user-guide/6.33-subtree-specification.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.33 - SubtreeSpecification
-NavPrev: 6.32-subentry.html
-NavPrevText: 6.32 - Subentry
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.34-syntax-checker.html
-NavNextText: 6.34 - SyntaxChecker
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.33 - SubtreeSpecification
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.34-syntax-checker.mdtext b/content/api/user-guide/6.34-syntax-checker.mdtext
deleted file mode 100644
index c4a1754..0000000
--- a/content/api/user-guide/6.34-syntax-checker.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.34 - SyntaxChecker
-NavPrev: 6.33-subtree-specification.html
-NavPrevText: 6.33 - SubtreeSpecification
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.35-value.html
-NavNextText: 6.35 - Value
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.34 - SyntaxChecker
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.35-value.mdtext b/content/api/user-guide/6.35-value.mdtext
deleted file mode 100644
index 6911b51..0000000
--- a/content/api/user-guide/6.35-value.mdtext
+++ /dev/null
@@ -1,83 +0,0 @@
-Title: 6.35 - Value
-NavPrev: 6.34-syntax-checker.html
-NavPrevText: 6.34 - SyntaxChecker
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 7-requests-responses.html
-NavNextText: 7 - Requests and Responses
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.35 - Value
-
-The _Value_ class is used to store an attribute's value. Such a value can be either a String or a byte[], depending on the nature of the AttributeType (the default is that the _Value_ is a String). Each value is associated to an AttributeType, and is used in an Entry or a DN.
-
-We can create a schema aware _Value_, or just a plain _Value_. Having a schema aware _Value_ allows further controls to be made on the value injected : its syntax will be checked against the _AttributeType_ syntax.
-
-_Value_ is also a _Externalizable_ class.
-
-_Value_ instances are immutable.
-
-## Creating a value
-
-There are two ways to create a value:
-- using a constructor
-- using a static factory (useful for deserialization)
-
-You can create the value passing it an *AttributeType*, or without it. Here are the possible constructors:
-
-<CENTER>
-| With an AttributeType | Without an attributeType | Description |
-|:-:|:-:|:-:|
-| Value( AttributeType, byte[] upValue ) | Value( byte[] upValue ) | Creates a Value with a binary content |
-| Value( AttributeType, String upValue ) | Value( String upValue ) | Creates a Value with a String content |
-| Value( AttributeType, Value ) | - | Create a new Value from an existing one, applying the SchemaManager on it |
-</CENTER>
-
-The third constructor is quite specific, as _Value_ is immutable, and it allows you to associate a SchemaManager to a _Value_ instance (creating a new _Value_ in the process). The new _Value_ instance will be schema aware.
-
-## Operations on a Value
-
-There are ways to consult the content of the _Value_, and its status. Here is the list of common operations:
-
-<CENTER>
-| Operation | Description |
-|:-:|:-:|
-| clone() | Clone the current Value, creating a new instance |
-| compareTo( byte[] ) | Compare the content of the current value to the given byte[] |
-| compareTo( String ) | Compare the content of the current value to the given String |
-| compareTo( Value ) | Compare the content of the current value to the given Value |
-| deserialize( byte[], int ) | Create a Value deserializing it from the byte[], starting at a given position |
-| equals( Object ) | Tells if the current Value is equal to the provided object |
-| getAttributeType() | Get back the AttributeType associated with this value, if any |
-| getBytes() | Get the byte[] representation of this Value |
-| getValue() | Get the Value as a String, if the Value is Human Readable |
-| hashCode() | Compute the Value hashcode |
-| isHumanReadable() | Tells if the Value is Humane Readable (ie, a String) |
-| isInstanceOf( AttributeType ) | Tells if the Value is an instance of a given AttributeType, or of one of its parent |
-| isNull() | Tells if the contained value is null |
-| isSchemaAware() | Tells if teh Value is schema aware |
-| isValid( SyntaxChecker ) | Check the contained value |
-| length() | Returns the contained value's length (number of chars for a String, number of bytes for a byte[]) |
-| readExternal( ObjectInput ) | Read a new Value from a stream of bytes |
-| serialize( byte[], int ) | Write the Value into a stream of bytes |
-| toString() | Returns a String representation of the Value instance |
-| writeExternal( ObjectOutput ) | Write the Value into a stream |
-|
-</CENTER>
-
-
diff --git a/content/api/user-guide/6.4-attribute-type.mdtext b/content/api/user-guide/6.4-attribute-type.mdtext
deleted file mode 100644
index 5dcaf84..0000000
--- a/content/api/user-guide/6.4-attribute-type.mdtext
+++ /dev/null
@@ -1,64 +0,0 @@
-Title: 6.4 - AttributeType
-NavPrev: 6.3-attribute.html
-NavPrevText: 6.3 - Attribute
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.5-ava.html
-NavNextText: 6.5 - Ava
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.4 - AttributeType
-
-The _AttributeType_ is one of the most important schema elements. It describes what can be stored into an _Entry_, its syntax, and the various rules that are to be followed whenever searching for an associated value.
-
-_AttributeType_ are immutable objects, created from the schema, and never changed. One can add a new _AttributeType_, or delete itfrom the schema, but once it's added to the schema, it can't be modified.
-
-Usually, we just use them.
-
-## Description
-
-An _AttributeType_ contains the following informations:
-
-| Value | Description | optional |
-|---|---|---|
-| OID | An unique _Oid_ for the _AttributeType_ | no |
-| NAME | some names, the fist one being considered as the _short name_. | yes |
-| DESCR | A textual description describing the _AttributeType_ role. | yes |
-| OBSOLETE | A flag indicating if the _AttributeType_ is deprecated | yes|
-| SUP | The _AttributeType_ it inherit from | yes (If SYNTAX is null, can't be null) |
-| EQUALITY | The EQUALITY _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
-| ORDERING | The ORDERING _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
-| SUBSTR | The SUBSTR _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
-| SYNTAX | The Syntax to follow | yes (If SUP is null, can't be null) |
-| SINGLE-VALUE| Tells that the _AttributeType_ does not allow more than one value | yes |
-| COLLECTIVE | Define a collective attribute. The _AttributeType_ USAGE must be _userApplications_ | yes |
-| NO-USER-MODIFICATION | Tells that the values can't be modified by the user. The _AttributeType_ USAGE must be operational | yes |
-| USAGE | The kind of _AttributeType_ : one of {_userApplications_, _directoryOperation_, _directoryOperation_, _directoryOperation_}| yes |
-| extensions | Server specific parameters | yes |
-
-An _AttributeType_ has some default elements : it's not OBSOLETE, has no SUP, is not SINGLE-VALUE, is not COLLECTIVE, can be modified by the user, and has an _userApplications_ USAGE.
-
-You can check some of those elements using the following methods:
-
-* isAncestorOf( AttrbuteType ) : tells if the current _AttributeType_ is the ancestor of another one
-* isCollective() : tells if the current _AttributeType_ is a collective attribute
-* isDescendantOf( AttributeType ) : tells if the current _AttributeType_ inherits from another one
-* isOperational() : tells if the current _AttributeType_ is an Operational Attribute
-* isSingleValued() : tells if the current _AttributeType_ does not allow more than one value
-* isUser() : tells if the current _AttributeType_ is a User Application _AttributeType_
-* isUserModifiable() : tells if the _Attributes_ usng this _AttributeType_ can be modified on the server
diff --git a/content/api/user-guide/6.5-ava.mdtext b/content/api/user-guide/6.5-ava.mdtext
deleted file mode 100644
index ec3ed1b..0000000
--- a/content/api/user-guide/6.5-ava.mdtext
+++ /dev/null
@@ -1,82 +0,0 @@
-Title: 6.5 - Ava
-NavPrev: 6.4-attribute-type.html
-NavPrevText: 6.4 - AttributeType
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.6-csn.html
-NavNextText: 6.6 - Csn
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.5 - Ava
-
-An _Ava_ is used to store an _Attribute_ value associated to an _AttributeType_.
-
-It describes a container holding an _AttributeType_ associated with a _Value_ in a _Rdn_. An example would be:
-
- :::Java
- dc=example
-
-where 'dc' is the _AttributeType_ and 'example' its associated value.
-
-The value can be a binary or a String value, depending on the _AttributeType_.
-
-We can create a schema aware _Ava_, or just a plain _Ava_. Having a schema aware _Ava_ allows further controls to be made on the value we inject. Is syntax will be checked against the _AttributeType_ syntax.
-
-Most of the time, one will not need to create or manipulate an _Ava_, as it's an internal element of a _Rdn_.
-
-_Ava_ is also a _Externalizable_ class.
-
-_Ava_ instances are immutable.
-
-
-## Usage
-
-As for the _Dn_ and _Rdn_ classes, we have to hold two representations of its internal _AttributeType_ and _Value_. The User Provided form, and the escaped form (which are used inside filters). If the _AVA_ is schema aware, the escaped form will be computed, otherwise we store the user provided form. Let's see some examples.
-
-
-### Schema Aware Ava
-
-Here we will create an _AVA_ and check that the user provided values are preserved. The _getName()_ and _getString()_ methods will give back this user provided form, in a form that allows it to be used in a Filter.
-
- :::Java
- Ava atav = new Ava( schemaManager, " CommonName ", " This is a TEST " );
- System.out.println( "toString : '" + atav.toString() + "'" );
- System.out.println( "Escaped : '" + atav.getEscaped() + "'" );
- System.out.println( "UserProvided : '" + atav.getName() + "'" );
-
-will produce :
-
- :::Java
- toString : ' CommonName =\ This is a TEST\ '
- Escaped : ' CommonName =\ This is a TEST\ '
- UserProvided : ' CommonName =\ This is a TEST\ '
-
-
-*{+}Not Schema Aware{+}*
-
-The biggest difference in this case is that the _AttributeType_ will not be replaced by its _Oid_, but instead by a lowercase form of the provided ID. We also escape the leading and trailing spaces in the value.
-
-{code}
-public void testAvaSimpleNorm() throws LdapException
-{
- Ava atav = new Ava( null, " CommonName ", " This is a TEST " );
- assertEquals( " CommonName = This is a TEST ", atav.toString() );
- assertEquals( "commonname=\\ This is a TEST\\ ", atav.getNormName() );
- assertEquals( " CommonName = This is a TEST ", atav.getUpName() );
-}
-{code}
diff --git a/content/api/user-guide/6.6-csn.mdtext b/content/api/user-guide/6.6-csn.mdtext
deleted file mode 100644
index 81e598f..0000000
--- a/content/api/user-guide/6.6-csn.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.6 - Csn
-NavPrev: 6.5-ava.html
-NavPrevText: 6.5 - Ava
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.7-control.html
-NavNextText: 6.7 - Control
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.6 - Csn
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.7-control.mdtext b/content/api/user-guide/6.7-control.mdtext
deleted file mode 100644
index 4fe8e3d..0000000
--- a/content/api/user-guide/6.7-control.mdtext
+++ /dev/null
@@ -1,337 +0,0 @@
-Title: 6.7 - Control
-NavPrev: 6.6-csn.html
-NavPrevText: 6.6 - Csn
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.8-cursor.html
-NavNextText: 6.8 - Cursor
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.7 - Control (...)
-
-A *LDAP* *Control* is an extension to an operation. It tells the server to do something aside the standard operation, or it let the server send back some information to the client. A *Control* contains three different parts :
-
-* An identifier, the control *OID*
-* A flag telling the server what to do if it does not know about the control or if it results in an error (either return an error or ignore the control)
-* A value which is generally *BER* encoded
-
-There are many controls available, some being standardized, other being server specific.
-
-One or more control can be added to any operation.
-
-Note that either the client or the server might not know about the controls being used, and if the _criticality_ flag is set to *FALSE*, the server will ignore the control in this case.
-
-
-## Managed controls
-
-Here is the list of *control*s the LDAP API currently know about. The following short names are used to name the LDAP Servers that support each control.
-
-* AP : ApacheDS
-* OL : OpenLDAP
-* AD : Active Directory
-* OS : OpenDS
-* OJ : OpenDJ
-* UI : UnboundID
-* ID : IMB DS
-* All : all the servers
-
-The C/S column indicate if the control is sent to the server (S), or back to the client (C) or can be used both ways (C/S).
-
-| Name | OID | Description | C/S | RFC | LDAP Servers |
-|---|---|---|---|---|---|
-| [AdDirSync](#addirsync) | 1.2.840.113556.1.4.841 | Microsoft LDAP Control for Directory Synchronization | C/S | [DIRSync draft](http://tools.ietf.org/html/draft-armijo-ldap-dirsync-01) | AD |
-| [AdPolicyHints](#adpolicyhints) | 1.2.840.113556.1.4.223 | Enforces the password history length constraint during password set | S | [LDAP_SERVER_POLICY_HINTS_OID](https://msdn.microsoft.com/en-us/library/hh128228.aspx) | AD |
-| [AdShowDeleted](#adshowdeleted) | 1.2.840.113556.1.4.417 | DirSync search returns deleted entries | C | [LDAP_SERVER_SHOW_DELETED_OID](https://msdn.microsoft.com/en-us/library/cc223326.aspx) | AD |
-| [Cascade](#cascade) | 1.3.6.1.4.1.18060.0.0.1 | Used to ask the server to delete an entry and all its descendants | S | None | AP |
-| [ChangeNotifications](#changenotifications) | 1.2.840.113556.1.4.528 | Registers the client to be notified when changes are made to an object in Active Directory. | S | [LDAP_SERVER_NOTIFICATION_OID](https://msdn.microsoft.com/en-us/library/cc223353.aspx) | AD |
-| [EntryChange](#entrychange) | 2.16.840.1.113730.3.4.7 | Provides a simple mechanism by which an LDAP client can receive notification of changes that occur in an LDAP server | C | [Persistent Search: A Simple LDAP Change Notification Mechanism](https://www.ietf.org/proceedings/51/I-D/draft-ietf-ldapext-psearch-03.txt) | AP |
-| [ManageDSAIT](#managedsait) | 2.16.840.1.113730.3.4.2 | Allows access to management objects as standard objects | S | [RFC 3296](https://www.ietf.org/rfc/rfc3296.txt) | AP/OL |
-| [PagedResults](#pagedresults) | 1.2.840.113556.1.4.319 | A request/response control used to implement a simple paging of search results | C/S | [RFC 2696](http://www.faqs.org/rfcs/rfc2696.html) | All |
-| [PasswordPolicy](#passwordpolicy) | 1.3.6.1.4.1.42.2.27.8.5.1 | The password policy control | C/S | [PasswordPolicy draft](https://tools.ietf.org/html/draft-behera-ldap-password-policy-10) | AP/OL |
-| [PermissiveModify](#permissivemodify) | 1.2.840.113556.1.4.1413 | Allows an LDAP modify to work under less restrictive conditions | S | [LDAP_SERVER_PERMISSIVE_MODIFY_OID](https://msdn.microsoft.com/en-us/library/cc223352.aspx) | AD |
-| [PersistentSearch](#persistentsearch) | 2.16.840.1.113730.3.4.3 | Provides a simple mechanism by which an LDAP client can receive notification of changes that occur in an LDAP server | S | [Persistent Search](https://tools.ietf.org/html/draft-ietf-ldapext-psearch-03) | AP/OL |
-| [ProxiedAuthz](#proxiedauthz) | 2.16.840.1.113730.3.4.18 | Defines the Proxy Authorization request | S | [RFC 4370](ttps://tools.ietf.org/html/rfc4370) | AP/OL |
-| [SortRequest](#sortrequest) | 1.2.840.113556.1.4.473 | Server Side Sort request control | S | [RFC 2891](http://tools.ietf.org/html/rfc2891) | AP/OL |
-| [SortResponse](#sortresponse) | 1.2.840.113556.1.4.474 | Server Side Sort request control | C | [RFC 2891](http://tools.ietf.org/html/rfc2891) | AP/OL |
-| [Subentries](#subentries) | 1.3.6.1.4.1.4203.1.10.1 | Controls the visibility of entries and subentries | S | [RFC 3672](http://tools.ietf.org/html/rfc3672) | AP/OL |
-| [SyncDoneValue](#syncdonevalue) | 1.3.6.1.4.1.4203.1.9.1.3 | Control sent when replication has been completed. It contains a cookie. | C | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
-| [SyncRequestValue](#syncrequestvalue) | 1.3.6.1.4.1.4203.1.9.1.1 | Controls the syncrepl process | S | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
-| [SyncStateValue](#syncstatevalue) | 1.3.6.1.4.1.4203.1.9.1.2 | Gives the syncrepl state | C | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
-| [VirtualListViewRequest](#virtuallistviewrequest) | 2.16.840.1.113730.3.4.9 | Sent to the server to request a subset of results | S | [Scrolling View Browsing of Search Results](https://tools.ietf.org/html/draft-ietf-ldapext-ldapv3-vlv-09) | AP |
-| [VirtualListViewResponse](#virtuallistviewresponse) | 2.16.840.1.113730.3.4.10 | Sent back to the client to give the search current status | C | [Scrolling View Browsing of Search Results](https://tools.ietf.org/html/draft-ietf-ldapext-ldapv3-vlv-09) | AP |
-
-## How to use controls
-
-It's quite simple. You just have to instanciate the control you want to use, set its value, and add it to the request you will send to the server. Here is an example with the *ManageDsaIT* control :
-
- :::Java
- AddRequest addRequest = new AddRequestImpl(); // Create the request
- ManageDsaIT manageDSAIT = new ManageDsaITImpl(); // Instanciate the control
- manageDSAIT.setCritical( true ); // Set a value
- addRequest.addControl( manageDSAIT ); // Add the control to the request
- ...
-
-
-and that's it !
-
-Note that you have to create an instance of teh operation you want to send to the server, if yu want to add a control to it.
-
-On the client side, you may want to check if there is a control and read it if so. This is a bit more complex, because you need to know which kind of control you are expecting. We will see with a more complex control, the *Paged Search* control (which allows the user to get a specific number of enries at each call). Here, we will fetch 4 entries in one go, until all the entries have been read, and as we have 10 entries to read, we will send 3 *SearchRequest*, teh first two will return 4 entries and the last one only 2.
-
-
- :::Java
- try ( LdapConnection connection = new LdapNetworkConnection( "MyServer", 389 ) )
- {
- connection.bind( "cn=user,ou=system", "secret" );
-
- // Create the control, and tell it we want 4 entries for every call
- PagedResults pagedControl = new PagedResultsImpl();
- pagedControl.setSize( 4 );
-
- // Read all the elements
- List<Entry> results = new ArrayList<>();
-
- // Create the SearchRequest
- SearchRequest searchRequest = new SearchRequestImpl();
- searchRequest.setBase( new Dn( "dc=users,ou=system" ) );
- searchRequest.setFilter( "(cn=*)" );
- searchRequest.setScope( SearchScope.SUBTREE );
-
- while ( true )
- {
- // Add the PagedSearch control to the SearchRequest
- searchRequest.addControl( pagedControl );
-
- // Do the search now
- try ( SearchCursor cursor = connection.search( searchRequest ) )
- {
- // Loop on all the entries we got back (Should be 4, or less)
- while ( cursor.next() )
- {
- Entry result = cursor.getEntry();
- results.add( result );
- }
-
- // Check if we have reached the size limit
- if ( cursor.getSearchResultDone().getLdapResult().getResultCode() == ResultCodeEnum.SIZE_LIMIT_EXCEEDED )
- {
- break;
- }
-
- // Now check the returned controls
- Map<String, Control> controls = cursor.getSearchResultDone().getControls();
-
- // We should get a PagedResult response
- PagedResults responseControl = ( PagedResults ) controls.get( PagedResults.OID );
-
- if ( responseControl != null )
- {
- // check if this is over, ie the cookie is empty
- byte[] cookie = responseControl.getCookie();
-
- if ( Strings.isEmpty( cookie ) )
- {
- // Ok, we are done
- break;
- }
-
- // Prepare the next iteration, sending a bad cookie
- pagedControl.setCookie( cookie );
- }
- else
- {
- break;
- }
- }
- }
-
- // At this point, we should have read 10 entries
- }
-
-This sounds like a bit complex, but actually, this control is complex. What we are interested in is the way we get the control returned by the server. In this case, the control we are interested in is attached to the *SearchResultDone* response, which is the last result we have when reading the cursor. As we may have more than one control, the response conains a _Map_ of controls, ot of which we should be able to retreive the *PagedSearch* control from its *OID*. This is what does this piece of code :
-
- :::Java
- ...
- // We should get a PagedResult response
- PagedResults responseControl = ( PagedResults ) controls.get( PagedResults.OID );
- ...
-
-If it's not null, we can proceed with the control.
-
-Side note : in this piece of code, we don't close the connection nor the cursor, because they are *Closeable* : They will be close when we exit the _try_ scope. This is a feature added in *Java 7*, called *try with resources*
-
-## Managed Controls detail
-
-### AdDirSync
-
-A control used to initiate a synchronization with an *Active Directory* server, and get back the results. Check [Microsoft LDAP Control for Directory Synchronization](https://tools.ietf.org/html/draft-armijo-ldap-dirsync-01) for a better understanding on how to use this control.
-
-* OID : *1.2.840.113556.1.4.841*
-* Criticality : TRUE
-* ASN.1 description :
-
-Sent to the server :
-
- :::Text
- realReplControlValue ::= SEQUENCE {
- flags integer
- maxBytes integer
- cookie OCTET STRING
- }
-
-This control is only valid when send with a *SearchRequest*.
-
-Received from the server :
-
- :::Text
- realReplControlValue ::= SEQUENCE {
- flag integer
- maxReturnLength integer
- cookie OCTET STRING
- }
-
-The cookie read from this control has to be injected in the control sent to the server for the next search.
-
-### AdPolicyHints
-
-* OID : 1.2.840.113556.1.4.223
-
-### AdShowDeleted
-
-* OID : 1.2.840.113556.1.4.417
-
-### Cascade
-
-* OID : 1.3.6.1.4.1.18060.0.0.1
-
-### ChangeNotifications
-
-* OID : 1.2.840.113556.1.4.528
-
-### EntryChange
-
-* OID : 2.16.840.1.113730.3.4.7
-
-### ManageDSAIT
-
-* OID : *2.16.840.1.113730.3.4.2*
-
-This is oe of the simplest control : it has no value, and he criticality flag may be absent.
-
-It's used to get access to special objects, like *referrals* or *subentries* as normal objects. Let's see what that means for *referrals*.
-
-A *Referral* is a special object which once returned to the client, will automatically will redirect the client to another part of teh *DIT* (or to another *LDAP* server). So to speak, the end user does not see the *referral*, but the reffered entry. The question is : how do we set a *referral*, or how do we modify it ? We use the *ManageDsaIT* control.
-
-Let say we have such an entry, which is actually a referal :
-
- :::Text
- dn: uid=entryRef,ou=users,dc=acme,dc=com
- objectClass: extensibleObject
- objectClass: referral
- objectClass: top
- uid: entryref"
- ref: ldap://localhost:10389/uid=entry,ou=users,dc=acme,dc=com
- ref: ldap://trust:10389/uid=entry,ou=users,dc=trust,dc=com
-
-A client searchingg for _uid=entryRef,ou=users,dc=acme,dc=com_ will be redirected to _uid=entry,ou=users,dc=acme,dc=com_ on the local server or on _uid=entry,ou=users,dc=trust,dc=com_ on the *trust* server (it's up to the client to decide which entry to fetch).
-
-If we want to modify this referral, we need to add the *ManageDsaIT* control :
-
-
- :::Java
- try ( LdapConnection connection = new LdapNetworkConnection( "MyServer", 389 ) )
- {
- connection.bind( "cn=user,ou=system", "secret" );
-
- // modify the referral
- ModifyRequest modifyRequest = new ModifyRequestImpl();
- modifyRequest.setName( new Dn( "uid=entryRef,ou=users,dc=acme,dc=com" ) );
- modifyRequest.add( "ref", "ldap://subsidiary:10389/uid=entry,ou=users,dc=subsidiary,dc=com" );
-
- // Add the control
- modifyRequest.addControl( new ManageDsaITImpl() );
-
- // And apply the modification
- connection.modify( modifyRequest );
- }
-
-Now, if we fetch the entry (still using the control), it will looks like :
-
- :::Text
- dn: uid=entryRef,ou=users,dc=acme,dc=com
- objectClass: extensibleObject
- objectClass: referral
- objectClass: top
- uid: entryref"
- ref: ldap://localhost:10389/uid=entry,ou=users,dc=acme,dc=com
- ref: ldap://trust:10389/uid=entry,ou=users,dc=trust,dc=com
- ref: ldap://subsidiary:10389/uid=entry,ou=users,dc=subsidiary,dc=com
-
-As you can see, a third *ref* value has been added.
-
-### PagedResults
-
-* OID : *1.2.840.113556.1.4.319*
-
-### PasswordPolicy
-
-* OID : 1.3.6.1.4.1.42.2.27.8.5.1
-
-### PermissiveModify
-
-* OID : 1.2.840.113556.1.4.1413
-
-### PersistentSearch
-
-* OID : 2.16.840.1.113730.3.4.3
-
-### ProxiedAuthz
-
-* OID : 2.16.840.1.113730.3.4.18
-
-### SortRequest
-
-* OID : 1.2.840.113556.1.4.473
-
-### SortResponse
-
-* OID : 1.2.840.113556.1.4.474
-
-### Subentries
-
-* OID : 1.3.6.1.4.1.4203.1.10.1
-
-### SyncDoneValue
-
-* OID : 1.3.6.1.4.1.4203.1.9.1.3
-
-### SyncRequestValue
-
-* OID : 1.3.6.1.4.1.4203.1.9.1.1
-
-### SyncStateValue
-
-* OID : 1.3.6.1.4.1.4203.1.9.1.2
-
-### VirtualListViewRequest
-
-* OID : 2.16.840.1.113730.3.4.9
-
-### VirtualListViewResponse
-
-* OID : 2.16.840.1.113730.3.4.10
diff --git a/content/api/user-guide/6.8-cursor.mdtext b/content/api/user-guide/6.8-cursor.mdtext
deleted file mode 100644
index 40703aa..0000000
--- a/content/api/user-guide/6.8-cursor.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.8 - Cursor
-NavPrev: 6.7-control.html
-NavPrevText: 6.7 - Control
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.9-dn.html
-NavNextText: 6.9 - Dn
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.8 - Cursor
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/6.9-dn.mdtext b/content/api/user-guide/6.9-dn.mdtext
deleted file mode 100644
index 486b5be..0000000
--- a/content/api/user-guide/6.9-dn.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6.9 - Dn
-NavPrev: 6.8-cursor.html
-NavPrevText: 6.8 - Cursor
-NavUp: 6-ldap-data-structures.html
-NavUpText: 6 - LDAP data structures
-NavNext: 6.10-dit-content-rule.html
-NavNextText: 6.10 - DITContentRule
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6.9 - Dn
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7-requests-responses.mdtext b/content/api/user-guide/7-requests-responses.mdtext
deleted file mode 100644
index 7bc3e6e..0000000
--- a/content/api/user-guide/7-requests-responses.mdtext
+++ /dev/null
@@ -1,159 +0,0 @@
-Title: 7 - Requests and Responses
-NavPrev: 6-ldap-data-structures.html
-NavPrevText: 6 - LDAP Data Structures
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 8-ldap-rfcs.html
-NavNextText: 8 - LDAP Related RFCs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7 - Requests and Responses (...)
-
-Here we will describe all the Java structures used to process LDAP message (Requests and Responses). This can be useful whenever one wants to send a message or process a response, using all possible options.
-
-## Inherited classes
-
-All the messages inherit from a few classes that are described here. They gather the common fields used across most message types.
-
-### The Message interface
-
-This is the parent of the message hierarchy. Every message has a few characteristics that are available across all of its inherited classes:
-
- * Id : the message ID which is generated by the server or the client. You should never add it
- * Controls : The list of controls you add to a request or that get added by the response
-
-Here is the Message interface:
-
- :::Java
- /**
- * Root interface for all LDAP message type interfaces.
- *
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
- public interface Message
- {
- /**
- * Gets the LDAP message type code associated with this Message. Each
- * request and response type has a unique message type code defined by the
- * protocol in <a href="http://www.faqs.org/rfcs/rfc2251.html">RFC 2251</a>.
- *
- * @return the message type code.
- */
- MessageTypeEnum getType();
-
-
- /**
- * Gets the controls associated with this message mapped by OID.
- *
- * @return Map of OID strings to Control object instances.
- */
- Map<String, Control> getControls();
-
-
- /**
- * Gets the control associated with the given OID.
- *
- * @param oid The Cntrol's OID we are looking for
- * @return The Control object instance with the OID.
- */
- Control getControl( String oid );
-
-
- /**
- * Checks whether or not this message has the specified control.
- *
- * @param oid the OID of the control
- * @return true if this message has the control, false if it does not
- */
- boolean hasControl( String oid );
-
-
- /**
- * Adds a control to this Message.
- *
- * @param control the control to add.
- * @return A Message reference
- * @throws org.apache.directory.shared.ldap.model.exception.MessageException if controls cannot be added to this Message or the control is
- * not known etc.
- */
- Message addControl( Control control ) throws MessageException;
-
-
- /**
- * Adds an array of controls to this Message.
- *
- * @param controls the controls to add.
- * @return A Message reference
- * @throws MessageException if controls cannot be added to this Message or they are not known etc.
- */
- Message addAllControls( Control[] controls ) throws MessageException;
-
-
- /**
- * Deletes a control removing it from this Message.
- *
- * @param control the control to remove.
- * @return A Message reference
- * @throws MessageException if controls cannot be added to this Message or the control is
- * not known etc.
- */
- Message removeControl( Control control ) throws MessageException;
-
-
- /**
- * Gets the session unique message sequence id for this message. Requests
- * and their responses if any have the same message id. Clients at the
- * initialization of a session start with the first message's id set to 1
- * and increment it with each transaction.
- *
- * @return the session unique message id.
- */
- int getMessageId();
-
-
- /**
- * Sets the Message ID for this request
- * @param messageId The message Id
- * @return A Message reference
- */
- Message setMessageId( int messageId );
- }
-
-## Contents
-
-* [7.1 - AbandonRequest](7.1-abandon-request.html)
-* [7.2 - AddRequest](7.2-add-request.html)
-* [7.3 - AddResponse](7.3-add-response.html)
-* [7.4 - BindRequest](7.4-bind-request.html)
-* [7.5 - BindResponse](7.5-bind-response.html)
-* [7.6 - CompareRequest](7.6-compare-request.html)
-* [7.7 - CompareResponse](7.7-compare-response.html)
-* [7.8 - DelRequest](7.8-del-request.html)
-* [7.9 - DelResponse](7.9-del-response.html)
-* [7.10 - ExtendedRequest](7.10-extended-request.html)
-* [7.11 - ExtendedResponse](7.11-extended-response.html)
-* [7.12 - IntermediateResponse](7.12-intermediate-response.html)
-* [7.13 - ModDnRequest](7.13-mod-dn-request.html)
-* [7.14 - ModDnResponse](7.14-mod-dn-response.html)
-* [7.15 - ModifyRequest](7.15-modify-request.html)
-* [7.16 - ModifyResponse](7.16-modify-response..html)
-* [7.17 - SearchRequest](7.17-search-request.html)
-* [7.18 - SearchResultDone](7.18-search-result-done.html)
-* [7.19 - SearchResultEntry](7.19-search-result-entry.html)
-* [7.20 - SearchResultReference](7.20-search-result-reference.html)
-* [7.21 - UnbindRequest](7.21-unbind-request.html)
diff --git a/content/api/user-guide/7.1-abandon-request.mdtext b/content/api/user-guide/7.1-abandon-request.mdtext
deleted file mode 100644
index 1967615..0000000
--- a/content/api/user-guide/7.1-abandon-request.mdtext
+++ /dev/null
@@ -1,78 +0,0 @@
-Title: 7.1 - AbandonRequest
-NavPrev: 7-requests-responses.html
-NavPrevText: 7 - Requests and Responses
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.2-add-request.html
-NavNextText: 7.2 - AddRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.1 AbandonRequest
-
-This request is used to tell the server that a given request (sent previously) has been abandoned. The only required parameter is the *ID* field of a request you want to stop.
-
- :::Java
- public interface AbandonRequest extends Request
- {
- /**
- * Gets the id of the request operation to terminate.
- *
- * @return the id of the request message to abandon
- */
- int getAbandoned();
-
-
- /**
- * Sets the id of the request operation to terminate.
- *
- * @param requestId the sequence id of the request message to abandon
- * @return The AbandonRequest instance
- */
- AbandonRequest setAbandoned( int requestId );
- }
-
-There are two existing implementations that can used:
-
-* _AbandonRequestImpl_ : The default implementation.
-* _AbandonRequestDsml_ : An implementation used when you want to generate a DSML request
-
-The _AbandonRequest_ message does not have a response, the abandonned request will just be stopped.
-
-## Usage
-
-It's pretty easy to do. You just to inject the ID of the request you want to abandon:
-
- :::Java
- connection.abandon( messageId );
-
-This will interrupt the request whose ID equals _messageId_.
-
-### Adding some controls
-
-You can add a control in the _AbandonRequest_, once you create an instance of _AbandonRequestImpl:
-
-
- :::Java
- AbandonRequest abandonRequest = new AbandonRequestImpl( messageId );
-
- // Add your control
- abandonRequest.addControl( control );
-
- // Send the request
- connection.abandon( abandonRequest );
-_
diff --git a/content/api/user-guide/7.10-extended-request.mdtext b/content/api/user-guide/7.10-extended-request.mdtext
deleted file mode 100644
index da52475..0000000
--- a/content/api/user-guide/7.10-extended-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.10 - ExtendedRequest
-NavPrev: 7.9-del-response.html
-NavPrevText: 7.9 - DelResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.11-extended-response.html
-NavNextText: 7.11 - ExtendedResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.10 - ExtendedRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.11-extended-response.mdtext b/content/api/user-guide/7.11-extended-response.mdtext
deleted file mode 100644
index 9826dcc..0000000
--- a/content/api/user-guide/7.11-extended-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.11 - ExtendedResponse
-NavPrev: 7.10-extended-request.html
-NavPrevText: 7.10 - ExtendedRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.12-intermediate-response.html
-NavNextText: 7.12 - IntermediateResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.11 - ExtendedResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.12-intermediate-response.mdtext b/content/api/user-guide/7.12-intermediate-response.mdtext
deleted file mode 100644
index 4487790..0000000
--- a/content/api/user-guide/7.12-intermediate-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.12 - IntermediateResponse
-NavPrev: 7.11-extended-response.html
-NavPrevText: 7.11 - ExtendedResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.13-mod-dn-request.html
-NavNextText: 7.13 - ModDnRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.12 - IntermediateResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.13-mod-dn-request.mdtext b/content/api/user-guide/7.13-mod-dn-request.mdtext
deleted file mode 100644
index 34ec951..0000000
--- a/content/api/user-guide/7.13-mod-dn-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.13 - ModDnRequest
-NavPrev: 7.12-intermediate-response.html
-NavPrevText: 7.12 - IntermediateResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.14-mod-dn-response.html
-NavNextText: 7.14 - ModDnResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.13 - ModDnRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.14-mod-dn-response.mdtext b/content/api/user-guide/7.14-mod-dn-response.mdtext
deleted file mode 100644
index 958714d..0000000
--- a/content/api/user-guide/7.14-mod-dn-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.14 - ModDnResponse
-NavPrev: 7.13-mod-dn-request.html
-NavPrevText: 7.13 - ModDnRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.15-modify-request.html
-NavNextText: 7.15 - ModifyRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.14 - ModDnResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.15-modify-request.mdtext b/content/api/user-guide/7.15-modify-request.mdtext
deleted file mode 100644
index 49e0080..0000000
--- a/content/api/user-guide/7.15-modify-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.15 - ModifyRequest
-NavPrev: 7.14-mod-dn-response.html
-NavPrevText: 7.14 - ModDnResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.16-modify-response.html
-NavNextText: 7.16 - ModifyResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.15 - ModifyRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.16-modify-response.mdtext b/content/api/user-guide/7.16-modify-response.mdtext
deleted file mode 100644
index 32e418d..0000000
--- a/content/api/user-guide/7.16-modify-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.16 - ModifyResponse
-NavPrev: 7.15-modify-request.html
-NavPrevText: 7.15 - ModifyRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.17-search-request.html
-NavNextText: 7.17 - SearchRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.16 - ModifyResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.17-search-request.mdtext b/content/api/user-guide/7.17-search-request.mdtext
deleted file mode 100644
index 4a0e314..0000000
--- a/content/api/user-guide/7.17-search-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.17 - SearchRequest
-NavPrev: 7.16-modify-response.html
-NavPrevText: 7.16 - ModifyResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.18-search-result-done.html
-NavNextText: 7.18 - SearchResultDone
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.17 - SearchRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.18-search-result-done.mdtext b/content/api/user-guide/7.18-search-result-done.mdtext
deleted file mode 100644
index 17d2728..0000000
--- a/content/api/user-guide/7.18-search-result-done.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.18 - SearchResultDone
-NavPrev: 7.17 - search-request.html
-NavPrevText: 7.17 - SearchRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.19-search-result-entry.html
-NavNextText: 7.19 - SearchResultEntry
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.18 - SearchResultDone
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.19-search-result-entry.mdtext b/content/api/user-guide/7.19-search-result-entry.mdtext
deleted file mode 100644
index 924259c..0000000
--- a/content/api/user-guide/7.19-search-result-entry.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.19 - SearchResultEntry
-NavPrev: 7.18-search-result-done.html
-NavPrevText: 7.18 - SearchResultDone
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.20-search-result-reference.html
-NavNextText: 7.20 - SearchResultReference
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.19 - SearchResultEntry
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.2-add-request.mdtext b/content/api/user-guide/7.2-add-request.mdtext
deleted file mode 100644
index 34d59b6..0000000
--- a/content/api/user-guide/7.2-add-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.2 - AddRequest
-NavPrev: 7.1-abandon-request.html
-NavPrevText: 7.1 - AbandonRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.3-add-response.html
-NavNextText: 7.3 - AddResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.2 - AddRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.20-search-result-reference.mdtext b/content/api/user-guide/7.20-search-result-reference.mdtext
deleted file mode 100644
index 222e5d7..0000000
--- a/content/api/user-guide/7.20-search-result-reference.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.20 - SearchResultReference
-NavPrev: 7.19-search-result-entry.html
-NavPrevText: 7.19 - SearchResultEntry
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.21-unbind-request.html
-NavNextText: 7.21 - UnbindRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.20 - SearchResultReference
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.21-unbind-request.mdtext b/content/api/user-guide/7.21-unbind-request.mdtext
deleted file mode 100644
index 3e0d423..0000000
--- a/content/api/user-guide/7.21-unbind-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.21 - UnbindRequest
-NavPrev: 7.19-search-result-entry.html
-NavPrevText: 7.19 - SearchResultEntry
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 8-ldap-rfcs.html
-NavNextText: 8 - LDAP related RFCs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.21 - UnbindRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.3-add-response.mdtext b/content/api/user-guide/7.3-add-response.mdtext
deleted file mode 100644
index b0db64b..0000000
--- a/content/api/user-guide/7.3-add-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.3 - AddResponse
-NavPrev: 7.2-add-request.html
-NavPrevText: 7.2 - AddRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.4-bind-request.html
-NavNextText: 7.4 - BindRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.3 - AddResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.4-bind-request.mdtext b/content/api/user-guide/7.4-bind-request.mdtext
deleted file mode 100644
index 033ae49..0000000
--- a/content/api/user-guide/7.4-bind-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.4 - BindRequest
-NavPrev: 7.3-add-response.html
-NavPrevText: 7.3 - AddResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.5-bind-response.html
-NavNextText: 7.5 - BindResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.4 - BindRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.5-bind-response.mdtext b/content/api/user-guide/7.5-bind-response.mdtext
deleted file mode 100644
index b1f4dd0..0000000
--- a/content/api/user-guide/7.5-bind-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.5 - BindResponse
-NavPrev: 7.4-bind-request.html
-NavPrevText: 7.4 - BindRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.6-compare-request.html
-NavNextText: 7.6 - CompareRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.5 - BindResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.6-compare-request.mdtext b/content/api/user-guide/7.6-compare-request.mdtext
deleted file mode 100644
index 04e7f14..0000000
--- a/content/api/user-guide/7.6-compare-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.6 - CompareRequest
-NavPrev: 7.5-bind-response.html
-NavPrevText: 7.5 - BindResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.7-compare-response.html
-NavNextText: 7.7 - CompareResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.6 - CompareRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.7-compare-response.mdtext b/content/api/user-guide/7.7-compare-response.mdtext
deleted file mode 100644
index 88dc87f..0000000
--- a/content/api/user-guide/7.7-compare-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.7 - CompareResponse
-NavPrev: 7.6-compare-request.html
-NavPrevText: 7.6 - CompareRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.8-del-request.html
-NavNextText: 7.8 - DelRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.7 - CompareResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.8-del-request.mdtext b/content/api/user-guide/7.8-del-request.mdtext
deleted file mode 100644
index a59082e..0000000
--- a/content/api/user-guide/7.8-del-request.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.8 - DelRequest
-NavPrev: 7.7-compare-response.html
-NavPrevText: 7.7 - CompareResponse
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.9-del-response.html
-NavNextText: 7.9 - DelResponse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.8 - DelRequest
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/7.9-del-response.mdtext b/content/api/user-guide/7.9-del-response.mdtext
deleted file mode 100644
index ff046e8..0000000
--- a/content/api/user-guide/7.9-del-response.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7.9 - DelResponse
-NavPrev: 7.8-del-request.html
-NavPrevText: 7.8 - DelRequest
-NavUp: 7-requests-responses.html
-NavUpText: 7 - Requests and Responses
-NavNext: 7.10-extended-request.html
-NavNextText: 7.10 - ExtendedRequest
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.9 - DelResponse
-
->**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/content/api/user-guide/8-ldap-rfcs.mdtext b/content/api/user-guide/8-ldap-rfcs.mdtext
deleted file mode 100644
index 3b415ec..0000000
--- a/content/api/user-guide/8-ldap-rfcs.mdtext
+++ /dev/null
@@ -1,195 +0,0 @@
-Title: 8 - LDAP Related RFCs
-NavPrev: 7-requests-response.html
-NavPrevText: 7 - Requests and Responses
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext:
-NavNextText:
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 8 - LDAP Related RFCs
-
-**LDAP** and **X.500** are specified through its many **RFCs**. Here is the list of available **RFCs** by category (there are about 100 RFCs available, some now deprecated, other obsolete.
-
-This page list all the existing **RFCs**, obsolete or not.
-
-![](../../images/icons/information.gif) : Informational
-
-![](../../images/icons/lightbulb.gif) : Historic
-
-![](../../images/icons/lightbulb_on.gif) : Proposed Standard
-
-![](../../images/icons/warning.gif) : Experimental
-
-![](../../images/icons/thumbs_up.gif) : Best current practice
-
-## X.500 related RFCs
-
-### Obsolete RFCs
-| Number | Description | Obsoleted by | Status |
-|---|---|---|---|
-| [RFC1274](http://tools.ietf.org/html/rfc1274) | The COSINE and Internet X.500 Schema. | [RFC4524](http://tools.ietf.org/html/rfc4524) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1487](http://tools.ietf.org/html/rfc1487) | X.500 Lightweight Directory Access Protocol. | [RFC1777](http://tools.ietf.org/html/rfc1777), [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1488](http://tools.ietf.org/html/rfc1488) | The X.500 String Representation of Standard Attribute Syntaxes. | [RFC1778](http://tools.ietf.org/html/rfc1778) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC1567](http://tools.ietf.org/html/rfc1567) | X.500 Directory Monitoring MIB. | [RFC2605](http://tools.ietf.org/html/rfc2605) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC1617](http://tools.ietf.org/html/rfc1617) | Naming and Structuring Guidelines for X.500 Directory Pilots. | [RFC1384](http://tools.ietf.org/html/rfc1384) | ![](../../images/icons/information.gif) |
-| [RFC1632](http://tools.ietf.org/html/rfc1632) | A Revised Catalog of Available X.500 Implementations. | [RFC2116](http://tools.ietf.org/html/rfc2116) | ![](../../images/icons/information.gif) |
-| [RFC1798](http://tools.ietf.org/html/rfc1798) | Connection-less Lightweight X.500 Directory Access Protocol. | [RFC3352](http://tools.ietf.org/html/rfc3352) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1836](http://tools.ietf.org/html/rfc1836) | Representing the O/R Address hierarchy in the X.500 Directory Information Tree. | [RFC2294](http://tools.ietf.org/html/rfc2294) | ![](../../images/icons/warning.gif) |
-| [RFC1837](http://tools.ietf.org/html/rfc1837) | Representing Tables and Subtrees in the X.500 Directory. | [RFC2293](http://tools.ietf.org/html/rfc2293) | ![](../../images/icons/warning.gif) |
-| [RFC1838](http://tools.ietf.org/html/rfc1838) | Use of the X.500 Directory to support mapping between X.400 and RFC 822 Addresses. | [RFC2164](http://tools.ietf.org/html/rfc2164) | ![](../../images/icons/warning.gif) |
-
-### Active RFCs
-| Number | Description | Status |
-|---|---|---|
-| [RFC1275](http://tools.ietf.org/html/rfc1275) | Replication Requirements to provide an Internet Directory using X.500. | ![](../../images/icons/information.gif) |
-| [RFC1276](http://tools.ietf.org/html/rfc1276) | Replication and Distributed Operations extensions to provide an Internet Directory using X.500. | ![](../../images/icons/lightbulb.gif) |
-| [RFC1279](http://tools.ietf.org/html/rfc1279) | X.500 and Domains. S.E. Hardcastle-Kille. | ![](../../images/icons/warning.gif) |
-| [RFC1308](http://tools.ietf.org/html/rfc1308) | Executive Introduction to Directory Services Using the X.500 Protocol. | ![](../../images/icons/information.gif) |
-| [RFC1309](http://tools.ietf.org/html/rfc1309) | Technical Overview of Directory Services Using the X.500 Protocol. | ![](../../images/icons/information.gif) |
-| [RFC1330](http://tools.ietf.org/html/rfc1330) | Recommendations for the Phase I Deployment of OSI Directory Services (X.500) and OSI Message Handling Services (X.400) within the ESNET Community. | ![](../../images/icons/information.gif) |
-| [RFC1430](http://tools.ietf.org/html/rfc1430) | A Strategic Plan for Deploying an Internet X.500 Directory Service. | ![](../../images/icons/information.gif) |
-| [RFC1491](http://tools.ietf.org/html/rfc1491) | A Survey of Advanced Usages of X.500. | ![](../../images/icons/information.gif) |
-| [RFC1562](http://tools.ietf.org/html/rfc1562) | Naming Guidelines for the AARNet X.500 Directory Service. | ![](../../images/icons/information.gif) |
-| [RFC1608](http://tools.ietf.org/html/rfc1608) | Representing IP Information in the X.500 Directory. | ![](../../images/icons/warning.gif) |
-| [RFC1609](http://tools.ietf.org/html/rfc1609) | Charting Networks in the X.500 Directory. | ![](../../images/icons/warning.gif) |
-| [RFC1801](http://tools.ietf.org/html/rfc1801) | MHS use of the X.500 Directory to support MHS Routing. | ![](../../images/icons/warning.gif) |
-| [RFC1802](http://tools.ietf.org/html/rfc1802) | Introducing Project Long Bud: Internet Pilot Project for the Deployment of X.500 Directory Information in Support of X.400 Routing. | ![](../../images/icons/information.gif) |
-| [RFC1803](http://tools.ietf.org/html/rfc1803) | Recommendations for an X.500 Production Directory Service. | ![](../../images/icons/information.gif) |
-| [RFC1804](http://tools.ietf.org/html/rfc1804) | Schema Publishing in X.500 Directory. | ![](../../images/icons/warning.gif) |
-| [RFC1943](http://tools.ietf.org/html/rfc1943) | Building an X.500 Directory Service in the US. B. Jennings. | ![](../../images/icons/information.gif) |
-| [RFC2079](http://tools.ietf.org/html/rfc2079) | Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2116](http://tools.ietf.org/html/rfc2116) | X.500 Implementations Catalog-96. | ![](../../images/icons/information.gif) |
-| [RFC2120](http://tools.ietf.org/html/rfc2120) | Managing the X.500 Root Naming Context. | ![](../../images/icons/warning.gif) |
-| [RFC2164](http://tools.ietf.org/html/rfc2164) | Use of an X.500/LDAP directory to support MIXER address mapping. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2293](http://tools.ietf.org/html/rfc2293) | Representing Tables and Subtrees in the X.500 Directory. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2294](http://tools.ietf.org/html/rfc2294) | Representing the O/R Address hierarchy in the X.500 Directory Information Tree. | ![](../../images/icons/lightbulb_on.gif) |
-
-## Kerberos related RFCs
-
-| Number | Description | Obsoleted by | Status |
-|---|---|---|---|
-| [RFC1510](http://tools.ietf.org/html/rfc1510) | The Kerberos Network Authentication Service (V5). | [RFC4120](http://tools.ietf.org/html/rfc4120) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4120](http://tools.ietf.org/html/rfc4120) | The Kerberos Network Authentication Service (V5). | | ![](../../images/icons/lightbulb_on.gif) |
-
-## LDAP RFCs
-
-### Obsolete RFCs
-| Number | Description | Obsoleted by | Status |
-|---|---|---|---|
-| [RFC1558](http://tools.ietf.org/html/rfc1558) | A String Representation of LDAP Search Filters. | [RFC1960](http://tools.ietf.org/html/rfc1960) | ![](../../images/icons/information.gif) |
-| [RFC1777](http://tools.ietf.org/html/rfc1777) | Lightweight Directory Access Protocol. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1778](http://tools.ietf.org/html/rfc1778) | The String Representation of Standard Attribute Syntaxes. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1779](http://tools.ietf.org/html/rfc1779) | A String Representation of Distinguished Names. | [RFC2253](http://tools.ietf.org/html/rfc2253), [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
-| [RFC1959](http://tools.ietf.org/html/rfc1959) | An LDAP URL Format. | [RFC2255](http://tools.ietf.org/html/rfc2255) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC1960](http://tools.ietf.org/html/rfc1960) | A String Representation of LDAP Search Filters. | [RFC2254](http://tools.ietf.org/html/rfc2254) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2251](http://tools.ietf.org/html/rfc2251) | Lightweight Directory Access Protocol (v3). | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4511](http://tools.ietf.org/html/rfc4511), [RFC4513](http://tools.ietf.org/html/rfc4513), [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2252](http://tools.ietf.org/html/rfc2252) | Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4517](http://tools.ietf.org/html/rfc4517), [RFC4523](http://tools.ietf.org/html/rfc4523), [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2253](http://tools.ietf.org/html/rfc2253) | Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4514](http://tools.ietf.org/html/rfc4514) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2254](http://tools.ietf.org/html/rfc2254) | The String Representation of LDAP Search Filters. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4515](http://tools.ietf.org/html/rfc4515) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2255](http://tools.ietf.org/html/rfc2255) | The LDAP URL Format. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4516](http://tools.ietf.org/html/rfc4516) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2256](http://tools.ietf.org/html/rfc2256) | A Summary of the X.500(96) User Schema for use with LDAPv3. | [RFC4517](http://tools.ietf.org/html/rfc4517), [RFC4519](http://tools.ietf.org/html/rfc4519), [RFC4523](http://tools.ietf.org/html/rfc4523), [RFC4512](http://tools.ietf.org/html/rfc4512), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2559](http://tools.ietf.org/html/rfc2559) | Internet X.509 Public Key Infrastructure Operational Protocols - LDAPv2. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
-| [RFC2587](http://tools.ietf.org/html/rfc2587) | Internet X.509 Public Key Infrastructure LDAPv2 Schema. | [RFC4523](http://tools.ietf.org/html/rfc4523) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2596](http://tools.ietf.org/html/rfc2596) | Use of Language Codes in LDAP. | [RFC3866](http://tools.ietf.org/html/rfc3866) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2829](http://tools.ietf.org/html/rfc2829) | Authentication Methods for LDAP. | [RFC4513](http://tools.ietf.org/html/rfc4513), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2830](http://tools.ietf.org/html/rfc2830) | Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security. | [RFC4511](http://tools.ietf.org/html/rfc), [RFC4513](http://tools.ietf.org/html/rfc), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3377](http://tools.ietf.org/html/rfc3377) | Lightweight Directory Access Protocol (v3): Technical Specification. | [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3383](http://tools.ietf.org/html/rfc) | Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP). | [RFC4520](http://tools.ietf.org/html/rfc4520) | ![](../../images/icons/thumbs_up.gif) |
-| [RFC3674](http://tools.ietf.org/html/rfc3674) | Feature Discovery in Lightweight Directory Access Protocol (LDAP). | [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3771](http://tools.ietf.org/html/rfc3771) | The Lightweight Directory Access Protocol (LDAP) Intermediate Response Message. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4511](http://tools.ietf.org/html/rfc4511) | ![](../../images/icons/lightbulb_on.gif) |
-
-
-
-### Active RFCs
-| Number | Description | Status |
-|---|---|---|
-| [RFC1823](http://tools.ietf.org/html/rfc1823) | The LDAP Application Program Interface. | ![](../../images/icons/information.gif) |
-| [RFC2247](http://tools.ietf.org/html/rfc2247) | Using Domains in LDAP/X.500 Distinguished Names. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2307](http://tools.ietf.org/html/rfc2307) | An Approach for Using LDAP as a Network Information Service. | ![](../../images/icons/warning.gif) |
-| [RFC2377](http://tools.ietf.org/html/rfc2377) | Naming Plan for Internet Directory-Enabled Applications. | ![](../../images/icons/information.gif) |
-| [RFC2589](http://tools.ietf.org/html/rfc2589) | Lightweight Directory Access Protocol (v3): Extensions for Dynamic Directory Services. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2649](http://tools.ietf.org/html/rfc2649) | An LDAP Control and Schema for Holding Operation Signatures. | ![](../../images/icons/warning.gif) |
-| [RFC2657](http://tools.ietf.org/html/rfc2657) | LDAPv2 Client vs. the Index Mesh. | ![](../../images/icons/warning.gif) |
-| [RFC2696](http://tools.ietf.org/html/rfc2696) | LDAP Control Extension for Simple Paged Results Manipulation. | ![](../../images/icons/information.gif) |
-| [RFC2713](http://tools.ietf.org/html/rfc2713) | Schema for Representing Java(tm) Objects in an LDAP Directory. | ![](../../images/icons/information.gif) |
-| [RFC2714](http://tools.ietf.org/html/rfc2714) | Schema for Representing CORBA Object References in an LDAP Directory. | ![](../../images/icons/information.gif) |
-| [RFC2739](http://tools.ietf.org/html/rfc2739) | Calendar Attributes for vCard and LDAP. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2798](http://tools.ietf.org/html/rfc2798) | Definition of the inetOrgPerson LDAP Object Class. | ![](../../images/icons/information.gif) |
-| [RFC2820](http://tools.ietf.org/html/rfc2820) | Access Control Requirements for LDAP. | ![](../../images/icons/information.gif) |
-| [RFC2849](http://tools.ietf.org/html/rfc2849) | The LDAP Data Interchange Format (LDIF) - Technical Specification. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2891](http://tools.ietf.org/html/rfc2891) | LDAP Control Extension for Server Side Sorting of Search Results. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC2926](http://tools.ietf.org/html/rfc2926) | Conversion of LDAP Schemas to and from SLP Templates. | ![](../../images/icons/information.gif) |
-| [RFC2927](http://tools.ietf.org/html/rfc2927) | MIME Directory Profile for LDAP Schema. | ![](../../images/icons/information.gif) |
-| [RFC3045](http://tools.ietf.org/html/rfc3045) | Storing Vendor Information in the LDAP root DSE. | ![](../../images/icons/information.gif) |
-| [RFC3062](http://tools.ietf.org/html/rfc3062) | LDAP Password Modify Extended Operation. K. Zeilenga | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3088](http://tools.ietf.org/html/rfc3088) | OpenLDAP Root Service An experimental LDAP referral service. | ![](../../images/icons/warning.gif) |
-| [RFC3112](http://tools.ietf.org/html/rfc3112) | LDAP Authentication Password Schema. | ![](../../images/icons/information.gif) |
-| [RFC3296](http://tools.ietf.org/html/rfc3296) | Named Subordinate References in Lightweight Directory Access Protocol (LDAP) Directories. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3352](http://tools.ietf.org/html/rfc3352) | Connection-less Lightweight Directory Access Protocol (CLDAP) to Historic Status. | ![](../../images/icons/information.gif) |
-| [RFC3384](http://tools.ietf.org/html/rfc3384) | Lightweight Directory Access Protocol (version 3) Replication Requirements. | ![](../../images/icons/information.gif) |
-| [RFC3494](http://tools.ietf.org/html/rfc3494) | Lightweight Directory Access Protocol version 2 (LDAPv2) to Historic Status. | ![](../../images/icons/information.gif) |
-| [RFC3663](http://tools.ietf.org/html/rfc3663) | Domain Administrative Data in Lightweight Directory Access Protocol (LDAP) | ![](../../images/icons/warning.gif) |
-| [RFC3671](http://tools.ietf.org/html/rfc3671) | Collective Attributes in the Lightweight Directory Access Protocol (LDAP) | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3672](http://tools.ietf.org/html/rfc3672) | Subentries in the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3673](http://tools.ietf.org/html/rfc3673) | Lightweight Directory Access Protocol version 3 (LDAPv3): All Operational Attributes. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3687](http://tools.ietf.org/html/rfc3687) | Lightweight Directory Access Protocol (LDAP) and X.500 Component Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3698](http://tools.ietf.org/html/rfc3698) | Lightweight Directory Access Protocol (LDAP): Additional Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3703](http://tools.ietf.org/html/rfc3703) | Policy Core Lightweight Directory Access Protocol (LDAP) Schema. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3712](http://tools.ietf.org/html/rfc3712) | Lightweight Directory Access Protocol (LDAP): Schema for Printer Services. | ![](../../images/icons/information.gif) |
-| [RFC3727](http://tools.ietf.org/html/rfc3727) | ASN.1 Module Definition for the LDAP and X.500 Component Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3829](http://tools.ietf.org/html/rfc3829) | Lightweight Directory Access Protocol (LDAP) Authorization Identity Request and Response Controls. | ![](../../images/icons/information.gif) |
-| [RFC3866](http://tools.ietf.org/html/rfc3866) | Language Tags and Ranges in the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3876](http://tools.ietf.org/html/rfc3876) | Returning Matched Values with the Lightweight Directory Access Protocol version 3 (LDAPv3). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3909](http://tools.ietf.org/html/rfc3909) | Lightweight Directory Access Protocol (LDAP) Cancel Operation. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC3928](http://tools.ietf.org/html/rfc3928) | Lightweight Directory Access Protocol (LDAP) Client Update Protocol (LCUP). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4104](http://tools.ietf.org/html/rfc4104) | Policy Core Extension Lightweight Directory Access Protocol Schema (PCELS). | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4370](http://tools.ietf.org/html/rfc4370) | Lightweight Directory Access Protocol (LDAP) Proxied Authorization Control. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4373](http://tools.ietf.org/html/rfc4373) | Lightweight Directory Access Protocol (LDAP) Bulk Update/Replication Protocol (LBURP). | ![](../../images/icons/information.gif) |
-| [RFC4403](http://tools.ietf.org/html/rfc4403) | Lightweight Directory Access Protocol (LDAP) Schema for Universal Description, Discovery, and Integration version 3 (UDDIv3). | ![](../../images/icons/information.gif) |
-| [RFC4510](http://tools.ietf.org/html/rfc4510) | Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4511](http://tools.ietf.org/html/rfc4511) | Lightweight Directory Access Protocol (LDAP): The Protocol. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4512](http://tools.ietf.org/html/rfc4512) | Lightweight Directory Access Protocol (LDAP): Directory Information Models. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4513](http://tools.ietf.org/html/rfc4513) | Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4514](http://tools.ietf.org/html/rfc4514) | Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4515](http://tools.ietf.org/html/rfc4515) | Lightweight Directory Access Protocol (LDAP): String epresentation of Search Filters. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4516](http://tools.ietf.org/html/rfc4516) | Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4517](http://tools.ietf.org/html/rfc4517) | Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4518](http://tools.ietf.org/html/rfc4518) | Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4519](http://tools.ietf.org/html/rfc4519) | Lightweight Directory Access Protocol (LDAP): Schema for User Applications. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4520](http://tools.ietf.org/html/rfc4520) | Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/thumbs_up.gif) |
-| [RFC4521](http://tools.ietf.org/html/rfc4521) | Considerations for Lightweight Directory Access Protocol (LDAP) Extensions. | ![](../../images/icons/thumbs_up.gif) |
-| [RFC4522](http://tools.ietf.org/html/rfc4522) | Lightweight Directory Access Protocol (LDAP): The Binary Encoding Option. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4523](http://tools.ietf.org/html/rfc4523) | Lightweight Directory Access Protocol (LDAP) Schema Definitions for X.509 Certificates. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4524](http://tools.ietf.org/html/rfc4524) | COSINE LDAP/X.500 Schema. K. Zeilenga, Ed.. June 2006. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4525](http://tools.ietf.org/html/rfc4525) | Lightweight Directory Access Protocol (LDAP) Modify-Increment Extension. | ![](../../images/icons/information.gif) |
-| [RFC4526](http://tools.ietf.org/html/rfc4526) | Lightweight Directory Access Protocol (LDAP) Absolute True and False Filters. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4527](http://tools.ietf.org/html/rfc4527) | Lightweight Directory Access Protocol (LDAP) Read Entry Controls. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4528](http://tools.ietf.org/html/rfc4528) | Lightweight Directory Access Protocol (LDAP) Assertion Control. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4529](http://tools.ietf.org/html/rfc4529) | Requesting Attributes by Object Class in the Lightweight Directory Access Protocol. | ![](../../images/icons/information.gif) |
-| [RFC4530](http://tools.ietf.org/html/rfc4530) | Lightweight Directory Access Protocol (LDAP) entryUUID Operational Attribute. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4531](http://tools.ietf.org/html/rfc4531) | Lightweight Directory Access Protocol (LDAP) Turn Operation. | ![](../../images/icons/warning.gif) |
-| [RFC4532](http://tools.ietf.org/html/rfc4532) | Lightweight Directory Access Protocol (LDAP) "Who am I?" Operation. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC4533](http://tools.ietf.org/html/rfc4533) | The Lightweight Directory Access Protocol (LDAP) Content Synchronization Operation. | ![](../../images/icons/warning.gif) |
-| [RFC4876](http://tools.ietf.org/html/rfc4876) | A Configuration Profile Schema for Lightweight Directory Access Protocol (LDAP)-Based Agents. | ![](../../images/icons/information.gif) |
-| [RFC5020](http://tools.ietf.org/html/rfc5020) | The Lightweight Directory Access Protocol (LDAP) entryDN Operational Attribute. | ![](../../images/icons/lightbulb_on.gif) |
-| [RFC5803](http://tools.ietf.org/html/rfc5803) | Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted Challenge Response Authentication Mechanism (SCRAM) Secrets. | ![](../../images/icons/information.gif) |
-| [RFC5805](http://tools.ietf.org/html/rfc5805) | Lightweight Directory Access Protocol (LDAP) Transactions. | ![](../../images/icons/warning.gif) |
-| [RFC6171](http://tools.ietf.org/html/rfc6171) | The Lightweight Directory Access Protocol (LDAP) Don't Use Copy Control. | ![](../../images/icons/lightbulb_on.gif) |
-
-
diff --git a/content/api/vision.mdtext b/content/api/vision.mdtext
deleted file mode 100644
index dd33d86..0000000
--- a/content/api/vision.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: LDAP API - Vision
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Vision
-
-When we started to work on replication implementation, we needed a client **API** in order to communicate using the **LDAP** protocol with remote **LDAP** servers. We could have used some existing **LDAP API**, but as we have already defined a lot of base classes we would have had to convert back and forth, we thought it would be better to build the missing pieces and define our own complete LDAP API.
-
-This is one of the reasons we started this sub-project.
-
-Another reason is that we worked with **Sun***a few years ago (2006) to draw a new version of **JNDI**, an aborted effort, sadly. We also have been contacted by the **OpenLDAP** team as they wanted to know if we were ready to maintain **jLDAP**, as it needed some patches, and as they didn't have enough workforce to do so. Last, not least, **OpenDS** team was also interested to see if we can avoid duplication of efforts, as they were also defining an **LDAP API**. Both **OpenDS** and **ApacheDS** teams collaborated, as proven by this [talk](https://directory.staging.apache.org/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf) given during the **2009 Ldap Conference** in Portland.
-
-All those events make it interesting to try to find a common way to define a new **LDAP API**, gathering the interest of the largest developer base possible. We have to tank the **OpenDS** people who were very helpfull in defining the very first version of the **API**, .
-
-As we have not finished to implement all the needed features, it's easy for us to try to figure which parts can be shared with other projects, and which parts must be configurable. A clear example is the underlying network layer: **OpenDS** will use **Grizzly**, while we will use **Apache MINA**. This should be transparent for developers.
-
-Last, not least, no one can claim to be better than all the other great people out there, and claim to be able to define the best possible **LDAP API**. We at **The ASF** believe that collaboration within a community is better than working alone. We are pleased to share what we have already done, ready to move forward in better directions if it allows the API to be more reliable, usable and at the end, easier to use for developers.
\ No newline at end of file
diff --git a/content/articles.mdtext b/content/articles.mdtext
deleted file mode 100644
index 5457f83..0000000
--- a/content/articles.mdtext
+++ /dev/null
@@ -1,30 +0,0 @@
-Title: Articles
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Articles
-
-| Article | Related To | Publication Date |
-|---|:-:|:-:|
-| [DZone: Programming LDAP with Groovy](http://groovy.dzone.com/articles/programming-ldap-groovy) | Groovy LDAP | Feb 16 2009 |
-| [IBM developerWorks: Securing a multitenant SaaS application - Authentication and authorization with Spring Security and Apache Directory Server](https://www.ibm.com/developerworks/java/library/j-saas/) | ApacheDS | Sept 30 2008 |
-| [The Geronimo renegade: Security and Apache Geronimo's future](http://www-128.ibm.com/developerworks/opensource/library/os-ag-renegade11/) | Triplesec | 23 Jan 2007 |
-| [PR Newswire: The Apache Directory Project Announces New LDAPv3-Certified Server](http://sev.prnewswire.com/computer-electronics/20061010/CLTU03610102006-1.html) | ApacheDS | Oct 10 2006 |
-| [Use Apache Geronimo and Ajax to build a directory, Part 2: Querying the LDAP server](http://www-128.ibm.com/developerworks/edu/os-dw-os-ag-ldap2.html) | ApacheDS | Jun 13 2006 |
-| [Use Apache Geronimo and Ajax to build a directory, Part 1: Configuring Geronimo's LDAP server](http://www-128.ibm.com/developerworks/opensource/edu/os-dw-os-ag-ldap1.html) | ApacheDS | May 23 2006 |
-| [Storing Java objects in Apache Directory Server, Part 2; Store, search, and retrieve Java objects in ApacheDS](http://www-128.ibm.com/developerworks/java/library/j-apacheds2) | ApacheDS | May 02 2006 |
-| [Storing Java objects in Apache Directory Server, Part 1; Inside the Apache Directory Server](http://www-128.ibm.com/developerworks/java/library/j-apacheds1) | ApacheDS | May 02 2006 |
diff --git a/content/commercial-support.mdtext b/content/commercial-support.mdtext
deleted file mode 100644
index 44a1786..0000000
--- a/content/commercial-support.mdtext
+++ /dev/null
@@ -1,24 +0,0 @@
-# Commercial Apache Directory™ Support Offerings
-
-Several companies have built products and services around the Apache Directory™ project. This page is dedicated to providing descriptions of those offerings and links to more information. Companies are definitely encouraged to update this page directly or send a mail to the Apache Directory™ PMC ([private@directory.apache.org](mailto:private@directory.apache.org)) with a description of their offerings and we can update the page. The products and services listed on this page are provided for information use only to our users. The Apache Directory™ PMC does not endorse or recommend any of the products or services on this page. See below for information about what is appropriate to add to the page.
-
-## ApacheDS™ Related Offerings
-
-### [Keydap](http://www.keydap.com)
-
-[Keydap](http://www.keydap.com) provides custom identity management solutions built around ApacheDS™.
-
-Keydap distributes a custom version of ApacheDS™ called 'Keydap Server' with many value added features including Multi-Master replication for free under Apache License v2.0 and offers commercial support for both ApacheDS™ and Keydap Server.
-
-### [Symas](https://symas.com/)
-
-Provides commerical support (subscriptions) to Apache Fortress along with professional services for installations, enhancements, integrations.
-
- * <a href="https://symas.com/fortressdetails/">Apache Fortress Product Page</a>
-
-
-## Policy for additions to this page
-
-Companies are free to add information about their products and services to this page. The information must be factual and informational in nature and not be a marketing statement. Statements that promote your products and services over other offerings on the page will not be tolerated and will be removed. Such marketing statements can be added to your own pages on your own site, but not here.
-
-When in doubt, email the Apache Directory™ PMC ([private@directory.apache.org](mailto:private@directory.apache.org)) and ask. We'd be happy to help.
diff --git a/content/conference-materials.mdtext b/content/conference-materials.mdtext
deleted file mode 100644
index ce06d2b..0000000
--- a/content/conference-materials.mdtext
+++ /dev/null
@@ -1,68 +0,0 @@
-Title: Conference Materials
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-<!--
-# Conferences : Upcoming Events
-
-| When | Title | Will be presented by | Will be presented at |
-|:-:|---|:-:|:-:|
-| | | | |
--->
-
-# Conferences: Materials Archive
-
-| Title | Presented by | Presented at |
-|---|:-:|:-:|
-| [ApacheDS : 10 years in the making](conference-materials.data/apachecon2015.pdf) | Emmanuel Lécharny | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
-| [Kerberos in your JVM](conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf) | Kiran Ayyagari | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
-| [The anatomy of a Secure Web Application using Java EE, Spring Security and Apache Directory Fortress](conference-materials.data/AnatomyOfSecureWebApp.pdf) | Shawn McKinney | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
-| [RBAC Enable Your Java Web Apps Using Apache Directory and Fortress](conference-materials.data/ApacheConNA-Fortress-2015.pdf) | Shawn McKinney | ![](images/flags/us.png) [ApacheCon North America 2015](http://events.linuxfoundation.org/events/apachecon-north-america) |
-| [Testing LDAP Implementations](conference-materials.data/testing-LDAP.pdf) | Emmanuel Lécharny | ![](images/flags/hu.png) [ApacheCon Europ 2014](http://events.linuxfoundation.org/events/apachecon-europe) |
-| [RBAC Authorization With Apache Directory Server And Fortress](conference-materials.data/Rbac-Directory-ApacheCon.pdf) | Shawn McKinney, Emmanuel Lécharny | ![](images/flags/hu.png) [ApacheCon Europe 2014](http://events.linuxfoundation.org/events/apachecon-europe) |
-| [Preview of Apache Directory Studio 2.0](conference-materials.data/LDAPCon-2011-Studio.pdf) | Pierre-Arnaud Marcelot | ![](images/flags/de.png) [LDAPCon 2011](http://www.daasi.de/ldapcon2011/) |
-| [NoSQL²: Store LDAP data in HBase](conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf) | Stefan Seelmann | ![](images/flags/de.png) [Munich Open Hadoop User Group](http://upcoming.yahoo.com/event/5771044/BY/Mnchen/3rd-Munich-OpenHUG-Meeting/eCircle-AG) |
-| [LDAP et un petit peu plus (conférence à l'université du Litoral)](conference-materials.data/presentation.odp) | Emmanuel Lécharny | ![](images/flags/fr.png) [Université Du Littoral](http://www.univ-littoral.fr/) |
-| [Cours LDAP](conference-materials.data/cours-ldap.odp) | Emmanuel Lécharny | ![](images/flags/fr.png) [Université Du Littoral](http://www.univ-littoral.fr/) |
-| [LDAP. Das Wichtigste für Java Professionals](conference-materials.data/szoerner-ruhrjug-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) [ruhrjug](http://www.ruhrjug.de/) |
-| Towards a common LDAP API for the Java Platform : [Paper](conference-materials.data/towards-a-common-java-ldap-api-paper.pdf) [Slides](conference-materials.data/towards_a_common_java_ldap_api-slides.pdf) | Emmanuel Lécharny & Ludovic Poitou (Sun) | ![](images/flags/us.png) LdapCon 2009 |
-| [The Apache Directory Project - Toolchain for Developers](conference-materials.data/toolchain-for-developpers.pdf) | Stefan Seelmann | ![](images/flags/us.png) LdapCon 2009 |
-| Leveraging RFC 4533 to build a heterogeneous replication system [Paper](conference-materials.data/replication.pdf) [Slides](conference-materials.data/leveraging-RFC4533.pdf) | Emmanuel Lécharny | ![](images/flags/us.png) LdapCon 2009 |
-| [Apache DS 2.0 : What's new ?](conference-materials.data/ads-2.0-what's-new.pdf) | Emmanuel Lécharny | ![](images/flags/nl.png) ApacheCon EU 2009 |
-| [LDAP. Eine Einfuehrung fuer Java-Entwickler (German)](conference-materials.data/szoerner-berlinjar-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) [berlin.jar 2008](http://berlin.jar.jug-bb.de/) |
-| [LDAP entmystifiziert (German)](conference-materials.data/szoerner-jugbb-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) JUG Berlin Brandenburg |
-| [Java und LDAP (German)](conference-materials.data/Java_und_LDAP.pdf) | Stefan Seelmann, Christine Koppelt | ![](images/flags/de.png) JUG Munich |
-| [Apache Directory Studio - Ihre Eintrittskarte in die Verzeichniswelt (German)](conference-materials.data/szoerner_apachedirectorystudio.pdf) | Stefan Zörner | ![](images/flags/de.png) JAX 2008 |
-| [Apache Triplesec: Strong (2-factor) Mobile Identity Management](conference-materials.data/6078680.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2008 |
-| ApacheDS: Bringing "lightweight" to ldap development [Slides](conference-materials.data/ApacheCon-EU-2008-light.pdf) [Source](conference-materials.data/ACEU2008.jar) | Emmanuel Lecharny | ![](images/flags/nl.png) ApacheCon EU 2008 |
-| Apache Directory Studio, a new Open Source LDAP & Directory Tooling Platform [Slides](conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf) [Paper](conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf) | Stefan Seelmann, Pierre-Arnaud Marcelot | ![](images/flags/de.png) LDAPcon |
-| [Architecting the Modern LDAP Renaissance. The Apache Directory Vision](conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf) | Alex Karasulu | ![](images/flags/de.png) LDAPcon |
-| LDAP Stored Procedures and Triggers in ApacheDS [Paper](conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pf) [Slides](conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf) | Ersin Er | ![](images/flags/de.png) LDAPcon |
-| [Apache Triplesec: Strong (2-factor) Mobile Identity Management](conference-materials.data/6078680.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2007 |
-| [Enterprise LDAP and Apache Directory Server](conference-materials.data/enterprise-ldap-apachecon-eu.pdf) | Emmanuel Lecharny | ![](images/flags/nl.png) ApacheCon EU 2007 |
-| [Embedding Apache Directory Server into Applications](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2007 |
-| [OpenLDAP, adieu? Ein LDAP-Server in Java: ApacheDS Reality Check (German)](conference-materials.data/szoerner_apacheds_jax2007) | Stefan Zörner | ![](images/flags/de.png) JAX 2007 |
-| [Embed ApacheDS within an Application](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/se.png) Oredev 2006 |
-| [Merits of Directories](conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf) | Alex Karasulu | ![](images/flags/se.png) Oredev 2006 |
-| [ApacheDS Access Control Administration - The X.500 Way](conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf) | Ersin Er | ![](images/flags/us.png) ApacheCon US 2006 |
-| LDAP Stored Procedures and Triggers arrive in ApacheDS [Slides](conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf) [Code](http://svn.apache.org/repos/asf/directory/sandbox/ersiner/apachecon-us06-fr14/)| Ersin Er | ![](images/flags/us.png) ApacheCon US 2006 |
-| Embedding ApacheDS (Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/us.png) ApacheCon US 2006 |
-| [Which OS LDAP server should you use ?](conference-materials.data/ApacheCon2006-ADS.pdf) | Emmanuel Lecharny | ![](images/flags/ie.png) ApacheCon EU 2006 |
-| [Secure Single Sign-On with Apache Directory and Apache Kerberos](conference-materials.data/Single_Sign_On.pdf) | Enrique Rodriquez | ![](images/flags/ie.png) ApacheCon EU 2006 |
-| IDfusion, An Open-Architecture for Kerberos-based Authorization [Slides](conference-materials.data/wettstein-idfusion-slides.pdf) [Paper](conference-materials.data/wettstein-authimp)| Enrique Rodriquez | ![](images/flags/us.png) AFS & Kerberos Best Practices Workshop 2006 |
-| Simple Mass Market 2-Factor Authentication using Java Technologies (Not anymore available...) | Alex Karasulu, Michael Yuan, PhD. | ![](images/flags/us.png) JavaOne 2006 |
-| [Embedding Apache Directory Server into Applications](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/us.png) ApacheCon US 2005 |
diff --git a/content/contribute.mdtext b/content/contribute.mdtext
deleted file mode 100644
index 6491d9d..0000000
--- a/content/contribute.mdtext
+++ /dev/null
@@ -1,70 +0,0 @@
-Title: Contribute
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Join the Apache Directory Community
-
-First of all, a big **thank you** from us for evaluating and/or using our products. We truly appreciate it. Our products exist, and continue to improve thanks to you.
-But you can help us and yourself more!
-
-As we are a community of volunteers working with the guidelines and policies of the Apache Software Foundation (the Apache Way) in mind, we welcome any kind of input you can provide to get better products.
-These contributions, whether you think of reporting bugs, supplying code enhancements, improvements to our documentation, answering questions in our mailing lists or anywhere else are valuable to us. Because these will help us in helping you.
-
-You can also consider **donating** in other ways to the Apache Software Foundation. Look for more information on that subject at these pages: [resource donation](http://www.apache.org/foundation/contributing.html) or [sponsorship program](http://apache.org/foundation/sponsorship.html).
-
-So, you consider **contributing** to our project. But how do you go about achieving this?
-
-Well, it is as easy as pie. The first thing you need to do is to subscribe to one of our mailing lists (see the overview below, or look here: [mailing lists](mailing-lists-and-irc.html)) and you are set to go to deliver your first contribution: a posting there, about how great our product are, what you found missing, or even the bug you're confronted with.
-You might even consider a more interactive approach and join the team on our **IRC** channels.
-
-After you have had your first contribution over and done with, it stays **easy**. You can:
-
-* reply to questions, and/or share your viewpoint on how to get issues resolved,
-* add to our FAQ or WIKI,
-* share your code and document patches through our [issue tracking system - JIRA](issue-tracking.html),
-* evaluate bugs and proposed improvements provided by others in our team,
-* help with outlining and evaluating the future direction of our project and the development iterations of our products.
-
-To make it a bit more explicit, **we are looking for**:
-
-* Source code (bugs and improvements) contributions
-* Documentation assistance
-* Product and feature suggestions
-* Detailed and constructive feedback
-* Articles (case studies, white papers, etc) and presentations (speeches) about how our products helped you.
-
-But the list is not limited to the above! If you feel we missed something there, please **let us know**.
-
-**Our mailing lists**
-
-| Name | Subscribe | Post | Archive |
-|---|:-:|:-:|:-:|
-| The Directory Developers List | [Subscribe](mailto:dev-subscribe@directory.apache.org) | [Post](mailto:dev@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-dev) |
-| The Directory Users List| [Subscribe](mailto:users-subscribe@directory.apache.org) | [Post](mailto:users@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-users) |
-| The Directory Commits List | [Subscribe](mailto:commits-subscribe@directory.apache.org) | — | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-commits) |
-| The LDAP API List | [Subscribe](mailto:api-subscribe@directory.apache.org) | [Post](mailto:api@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-api) |
-
-Our IRC channels on freenode.net, where we have also informal discussions:
-
-* Users IRC channel: [#apache-directory @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory)
-* Developers IRC channel: [#apache-directory-dev @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory-dev)
-* Fortress IRC channel: [#apache-fortress @ irc://irc.freenode.net](irc://irc.freenode.net/apache-fortress)
-
-Again, we thank you and look forward to seeing your first contribution.
-
-**The Apache Directory Community**
-
diff --git a/content/extpaths.txt b/content/extpaths.txt
deleted file mode 100644
index ca53c19..0000000
--- a/content/extpaths.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-# File format: lines starting with # or space chars are ignored.
-
-# SCIMple
-#scimple/gen-docs/1.0.0
-
-# Fortress
-fortress/gen-docs/2.0.5
-fortress/gen-docs/2.0.4
-fortress/gen-docs/2.0.3
-fortress/gen-docs/2.0.2
-fortress/gen-docs/2.0.1
-fortress/gen-docs/2.0.0
-fortress/gen-docs/2.0.0-RC2
-fortress/gen-docs/2.0.0-RC1
-fortress/gen-docs/1.0.1
-fortress/gen-docs/1.0.0
-fortress/gen-docs/1.0-RC42
-fortress/gen-docs/1.0-RC40
-
-# ApacheDS
-apacheds/gen-docs/2.0.0.AM26
-apacheds/gen-docs/2.0.0.AM25
-apacheds/gen-docs/2.0.0-M24
-apacheds/gen-docs/2.0.0-M23
-apacheds/gen-docs/2.0.0-M22
-apacheds/gen-docs/2.0.0-M21
-apacheds/gen-docs/2.0.0-M20
-apacheds/gen-docs/2.0.0-M19
-apacheds/gen-docs/2.0.0-M18
-apacheds/gen-docs/2.0.0-M17
-apacheds/gen-docs/2.0.0-M16
-apacheds/gen-docs/2.0.0-M15
-apacheds/gen-docs/2.0.0-M14
-apacheds/gen-docs/2.0.0-M13
-apacheds/gen-docs/2.0.0-M12
-apacheds/gen-docs/2.0.0-M11
-apacheds/gen-docs/2.0.0-M10
-apacheds/gen-docs/2.0.0-M9
-apacheds/gen-docs/2.0.0-M8
-apacheds/gen-docs/2.0.0-M7
-# apacheds/gen-docs/2.0.0-M6
-apacheds/gen-docs/2.0.0-M5
-apacheds/gen-docs/2.0.0-M4
-apacheds/gen-docs/2.0.0-M3
-apacheds/gen-docs/2.0.0-M2
-apacheds/gen-docs/2.0.0-M1
-
-# API
-api/gen-docs/2.0.1
-api/gen-docs/2.0.0
-api/gen-docs/2.0.0.AM4
-api/gen-docs/2.0.0.AM3
-api/gen-docs/2.0.0.AM2
-api/gen-docs/2.0.0.AM1
-api/gen-docs/1.0.2
-api/gen-docs/1.0.1
-api/gen-docs/1.0.0
-api/gen-docs/1.0.0-RC2
-api/gen-docs/1.0.0-RC1
-api/gen-docs/1.0.0-M33
-api/gen-docs/1.0.0-M32
-api/gen-docs/1.0.0-M31
-api/gen-docs/1.0.0-M30
-api/gen-docs/1.0.0-M29
-api/gen-docs/1.0.0-M28
-api/gen-docs/1.0.0-M27
-api/gen-docs/1.0.0-M26
-api/gen-docs/1.0.0-M25
-api/gen-docs/1.0.0-M24
-api/gen-docs/1.0.0-M23
-api/gen-docs/1.0.0-M22
-api/gen-docs/1.0.0-M21
-api/gen-docs/1.0.0-M20
-api/gen-docs/1.0.0-M19
-api/gen-docs/1.0.0-M18
-api/gen-docs/1.0.0-M17
-api/gen-docs/1.0.0-M16
-api/gen-docs/1.0.0-M15
-api/gen-docs/1.0.0-M14
-api/gen-docs/1.0.0-M13
-api/gen-docs/1.0.0-M12
-api/gen-docs/1.0.0-M11
-api/gen-docs/1.0.0-M10
-api/gen-docs/1.0.0-M9
-api/gen-docs/1.0.0-M8
-api/gen-docs/1.0.0-M7
-api/gen-docs/1.0.0-M6
-api/gen-docs/1.0.0-M5
-api/gen-docs/1.0.0-M4
-api/gen-docs/1.0.0-M3
-api/gen-docs/1.0.0-M2
-api/gen-docs/1.0.0-M1
-
-# Mavibot
-mavibot/gen-docs/1.0.0-M8
-mavibot/gen-docs/1.0.0-M7
-mavibot/gen-docs/1.0.0-M6
-mavibot/gen-docs/1.0.0-M5
-mavibot/gen-docs/1.0.0-M4
-mavibot/gen-docs/1.0.0-M3
-mavibot/gen-docs/1.0.0-M2
-# mavibot/gen-docs/1.0.0-M1 // No Javadoc available for this release
-
-# Skins
-skins/gen-docs/1.0.2
-
-# Studio
-studio/users-guide
-
diff --git a/content/fortress/coding-standards.mdtext b/content/fortress/coding-standards.mdtext
deleted file mode 100644
index f890173..0000000
--- a/content/fortress/coding-standards.mdtext
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Coding Standards
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Coding Standards
-
-Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
-
-Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
-
-**eclipse IDE**
-
-Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
-
-**IDEA IDE**
-
-IDEA users can import [this file](settings.jar) to enfore the code formating.
-
-
-## Headers
-
-First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
-
-
- :::java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-### Class/Interface headers
-
-Each **Class** or *Interface* should have an header which must contains :
-
-* A descrption of this class/interface
-* an *author* tag which should be :
-
- :::java
- @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-
-<DIV class="note" markdown="1">
-Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
-</DIV>
-
-If you use **html** tags, remember to escape '<' and '>' characters...
-
-### Static members and other members
-
-Just add a single line javadoc comment like : _/** blah ... */_ before each member
-
-### Methods
-
-Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
-
-Escape **html** characters
-
-## Comments
-
-No special rules, except that you should avoid :
-
-* Useless comments like : i++; /\* Increment i \*/
-* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
-* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
-* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
-
-Basically, use your common sense :-)
-
-## Naming
-
-Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
-
-* Constants are in UPPER CASE with accepted '_'
-* Class starts with an uppercase and each starting word is upper cased. No '_', please !
-* Methods starts with lower case and then follow the same rule than classes. No '_', please !
-* Interfaces should not start with an 'I'
-* Classes which implements an Interface must be followed by the postfix 'impl'
-* Variables follow the method naming convention. No '_', please !
-* Use meaningfull names.
-* No double letter variables like ii, jj etc...
-
-If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
-
-Naming is really important for **APIs**. Be smart. If you are not sure, ask.
-
-## Spaces vs tabs
-
-<DIV class="warning" markdown="1">
-**FOUR SPACES, NO TAB. Final.**
-</DIV>
-
-No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
-
-## Formatting
-
-Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
-
-Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
-
-Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
-
-<DIV class="warning" markdown="1">
-**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
-</DIV>
-
-People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
-
-Some general rules :
-
-* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
-* No more than one instruction on a single line, the only exception is the '?' ':' operation
-* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
-* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
-* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
-* Add spaces in method calls after '(' and before ')'
-* '{' and '}' must be on the same column
-
-This is a code example :
-
- :::java
- ...
- int result = myMethod( param1, param2 )
-
- if ( result > 0 )
- {
- // do something
- }
- ...
-
-
-## Imports
-
-Always declare all the classes you import, do not use **x.y.\***
-
-## What else ?
-
-Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
-
-That's it ! (I wait your comments, guys :-)
diff --git a/content/fortress/developer-guide.mdtext b/content/fortress/developer-guide.mdtext
deleted file mode 100644
index 036ee70..0000000
--- a/content/fortress/developer-guide.mdtext
+++ /dev/null
@@ -1,579 +0,0 @@
-Title: Developer Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Building FORTRESS
-
-<DIV class="note" markdown="1">
- Please read <a href="https://www.apache.org/dev/" class="external-link" rel="nofollow">the Developer Infrastructure Information</a> if you haven't yet before you proceed.
-</DIV>
-
-[TOC]
-
-# Checking out the code
-
-You need Git to check out the source code from our source code repository, and [Maven(https://maven.apache.org/) 3.0 to build the source code. The following example shows how to get the Fortress projects.
-
-## Fortress-core
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
- $ cd fortress-core
- $ mvn clean install # Build packages (JARs) for the Fortress core API and other
- # extensions and install them to the local Maven repository.
- $ mvn site # Generate reports (JavaDoc and various other reports)
- $ mvn package # Generate a tarball
-
-Eclipse users:
-Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
-You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
-
-If you want to check out the source code of previous releases, you have to select the branch you want to work on :
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
- $ git checkout <tag>
-
-
-## Fortress-realm
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-realm.git fortress-realm
- $ cd fortress-realm
- $ mvn clean install # Build packages (JARs) for the Fortress realm API and other
- # extensions and install them to the local Maven repository.
- $ mvn site # Generate reports (JavaDoc and various other reports)
- $ mvn package # Generate a tarball
-
-Eclipse users:
-Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
-You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
-
-If you want to check out the source code of previous releases, you have to select the branch you want to work on :
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-realm.git fortress-realm
- $ git checkout <tag>
-
-
-## Fortress-enmasse
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git fortress-enmasse
- $ cd fortress-enmasse
- $ mvn clean install # Build packages (JARs) for the Fortress enmasse API and other
- # extensions and install them to the local Maven repository.
- $ mvn site # Generate reports (JavaDoc and various other reports)
- $ mvn package # Generate a tarball
-
-Eclipse users:
-Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
-You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
-
-If you want to check out the source code of previous releases, you have to select the branch you want to work on :
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git fortress-enmasse
- $ git checkout <tag>
-
-
-## Fortress-commander
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-commander.git fortress-commander
- $ cd fortress-commander
- $ mvn clean install # Build packages (JARs) for the Fortress commander API and other
- # extensions and install them to the local Maven repository.
- $ mvn site # Generate reports (JavaDoc and various other reports)
- $ mvn package # Generate a tarball
-
-Eclipse users:
-Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
-You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
-
-If you want to check out the source code of previous releases, you have to select the branch you want to work on :
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-commander.git fortress-commander
- $ git checkout <tag>
-
-# Coding Convention
-
-The applicable coding standards for Fortress are described in [Coding Standards](coding-standards.html)
-
-# Deploying Snapshots (Commiters Only)
-
-Before running Maven to deploy artifacts, *please make sure if your umask is configured correctly*. Unless configured properly, other committers will experience annoying 'permission denied' errors. If your default shell is `bash`, please update your umask setting in the `~/.bashrc` file (create one if it doesn't exist.) by adding the following line:
-
- umask 002
-
-Please note that you have to edit the correct `shrc` file. If you use `csh`, then you will have to edit `~/.cshrc` file.
-
-Now you are ready to deploy the artifacts if you configured your umask correctly.
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
- $ cd fortress-core
- $ mvn clean deploy site site:deploy # Make sure to run 'clean' goal first to prevent side effects from your IDE.
-
-(do the same thing for the *enmasse, realm and commander* projects)
-
-Please double-check the mode (i.e. `0664` or `-rw-rw-r--`, a.k.a permission code) of the deployed artifacts, otherwise you can waste other people's time significantly.
-
-# Releasing a Point Release (Committers Only)
-
-## Preparing the release for the vote
-
-Before starting be sure to have the java and mvn command in your PATH.
-On linux you can check with the following commands :
-
- $ type mvn
- mvn is hashed (/opt/apache-maven-3.2.5/bin/mvn)
- $ type java
- java is /usr/bin/java
-
-### Step 0: Building Fortress-xxx
-
-<DIV class="note" markdown="1">
-Here, 'xxx' is one of the four fortress mdules : core, enmasse, realm or comander
-</DIV>
-
-### Step 1: Tagging and Deploying
-
-First you need to configure maven for using the good username for scp and operation.
-
-In the `~/.m2/settings.xml` you need the following lines :
-
- :::xml
- <settings xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/settings-1.0.0.xsd">
-
- <!-- SERVER SETTINGS -->
- <servers>
- <!-- To publish a snapshot of some part of Maven -->
- <server>
- <id>apache.snapshots.https</id>
- <username>elecharny</username>
- <password>-----Your password here-----</password>
- </server>
- <!-- To publish a website of some part of Maven -->
- <server>
- <id>apache.websites</id>
- <username>elecharny</username>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
- <!-- To stage a release of some part of Maven -->
- <server>
- <id>apache.releases.https</id>
- <username>elecharny</username>
- <password>-----Your password here-----</password>
- </server>
- <!-- To stage a website of some part of Maven -->
- <server>
- <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
- <username>elecharny</username>
- <filePermissions>664</filePermissions>
- <directoryPermissions>775</directoryPermissions>
- </server>
- </servers>
-
- <!-- PROFILE SETTINGS -->
- <profiles>
- <profile>
- <id>apache-release</id>
- <properties>
- <!-- Configuration for artifacts signature -->
- <gpg.passphrase>-----Your passphrase here-----</gpg.passphrase>
- </properties>
- </profile>
- </profiles>
-
- </settings>
-
-### step 2 : Processing with a dry run
-
-After having checked out the trunk, and built it (see step 0),
-
- $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git directory-fortress-core
- $ cd directory-fortress-core
- $ mvn clean install
-
-run the following commands :
-
- $ mvn -Papache-release -DdryRun=true release:prepare # Dry-run first.
-
-Answer to maven questions :
-
- "What is the release version for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC40: :"
- <either use the default version as suggested, or type in the version you@qot;d like to be used>
- [..]
-
-Then some other questions will be asked, about the next version to use. The default values should be fine :
-
- What is SCM release tag or label for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC40: :
- <Same here : keep 1.0-RC40, or change it if needed>
- What is the new development version for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC41-SNAPSHOT: :
- <Same here...>
-
-<DIV class="info" markdown="1">
-**Be Careful**
-
-Make sure the change made by the release plugin is correct! (pom.xml, tags created)
-</DIV>
-
-### Step 3 : Processing with the real release
-When the dry run is successful, then you can do in real with the following commands:
-
- $ mvn -Papache-release release:clean # Clean up the temporary files created by the dry-run.
- $ mvn -Papache-release release:prepare # Copy to tags directory.
-
-The first step will clean up the local sources, the second step will release for real. The same questions will be asked as those we had during the dry run step.
-
-At some point, it will ask for your passphrase (the one you used when you created your PGP key). Type it in.
-
-
-Three mails will be generated, and sent to commits@directory.apache.org :
-
- git commit: [maven-release-plugin] prepare release 2.0.9
- Git Push Summary
- git commit: [maven-release-plugin] prepare for next development iteration
-
- Repository: directory-fortress-core
- Updated Branches:
- refs/heads/master 7f1f90d2b -> bb9137136
-
-
- [maven-release-plugin] prepare release 1.0-RC40
-
-
- Project: https://gitbox.apache.org/repos/asf/directory-fortress-core/repo
- Commit: https://gitbox.apache.org/repos/asf/directory-fortress-core/commit/bb913713
- Tree: https://gitbox.apache.org/repos/asf/directory-fortress-core/tree/bb913713
- Diff: https://gitbox.apache.org/repos/asf/directory-fortress-core/diff/bb913713
-
- Branch: refs/heads/master
- Commit: bb9137136d58f334415825b15f58c3173c923de2
- Parents: 7f1f90d
- Author: Emmanuel Lecharny <elecharny@symas.com>
- Authored: Fri Apr 3 15:35:20 2015 +0200
- Committer: Emmanuel Lecharny <elecharny@symas.com>
- Committed: Fri Apr 3 15:35:20 2015 +0200
- ...
-
-The first mail tells you that the SNAPSHOT has been moved to the release version in trunk, the second mails tells you that this version has been tagged, and the last mail tells you that trunk has moved to the next version.
-
-
-### Step 4 : perform the release
-
-The last step before launching a vote is to push the potential release to Nexus so that every user can test the created packages. Perform the following actions
-
- $ mvn -Papache-release release:perform
- ...
- [INFO] [INFO] ------------------------------------------------------------------------
- [INFO] [INFO] BUILD SUCCESS
- [INFO] [INFO] ------------------------------------------------------------------------
- [INFO] [INFO] Total time: 01:00 min
- [INFO] [INFO] Finished at: 2015-04-03T15:41:26+02:00
- [INFO] [INFO] Final Memory: 50M/247M
- [INFO] [INFO] ------------------------------------------------------------------------
- [INFO] Cleaning up after release...
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 01:16 min
- [INFO] Finished at: 2015-04-03T15:41:26+02:00
- [INFO] Final Memory: 17M/247M
- [INFO] ------------------------------------------------------------------------
-
-Done !
-
-### Step 5 : closing the staging release on nexus
-
-Now, you have to close the staged project on nexus. In order to do that you *must* have exported your PGP key to a PGP public server [see](https://www.apache.org/dev/openpgp.html)
-
-Connect to the [Nexus server](https://repository.apache.org), login, and select the FORTRESS staging repository you just created, then click on the 'close' button. You are home...
-
-### Step 6 : Build the Site
-
- $ cd target/checkout
- $ mvn site
-
-This creates the site.
-
-### Step 7 : Sign the packages
-
-Now, you have to sign the binary packages which are in target/checkout/target.
-
-<DIV class="note" markdown="1">
-Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
-</DIV>
-
-You can get the keys by typing :
-
- gpg --list-keys
-
-You'll get something like :
-
- $ gpg --list-keys
- /Users/elecharny/.gnupg/pubring.gpg
- -----------------------------------
- pub 2048D/xxxxxxxx 2009-12-03
- uid Emmanuel Lecharny <elecharny@nextury.com>
- sub 2048g/yyyyyyyy 2009-12-03
-
- pub 4096R/zzzzzzzz 2010-09-13
- uid Emmanuel Lecharny (CODE SIGNING KEY) <elecharny@apache.org>
- sub 4096R/tttttttt 2010-09-13
- ...
-
-Take the <zzzzzzzz> part of your 4096 bit key.
-
-Use a shell script to sign the packages which are stored in target/checkout/target. You will first have to delete the created .asc files :
-
- $ cd target/checkout/target
- $ rm *.asc
- $ ~/sign.sh
- PGP Key ID:
- <your PGP key>
- PGP Key Password:
- <Your PGP passphrase>
-
- -n Signing: ./fortress-core-1.0-RC40-javadoc.jar ...
- - Generated './fortress-core-1.0-RC40-javadoc.jar.md5'
- - Generated './fortress-core-1.0-RC40-javadoc.jar.sha1'
- - Generated './fortress-core-1.0-RC40-javadoc.jar.asc'
- -n Signing: ./fortress-core-1.0-RC40-source-release.zip ...
- - Generated './fortress-core-1.0-RC40-source-release.zip.md5'
- - Generated './fortress-core-1.0-RC40-source-release.zip.sha1'
- - Generated './fortress-core-1.0-RC40-source-release.zip.asc'
- -n Signing: ./fortress-core-1.0-RC40-sources.jar ...
- - Generated './fortress-core-1.0-RC40-sources.jar.md5'
- - Generated './fortress-core-1.0-RC40-sources.jar.sha1'
- - Generated './fortress-core-1.0-RC40-sources.jar.asc'
- -n Signing: ./fortress-core-1.0-RC40.jar ...
- - Generated './fortress-core-1.0-RC40.jar.md5'
- - Generated './fortress-core-1.0-RC40.jar.sha1'
- - Generated './fortress-core-1.0-RC40.jar.asc'
- ...
-
-
-Here is the sign.sh script you can use :
-
- #!/bin/sh
-
- echo "PGP Key ID: "
- read DEFAULT_KEY
-
- echo "PGP Key Password: "
- stty -echo
- read PASSWORD
- stty echo
- echo ""
-
- for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" \
- -or -name "*.md5" -or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
- if [ -f "$FILE.asc" ]; then
- echo "Skipping: $FILE"
- continue
- fi
-
- echo -n "Signing: $FILE ... "
-
- # MD5
- if [ ! -f "$FILE.md5" ];
- then
- openssl md5 < "$FILE" | cut "-d " -f2 > "$FILE.md5"
- echo " - Generated '$FILE.md5'"
- else
- echo " - Skipped '$FILE.md5' (file already existing)"
- fi
-
- # SHA1
- if [ ! -f "$FILE.sha1" ];
- then
- gpg -v --default-key "$DEFAULT_KEY" --print-md SHA1 "$FILE" > "$FILE".sha1
- echo " - Generated '$FILE.sha1'"
- else
- echo " - Skipped '$FILE.sha1' (file already existing)"
- fi
-
- # ASC
- if [ ! -f "$FILE.asc" ];
- then
- echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
- echo " - Generated '$FILE.asc'"
- else
- echo " - Skipped '$FILE.asc' (file already existing)"
- fi
- done
-
-### Step 8 : Publish Source and Binary Distribution Packages
-
-First of all, create a new directory on people.apache.org/public_html to store the pacckages :
-
- $ ssh people.apache.org
- $ mkdir public_html/fortress-core-<version>
- $ exit
-
-Then copy the packages :
-
- $ cd target/checkout/target
- $ scp fortress-core-<version>-source-release.zip* people.apache.org:public_html/fortress-core-<version>/
-
-Update your index.html file on people.apach.org/public_html to make the packages visible. Here is an example of possible content :
-
- <h2>Last Fortress core 1.0.0-RC40 arballs</h2>
- <h3>Sources</h3>
-
- <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip">fortress-core-1.0-RC40-source-release.zip</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.asc">fortress-core-1.0-RC40-source-release.zip.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.md5">fortress-core-1.0-RC40-source-release.zip.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.sha1">fortress-core-1.0-RC40-source-release.zip.sha1</a><br/>
-
-## Step 9 : Voting a release
-
-Once the tarballs have been created, and the binaries available in Nexus, a vote can be launched. Simply send a mail on the dev@directory.apache.org mailing list describing the new release.
-
-Here is how you send a [VOTE] mail on the dev mailing list :
-
-
- Hi,
-
- <blah blah blah>
-
- Here is the list of fixed issues :
-
-
- * [FC-83 <https://issues.apache.org/jira/browse/FC-83>] Cleanup core test processing
- * ...
-
-
- Here's the Jira link for this version if you'd like to review issues in more details:
-
- https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10670&styleName=Html&version=12313702
-
- A temporary tag has been created (it can be removed if the vote is not approved)
-
- The newly approved Nexus has been used for the preparation of this release and all final artifacts are stored
- in a staging repository:
- https://repository.apache.org/content/repositories/orgapachedirectory-1028
-
-
- The distributions are available for download on :
- https://repository.apache.org/content/repositories/orgapachedirectory-1028/org/apache/directory/project/fortress-core/1.0-RC40/
-
- Let us vote :
- [ ] +1 | Release Fortress-core 1.0-RC40
- [ ] +/- | Abstain
- [ ] -1 | Do *NOT* Fortress-core 1.0-RC40
-
- Thanks !
-
-The vote will be open for 72 hours. Once the delay is over, collect the votes, and count the binding +1/-1. If the vote is positive, then we can release.
-
-### Step 11 : Close the vote
-
-You can officially close the vote now. There are some more steps to fulfill :
-
-* Release the project on https://repository.apache.org
-* Copy the tarballs and heir signature in people.apache.org /www/downloads.apache.org/fortress
-
-This can be done on people.apache.org :
-
- $ ssh people.apache.org
- # svn co https://dist.apache.org/repos/dist/release/directory/fortress/ fortress-dist
- # cd fortress-dist
- # mkdir <version>
- # cp ../public_html/fortress-core-<version>/* <version>
- # svn add <version>
- # svn ci <version>
- ...
- # exit
- $
-
-### Step 12: Deploy Web Reports (JavaDoc and JXR)
-
-The javadoc and xref files have been generated in step 6, it's now time to push them into the production site. They are generated in the following directory :
-
- target/checkout/target/site
-
-We will copy two directories :
-
- apidocs
- xref
-
-*Staging or Production?*
-
-<DIV class="info" markdown="1">
-Those files will be stored on the production server only !!! And some extra caution ust be taken not to delete them when we will publish the staging site too...
-</DIV>
-
-First of all, you must checkout the two CMS store for the site : staging and production.
-
- $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
- ...
- $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
- ...
-
-Then copy the generated docs :
-
- $ cp -r ~/apacheds/directory-fortress-core/target/checkout/target/site/apidocs production/directory/content/fortress/gen-docs
- $ cp -r ~/apacheds/directory-fortress-core/target/checkout/target/site/xref production/directory/content/fortress/gen-docs
- $
-
-You have to check in those directories :
-
- $ svn add apidocs
- $ svn add xref
- $ svn ci apidocs xref -m "Injected Fortress <version> javadocs"
-
-Now, you have to update the staging site <em>extpaths.txt</em>
-
-This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
-
- $ cd ~/apacheds/staging/content/
- $ vi extpaths.txt
-
-The following lines should be present. If not, add them and commit the file after having added a new line for the newly released version:
-
-Add the following line :
-
- :::text
- ...
- # Fortress
- fortress/gen/docs/<the new version>
- ...
-
-### Step 13: Wait 24 hours
-
-We have to wait at least 24 hours for all mirrors to retrieve the uploaded files before making any announcement. I'd recommend you to wait for 48 hours because some mirrors might lag due to various issues.
-
-### Step 14: Update the Links in Web Site
-
-Update the links to new distributions in [Downloads] page.
-
-There are a few places to modify :
-
-* /lib/path.pm : update the $version_fortress variable with the new version.
-* /content/index.mdtext : same here, update the <!-- FORTRESS project --> section, which contains the version.
-* /content/fortress/news.mdtext : add the news on top of thise page
-* /content/fortress/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
-
-Commit the changes, and publish the web site, you are done !
-
-### Step 15: Wait another 24 hours
-
-We need to wait until any changes made in the web site and metadata file(s) go live.
-
-### Step 16: Announce the New Release
-
-An announcement message can be sent to [mailto:announce@apache.org], [mailto:announce@apachenews.org], [mailto:users@directory.apache.org] and [mailto:dev@directory.apache.org]. Please note that announcement messages are rejected unless your from-address ends with `@apache.org`. Plus, you shouldn't forget to post a news to the Directory site main page.
-
diff --git a/content/fortress/download-old-versions.mdtext b/content/fortress/download-old-versions.mdtext
deleted file mode 100644
index d98a0cc..0000000
--- a/content/fortress/download-old-versions.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-<CENTER>
-
-| Version| Download Link | Javadoc | Date |
-|:-:|:-:|:-:|:-:|
-| Apache Fortress 2.0.4 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.4) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.4/apidocs/) |13/December/2019 |
-| Apache Fortress 2.0.3 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.3) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.3/apidocs/) |12/November/2018 |
-| Apache Fortress 2.0.2 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.2) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.2/apidocs/) |12/September/2018 |
-| Apache Fortress 2.0.1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.1/apidocs/) |20/July/2018 |
-| Apache Fortress 2.0.0 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0/apidocs/) |26/June/2017 |
-| Apache Fortress 2.0.0-RC2 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0-RC2) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0-RC2/apidocs/) |04/May/2017 |
-| Apache Fortress 2.0.0-RC1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0-RC1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0-RC1/apidocs/) |07/Nov/2016 |
-| Apache Fortress 1.0.1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0.1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0.1/apidocs/) |22/Jul/2016 |
-| Apache Fortress 1.0.0 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0.0) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0.0/apidocs/) |15/Apr/2016 |
-| Apache Fortress 1.0-RC42 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0-RC42) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0-RC42/apidocs/) |28/Mar/2016 |
-| Apache Fortress 1.0-RC40 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0-RC40) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0-RC40/apidocs/) |15/Apr/2015 |
-
-</CENTER>
-
-<DIV class="note" markdown="1">
-We encourage you to verify the integrity of the downloaded file using:
-
-* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-* the MD5 file (checksum).
-</DIV>
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-
-
-Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/content/fortress/download/download-archive.mdtext b/content/fortress/download/download-archive.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/fortress/download/download-archive.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/fortress/download/download-sources.mdtext b/content/fortress/download/download-sources.mdtext
deleted file mode 100644
index 3f8ffb5..0000000
--- a/content/fortress/download/download-sources.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/fortress/downloads.mdtext b/content/fortress/downloads.mdtext
deleted file mode 100644
index 642e103..0000000
--- a/content/fortress/downloads.mdtext
+++ /dev/null
@@ -1,53 +0,0 @@
-Title: Fortress Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Fortress
-
-## Fortress Archive Downloads
-
-To Download Apache Fortress:
-
-* ![Download](../images/download-archive.png) [Download Binaries](download/download-archive.html)
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
-
-## Fortress Maven Dependencies
-
-To embed Apache Fortress components into applications via Maven dependencies:
-
- <!-- 1. Fortress Core API usage: -->
- <dependency>
- <groupId>org.apache.directory.fortress</groupId>
- <artifactId>fortress-core</artifactId>
- <version>${fortress-version}</version>
- </dependency>
-
- <!-- 2. Fortress Realm API usage: -->
- <dependency>
- <groupId>org.apache.directory.fortress</groupId>
- <artifactId>fortress-realm-impl</artifactId>
- <version>${fortress.version}</version>
- </dependency>
-
- <!-- 3. Fortress Web API usage: -->
- <dependency>
- <groupId>org.apache.directory.fortress</groupId>
- <artifactId>fortress-web</artifactId>
- <version>${fortress.version}</version>
- </dependency>
-
-Note: Fortress Web is dependent on Fortress Realm is dependent on Fortress Core.
diff --git a/content/fortress/history.mdtext b/content/fortress/history.mdtext
deleted file mode 100644
index b8de06e..0000000
--- a/content/fortress/history.mdtext
+++ /dev/null
@@ -1,12 +0,0 @@
-# Fortress History
-
-In 2009 a small team of developers[1], who are brothers, began work on the *Open Access Manager* project. From its onset, the push behind this project was to build a fully functioning access control system that is based on open standards and wholly open source. In particular, Role-Based Access Control (ANSI INCITS 359) was a focal point, although that adherence brought with it a need for expanded coverage into other areas like auditing and administration. After a couple of years of coding in their spare time, the brothers unveiled the project at the 2011 LDAPCon in Heidelberg, and with it a new name - *Fortress*. At the same time, it was announced that the OpenLDAP foundation would sponsor the project and it would be released under a BSD-style variant of an Open Source Software license.
-
-That first release, back in 2011, included just the fortress core and realm components, but development of the web interface (commander) and rest server (enmasse) was already underway. A few more years saw many more releases and the eventual completion of the others rounding out the entire product line into what's available today.
-
-Eventually, it was understood that nights and weekends of a few developers isn't enough and so if the fortress concept was to survive, it had to be carried into a larger field. In 2014 the Fortress project moved from its OpenLDAP foundation home into the ASF as a subproject of the Apache Directory.
-
-This new home proved worthy as the influx of new talent gained from being associated with the Apache Directory project, along with added exposure from its community has brought with it many gains and improvements.
-
-Footnotes:
-[1]. team roster in 2009 consisted of Kelly McKinney (engineering manager), Kevin McKinney (fortress web developer), and Shawn McKinney (fortress core developer).
diff --git a/content/fortress/index.mdtext b/content/fortress/index.mdtext
deleted file mode 100644
index 25dc62d..0000000
--- a/content/fortress/index.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Welcome to Apache Fortress
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
diff --git a/content/fortress/installation.mdtext b/content/fortress/installation.mdtext
deleted file mode 100644
index a2a3de5..0000000
--- a/content/fortress/installation.mdtext
+++ /dev/null
@@ -1,55 +0,0 @@
-Title: Fortress Installation guides
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Installation guides
-
-The Fortress Core requires an LDAP server to store its information. Its other components, Web and Rest, require a Java Servlet container. This page includes some links on getting started.
-
-## Fortress Core Setup with LDAP
-
-The Core is used by the other components, Realm, Rest and Web. These are to install ApacheDS or OpenLDAP (pick one), and configure for usage. For rapid deployment, you can skip the APACHEDS and SLAPD quickstarts, and use one for DOCKER instead.
-
-### Fortress Core & ApacheDS
-* [README-QUICKSTART-DOCKER-APACHEDS.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md) - Install Core for use with APACHEDS running inside DOCKER
-* [README-QUICKSTART-APACHEDS.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-APACHEDS.md) - Install Core for use with APACHEDS
-
-### Fortress Core & OpenLDAP
-* [README-QUICKSTART-DOCKER-SLAPD.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md) - Install Core for use with OPENLDAP running inside DOCKER
-* [README-QUICKSTART-SLAPD.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-SLAPD.md) - Install Core for use with OPENLDAP
-
-## Fortress Web and Rest Setup with Tomcat
-
-Apache Tomcat is used for the Fortress Rest and Web deployment testing.
-
-### Fortress Realm & Tomcat
-
-The Realm plugs into Tomcat and provides JavaEE security support.
-
-* [REALM-HOST-SETUP.md](https://github.com/apache/directory-fortress-realm/blob/master/REALM-HOST-SETUP.md) - Configure Tomcat Global Security using Realm
-* [REALM-CONTEXT-SETUP.md](https://github.com/apache/directory-fortress-realm/blob/master/REALM-CONTEXT-SETUP.md) - Configure Tomcat Local Security using Realm
-
-Next, pull either Fortress Web or Rest binaries from Maven, run inside Tomcat instance.
-
-### Fortress Rest & Tomcat
-* [README-QUICKSTART.md](https://github.com/apache/directory-fortress-enmasse/blob/master/README-QUICKSTART.md) - Install Fortress Rest to Tomcat
-
-### Fortress Web & Tomcat
-* [README-QUICKSTART.md](https://github.com/apache/directory-fortress-commander/blob/master/README-QUICKSTART.md) - Install Fortress Web to Tomcat
-
-More info can be found from each of the projects README's.
-
diff --git a/content/fortress/installation/apacheds.mdtext b/content/fortress/installation/apacheds.mdtext
deleted file mode 100644
index 4fa91fd..0000000
--- a/content/fortress/installation/apacheds.mdtext
+++ /dev/null
@@ -1,69 +0,0 @@
-Title: ApacheDS Installation guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ApacheDS Installation guide
-
-Provide instructions to install an **ApacheDS** instance and setup for use with **Fortress**. In this configuration, there is an **ApacheDS** server running on a machine (**ApacheDS Host**) and **Fortress** agent which will be installed on a client machine (**Fortress Host**). Note that those two hosts can be shared - and this is such a configuration that we are going to use in this document.
-
-## Prerequisites
-
-There a few mandatory elements that need to be installed on the **ApacheDS Host** :
-
-* Java 7 or greated sdk
-
-On the **Fortress Host**, you will need those components :
-
-* Java 7 or greated sdk
-* Apache Maven 3+
-* A web browser
-* Git
-* Apache Directory Studio
-
-## Installing ApacheDS
-
-On the **ApacheDS Host** :
-
-Follow the installation guide on [the ApacheDS download pages](https://directory.staging.apache.org/apacheds/downloads.html) (each page has an installation description).
-
-The base installation will install a server running on port *10389*, with a default user *uid=admin,ou=system* and the password *secret*. Please change those values !!!
-
-Note that the server requires a Java 7 sdk to run.
-
-## Installing Apache Directory Studio
-
-On the **Fortress Host** :
-
-We will install **Apache Directory Studio** which is a convenient tool when it comes to managing an **LDAP** server. Install using [the following documentation](https://directory.apache.org/studio/downloads.html). Again, each link contains directions on how to install this component.
-
-Once installed, check the connection to the **ApacheDS** server installed during the previous step. Create a _connection_, set the _hostName_ and _port_ to be those where you installed the **ApacheDS** server, then check the Network Parameter, ensure no errors.
-
-Check that the credentials you have set (defaulting to _uid=admin,ou=system_ and _secret_) using _Simple Authentication_, and clicking on _Check Authentication_ : work also.
-
-The complete description of the steps are found [on this page](https://directory.apache.org/studio/users-guide/ldap_browser/gettingstarted_create_connection.html)
-
-## Installing Fortress Core
-
-Assuming that **Git**, **Java 7** and **Apache Maven** are installed on the **Fortress Host**, and that **ApacheDS** is running on the **ApacheDS Host**, we can now configure and install **Fortress Core** on the **Fortress Host**
-
-The setup will use your specific configuration to create everything needed on the LDAP server to operate **Fortress**. It will also inject specific schema elements into the ldap server; entries that are required for *Fortress* to work. Once done, the **Fortress** APIs are ready to use.
-
-<DIV class="info" markdown="1">
- The setup phase must be performed once per LDAP server instance. But every machine that uses Fortress, must be configured to point to the same LDAP server (as you would expect) that was initially setup. This will be explained later on.
-</DIV>
-
-
diff --git a/content/fortress/installation/apacheds/apacheds.mdtext b/content/fortress/installation/apacheds/apacheds.mdtext
deleted file mode 100644
index a29741e..0000000
--- a/content/fortress/installation/apacheds/apacheds.mdtext
+++ /dev/null
@@ -1,42 +0,0 @@
-Title: Quick start guide for ApacheDS
-NavUp: ../../user-guide.html
-NavUpText: User Guide
-NavNext: prerequisites.html
-NavNextText: System Prerequisites
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-These instructions are intended for new users who want to quickly learn how to install and test Apache Fortress and ApacheDS IAM software.
-
-Follow the steps and ApacheDS will be installed, configured, loaded, and ready to use by [Section IV](section-IV.html). EnMasse Policy Server demo starts in [Section VIII](section-VIII.html)
-
-### Table of contents
-
-* [System Prerequisites](prerequisites.html)
-* [Guidelines and Tips for first-time users](guidelines.html)
-* [Section I - Instructions to extract and configure Fortress Builder Package](section-I.html)
-* [Section II - Instructions to run the Fortress Ant Build](section-II.html)
-* [Section III - Instructions to configure ApacheDS and load with seed data](section-III.html)
-* [Section IV - Instructions to regression test Fortress and ApacheDS](section-IV.html)
-* [Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility](section-V.html)
-* [Section VI - Instructions to run Fortress Console](section-VI.html)
-* [Section VII - Instructions to generate and view Javadoc](section-VII.html)
-* [Section VIII - Instructions to install EnMasse Policy Server Demo (CLI)](section-VIII.html)
-* [Section IX - Instructions to regression test EnMasse Policy server](section-IX.html)
-* [Section X - More Utilities](section-X.html)
-
-
diff --git a/content/fortress/installation/apacheds/guidelines.mdtext b/content/fortress/installation/apacheds/guidelines.mdtext
deleted file mode 100644
index 92b68e8..0000000
--- a/content/fortress/installation/apacheds/guidelines.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: Guidelines and Tips for first-time users
-NavPrev: prerequisites.html
-NavPrevText: System Prerequisites
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-I.html
-NavNextText: Section I - Instructions to extract and configure Fortress Builder Package
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Guidelines and Tips for first-time users
-
-
-In the document that follows, when you read \[version\] or [platform] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Debian Silver i386', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Debian-Silver-i386-1.0.0.zip
-
-Is your target machine windows? Go to [README-QUICKSTART-WINDOWS](../windows/windows.html).
-
-The source code for this project is located here ./src.
-
diff --git a/content/fortress/installation/apacheds/prerequisites.mdtext b/content/fortress/installation/apacheds/prerequisites.mdtext
deleted file mode 100644
index aeef8b2..0000000
--- a/content/fortress/installation/apacheds/prerequisites.mdtext
+++ /dev/null
@@ -1,38 +0,0 @@
-Title: System Prequesites
-NavPrev: apacheds.html
-NavPrevText: Quickstart ApacheDS - Table of contents
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: guidelines.html
-NavNextText: Guidelines and Tips for first-time users
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# System Prerequisites
-
-* Internet access to retrieve binary dependencies from online Maven repo.
-* Java SDK Version 7 or beyond installed to target environment
-* Redhat or Ubuntu server machine
-* 1GB RAM
-* 20GB HD
-* ApacheDS pre-installed
-
-NOTE: The Fortress build.xml may run without connection to Internet if:
-
-* The binary dependencies have previously been downloaded to FORTRESS_HOME/lib folder
-* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties: _local.mode=true_
-
diff --git a/content/fortress/installation/apacheds/section-I.mdtext b/content/fortress/installation/apacheds/section-I.mdtext
deleted file mode 100644
index 487e842..0000000
--- a/content/fortress/installation/apacheds/section-I.mdtext
+++ /dev/null
@@ -1,55 +0,0 @@
-Title: Section I - Instructions to extract and configure Fortress Builder Package
-NavPrev: guidelines.html
-NavPrevText: Guidelines and Tips for first-time users
-NavUp: apacheds.html
-NavUpText: Quickstart Apacheds - Table of contents
-NavNext: section-II.html
-NavNextText: Section II - Instructions to run the Fortress Ant Build
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section I - Instructions to extract and configure Fortress Builder Package to Target System
-
-### Step 1
-
-Obtain copy of directory-fortress-core and copy to hard drive on target server env.
-
-https://gitbox.apache.org/repos/asf?p=directory-fortress-core.git;a=summary
-
-### Step 2
-
-Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
-
-### Step 3
-
-Edit file named 'build.properties' and insert or change the following LDAP configuration parameters:
-
- ldap.server.type=apacheds
-
- # These parameters point fortress to LDAP host:
- ldap.host=localhost
- ldap.port=10389
-
- # These are used to construct suffix for DIT, i.e. dc=example,dc=com.
- suffix.name=example
- suffix.dc=com
-
- # These are the connection parameters used for LDAP service account:
- root.dn=uid=admin,ou=system
-
- # This ApacheDS root password value is bound for fortress.properties.
- cfg.root.pw=secret
diff --git a/content/fortress/installation/apacheds/section-II.mdtext b/content/fortress/installation/apacheds/section-II.mdtext
deleted file mode 100644
index 8de43d0..0000000
--- a/content/fortress/installation/apacheds/section-II.mdtext
+++ /dev/null
@@ -1,63 +0,0 @@
-Title: Section II - Instructions to run the Fortress Ant Build
-NavPrev: section-I.html
-NavPrevText: Section I - Instructions to extract and configure Fortress Builder Package
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-III.html
-NavNextText: Section III - Instructions to configure ApacheDS and load with seed data
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section II - Instructions to run the Fortress Ant Build
-
-### Step 1
-
-From FORTRESS_HOME root folder, edit the b.sh script to point to java home:
-
- export JAVA_HOME=/opt/jdk1.7.0_10
-
-<CENTER>
- <IMG src="../../images/Screenshot3-edit-javahome.png" alt="Screenshot" width="766" height="111"/>
-</CENTER>
-
-### Step 2
-
-Run the distribution target:
-
- ./b.sh dist
-
-<CENTER>
- <IMG src="../../images/Screenshot4-ant-dist.png" alt="Screenshot" width="766" height="58"/>
-</CENTER>
-
-Note: The b.sh batch file referred to here uses Ant package that is local to Fortress quickstart package.
-
-### Step 3
-
-Verify it ran correctly according to Ant:
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot4-ant-success-dist.png" alt="Screenshot" width="766" height="58"/>
-</CENTER>
-
-You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
-
-<CENTER>
- <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
-</CENTER>
diff --git a/content/fortress/installation/apacheds/section-III.mdtext b/content/fortress/installation/apacheds/section-III.mdtext
deleted file mode 100644
index d962771..0000000
--- a/content/fortress/installation/apacheds/section-III.mdtext
+++ /dev/null
@@ -1,85 +0,0 @@
-Title: Section III - Instructions to configure ApacheDS and load with seed data
-NavPrev: section-II.html
-NavPrevText: Section II - Instructions to run the Fortress Ant Build
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-IV.html
-NavNextText: Section IV - Instructions to regression test Fortress and ApacheDS
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section III - Instructions to configure ApacheDS and load with seed data
-
-<DIV class="note" markdown="1">
- Important: This target reloads the ApacheDS configuration and data.
-</DIV>
-
-### Step 1
-
-Import Fortress ApacheDS schema into ApacheDS server using preferred ldif import tool. Fortress ApacheDS schema located here: FORTRESS_HOME/ldap/schema/apacheds-fortress.ldif
-
-Screenshot of Apache Directory Studio import of Fortress schema file into ApacheDS:
-
-<CENTER>
- <IMG src="../../images/Screenshot-Studio-Schema-Import.png" alt="Screenshot" width="766" height="461"/>
-</CENTER>
-
-Note: The default for this setting is 'false' or disabled.
-
-### Step 2
-
-The fortress 'init-apacheds' uses LDAPv3 to perform initial operations.
-
-Edit build.properties, ensure the following line has been commented out:
-
-
-<CENTER>
- <IMG src="../../images/Screenshot43-edit-disable-rest.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The default for this setting is 'false' or disabled.
-
-### Step 3
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh init-apacheds
-
-### Step 4
-
-Verify it ran correctly according to Ant.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot7-init-slapd-success.png" alt="Screenshot" width="766" height="101"/>
-</CENTER>
-
-### Step 5
-
-After above step completes, Symas ApacheDS will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
-
-
-### Step 5
-
-Point your preferred LDAP browser, ours is Apache Directory Studio, to the installed directory.
-
-<To be completed>
-
-<CENTER>
- <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
-</CENTER>
diff --git a/content/fortress/installation/apacheds/section-IV.mdtext b/content/fortress/installation/apacheds/section-IV.mdtext
deleted file mode 100644
index 7db35b5..0000000
--- a/content/fortress/installation/apacheds/section-IV.mdtext
+++ /dev/null
@@ -1,69 +0,0 @@
-Title: Section IV - Instructions to regression test Fortress and ApacheDS
-NavPrev: section-III.html
-NavPrevText: Section III - Instructions to configure ApacheDS and load with seed data
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-V.html
-NavNextText: Section V - Instructions to install Commander Web UI Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section IV - Instructions to regression test Fortress and ApacheDS on target machine (optional)
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh test-full
-
-<CENTER>
- <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The Fortress regression tests will run for around 3 minutes.
-
-### Step 2
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot11-ant-test-success.png" alt="Screenshot" width="766" height="59"/>
-</CENTER>
-
-### Step 3
-
-To re-run these tests:
-
- ./b.sh test-full
-
-<DIV class="note" markdown="1">
- WARNING messages in test output are good as these are negative tests in action.
-</DIV>
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
-</CENTER>
-
-<DIV class="note" markdown="1">
- If you made it this far without junit or ant ERRORS, the Fortress and ApacheDS IAM system are certified to run on your machine.
-</DIV>
-
-<DIV class="note" markdown="1">
- These tests load tens of thousands of records into your newly installed directory. The 'init-apacheds' and 'test-full' targets may be re-run as often as necessary. After regressions testing has completed, you may run the 'init-apacheds' target to remove all test data from the directory.
-</DIV>
diff --git a/content/fortress/installation/apacheds/section-IX.mdtext b/content/fortress/installation/apacheds/section-IX.mdtext
deleted file mode 100644
index 5b42e90..0000000
--- a/content/fortress/installation/apacheds/section-IX.mdtext
+++ /dev/null
@@ -1,90 +0,0 @@
-Title: Section IX - Instructions to regression test EnMasse Policy server
-NavPrev: section-VIII.html
-NavPrevText: Section VIII - Instructions to install EnMasse Policy Server Demo
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-X.html
-NavNextText: Section X - misc info about other utilities
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
-
-### Step 1
-
-Edit file named 'build.properties' and enable REST protocol here:
-
- enable.mgr.impl.rest=true
-
-Accept the defaults for other HTTP parameters in build.properties:
-
- http.user=demouser4
- http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
- http.host=localhost
- http.port=8080
-
-Should look like the following:
-
-<CENTER>
- <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
-</CENTER>
-
-### Step 2
-
-Save and exit the text file editor
-
-### Step 3
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh test-full
-
-
-wrong picture...
-
-<CENTER>
- <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The EnMasse regression tests will run for around 20 minutes.
-
-### Step 4
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 5
-
-This regression test may be rerun as often as necessary:
-
- ./b.sh test-full
-
-Note 1 : WARNING messages in test output are good as these are negative tests in action :
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
-</CENTER>
-
-Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
-
-Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
-
diff --git a/content/fortress/installation/apacheds/section-V.mdtext b/content/fortress/installation/apacheds/section-V.mdtext
deleted file mode 100644
index 63dd36d..0000000
--- a/content/fortress/installation/apacheds/section-V.mdtext
+++ /dev/null
@@ -1,67 +0,0 @@
-Title: Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility
-NavPrev: section-IV.html
-NavPrevText: Section IV - Instructions to regression test Fortress and ApacheDS
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-VI.html
-NavNextText: Section VI - Instructions to run Fortress Console
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility
-
-This command line tool provides an interactive session with the user based on a simple command line syntax.
-
-### Step 1
-
-To start the CLI, enter:
-
- ./b.sh cli
-
-<CENTER>
- <IMG src="../../images/Screenshot13-ant-cli.png" alt="Screenshot" width="766" height="48"/>
-</CENTER>
-
-Which will bring up the command interpreter:
-
-<CENTER>
- <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-### Step 2
-
-enter the command:
-
- review fuser -u demo
-
-<CENTER>
- <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-This example will return all users with userId that begins with 'demo':
-
-<CENTER>
- <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
-</CENTER>
-
-### Step 3
-
-To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
-
- [Command Line Interpreter](link...)
-
-Note: if javadocs are not found, go to [Section VII](section-VII.html)
\ No newline at end of file
diff --git a/content/fortress/installation/apacheds/section-VI.mdtext b/content/fortress/installation/apacheds/section-VI.mdtext
deleted file mode 100644
index 6e0765b..0000000
--- a/content/fortress/installation/apacheds/section-VI.mdtext
+++ /dev/null
@@ -1,85 +0,0 @@
-Title: Section VI - Instructions to run Fortress Console
-NavPrev: section-V.html
-NavPrevText: Section V -Instructions to run the Fortress Command Line Interpreter (CLI) utility
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-VII.html
-NavNextText: Section VII - Instructions to generate and view Javadoc
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VI - Instructions to run Fortress Console (optional)
-
-For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh console
-
-<CENTER>
- <IMG src="../../images/Screenshot17-ant-console.png" alt="Screenshot" width="766" height="49"/>
-</CENTER>
-
-### Some Console Screenshots...
-
-#### Main Menu:
-
-<CENTER>
- <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
-</CENTER>
-
-#### Admin Manager Functions
-
-Enter choice 1 and follow the screen prompts to edit RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Review Manager Functions
-
-Enter choice 2 and follow the screen prompts to search RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
-</CENTER>
-
-#### Access Manager Functions
-
-Enter choice 3 and follow the screen prompts to test RBAC policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
-</CENTER>
-
-#### Delegated Admin Manager Functions
-
-Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Audit Manager Functions
-
-Enter choice 8 and follow the screen prompts to search through the AUDIT log:
-
-<CENTER>
- <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
-</CENTER>
diff --git a/content/fortress/installation/apacheds/section-VII.mdtext b/content/fortress/installation/apacheds/section-VII.mdtext
deleted file mode 100644
index 3869990..0000000
--- a/content/fortress/installation/apacheds/section-VII.mdtext
+++ /dev/null
@@ -1,66 +0,0 @@
-Title: Section VII - Instructions to generate and view Javadoc
-NavPrev: section-VI.html
-NavPrevText: Section VI - Instructions to run Fortress Console
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-VIII.html
-NavNextText: Section VIII - Instructions to install EnMasse Policy Server Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VII - Instructions to generate and view Javadoc (optional)
-
-### Step 1
-
-Run the javadoc target:
-
- ./b.sh javadoc
-
-<CENTER>
- <IMG src="../../images/Screenshot24-ant-javadoc.png" alt="Screenshot" width="766" height="61"/>
-</CENTER>
-
-
-### Step 2
-
-Navigate to where docs are generated:
-
-<CENTER>
- <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
-</CENTER>
-
-### Step 3
-
-Open 'index.html' using your preferred HTML Browser :
-
-<CENTER>
- <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
-</CENTER>
-
-### Step 4
-
-The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
-
-### Step 5
-
-Good places to start learning about Fortress :
-
-* Fortress Manager Summary
-* RBAC Summary
-* Audit Manager
-* Command Line Interpreter
-* FortressAntTask
diff --git a/content/fortress/installation/apacheds/section-VIII.mdtext b/content/fortress/installation/apacheds/section-VIII.mdtext
deleted file mode 100644
index 701cb0a..0000000
--- a/content/fortress/installation/apacheds/section-VIII.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: Section VIII - Instructions to install EnMasse Policy Server Demo
-NavPrev: section-VII.html
-NavPrevText: Section VII - Instructions to generate and view Javadoc
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-NavNext: section-IX.html
-NavNextText: Section IX - Instructions to regression test EnMasse Policy server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VIII - Instructions to install EnMasse Policy Server Demo (optional)
-
-### Step 1
-
-Run the install-enmasse-demo target:
-
- ./b.sh install-enmasse-demo
-
-### Step 2
-
-Verify it ran correctly according to Ant.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot42-install-enmasse-demo-success.png" alt="Screenshot" width="766" height="278"/>
-</CENTER>
-
-
-### Step 3
-
-After above step completes, Fortress EnMasse will be installed
diff --git a/content/fortress/installation/apacheds/section-X.mdtext b/content/fortress/installation/apacheds/section-X.mdtext
deleted file mode 100644
index 4c6f851..0000000
--- a/content/fortress/installation/apacheds/section-X.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: Section X - More Utilities
-NavPrev: section-IX.html
-NavPrevText: Section IX - Instructions to regression test EnMasse Policy server
-NavUp: apacheds.html
-NavUpText: Quickstart ApacheDS - Table of contents
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section X - More Utilities
-Other execution targets you may find useful:
-
-
-* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
-* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
-* 'encrypt' - interface to jacypt encryption utility
-* display all ant targets available:
-
-<CENTER>
- <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
-</CENTER>
diff --git a/content/fortress/installation/linux/guidelines.mdtext b/content/fortress/installation/linux/guidelines.mdtext
deleted file mode 100644
index f80babb..0000000
--- a/content/fortress/installation/linux/guidelines.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: Guidelines and Tips for first-time users
-NavPrev: prerequisites.html
-NavPrevText: System Prerequisites
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-I.html
-NavNextText: Section I - Instructions to run the Fortress Ant Build
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Guidelines and Tips for first-time users
-
-
-In the document that follows, when you read \[version\] or [platform] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Debian Silver i386', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Debian-Silver-i386-1.0.0.zip
-
-Is your target machine windows? Go to [README-QUICKSTART-WINDOWS](../windows/windows.html).
-
-The source code for this project is located here ./src.
-
diff --git a/content/fortress/installation/linux/linux.mdtext b/content/fortress/installation/linux/linux.mdtext
deleted file mode 100644
index 3396223..0000000
--- a/content/fortress/installation/linux/linux.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: Quick start guide for Linux
-NavUp: ../../user-guide.html
-NavUpText: User Guide
-NavNext: prerequisites.html
-NavNextText: System Prerequisites
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-The intent of this document is to help new users with Apache Fortress IAM™ software using one of the the linux QUICKSTART packages located [here](https://directory.apache.org/fortress/download.html)
-
-For instructions on how to get Fortress connected to an existing OpenLDAP instance, follow the instructions inside SECTION 6 of this document: [README.txt](link to provide)
-
-### Table of contents
-
-* [System Prerequisites](prerequisites.html)
-* [Guidelines and Tips for first-time users](guidelines.html)
-* [Section I - download Fortress QUICKSTART and prepare the package](section-I.html)
-* [Section II - compile Fortress source and build distribution packages](section-II.html)
-* [Section III - install, configure and load OpenLDAP with seed data](section-III.html)
-* [Section IV - integration test Fortress and OpenLDAP](section-IV.html)
-* [Section V - Commander Web Administration demo](section-V.html)
-* [Section VI - integration test Commander with Solenium](section-VI.html)
-* [Section VII - connecting to Commander via Web browser](section-VII.html)
-* [Section VIII - Instructions to use Fortress Command Line Interpreter (CLI)](section-VIII.html)
-* [Section IX - Instructions to use Fortress Console utility (CLI)](section-IX.html)
-* [Section X - How to generate and view javadoc](section-X.html)
-* [Section XI - EnMasse REST Policy Server demo](section-XI.html)
-* [Section XII - integration test Fortress, EnMasse and OpenLDAP](section-XII.html)
-* [Section XIII - enable and test the OpenLDAP RBAC Accelerator Overlay](section-XIII.html)
-* [Section XIV - misc info about other utilities](section-XIV.html)
-
-
diff --git a/content/fortress/installation/linux/prerequisites.mdtext b/content/fortress/installation/linux/prerequisites.mdtext
deleted file mode 100644
index 2a9d398..0000000
--- a/content/fortress/installation/linux/prerequisites.mdtext
+++ /dev/null
@@ -1,37 +0,0 @@
-Title: System Prequesites
-NavPrev: linux.html
-NavPrevText: Quickstart Linux - Table of contents
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: guidelines.html
-NavNextText: Guidelines and Tips for first-time users
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# System Prerequisites
-
-* Internet access to retrieve binary dependencies from online Maven repo.
-* Java SDK Version 7 or beyond installed to target environment
-* Redhat or Ubuntu server machine
-* 1GB RAM
-* 20GB HD
-
-NOTE: The Fortress build.xml may run without connection to Internet if:
-
-* The binary dependencies have previously been downloaded to FORTRESS_HOME/lib folder
-* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties: _local.mode=true_
-
diff --git a/content/fortress/installation/linux/section-I.mdtext b/content/fortress/installation/linux/section-I.mdtext
deleted file mode 100644
index e80a9be..0000000
--- a/content/fortress/installation/linux/section-I.mdtext
+++ /dev/null
@@ -1,49 +0,0 @@
-Title: Section I - Instructions to download, extract and configure Fortress
-NavPrev: guidelines.html
-NavPrevText: Guidelines and Tips for first-time users
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-II.html
-NavNextText: Section II - Instructions to run the Fortress Ant Build
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section I - Instructions to download, extract and configure Fortress Builder Package to Target System
-
-* Download one of the linux packages from here: iamfortress.org/download
-* Copy fortressBuilder-\[platform\]-\[version\].zip to hard drive on target server env.
-* Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
-*Enable permission for the binaries to execute. From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- chmod a+x -Rf *
-
-<CENTER>
- <IMG src="../../images/Screenshot1-chmod.png" alt="Screenshot" width="766" height="58"/>
-</CENTER>
-
-If debian platform and using sudo, edit file named 'build.properties' and insert sudo password here:
-
- sudo.pw=your pw here
-
-Note: For Redhat deployments leave this param's value empty, like below, otherwise the 'stop-slapd' target may not work.
-
- sudo.pw=
-
-<CENTER>
- <IMG src="../../images/Screenshot2-edit-sudo.png" alt="Screenshot" width="766" height="111"/>
-</CENTER>
-
diff --git a/content/fortress/installation/linux/section-II.mdtext b/content/fortress/installation/linux/section-II.mdtext
deleted file mode 100644
index a950fdf..0000000
--- a/content/fortress/installation/linux/section-II.mdtext
+++ /dev/null
@@ -1,63 +0,0 @@
-Title: Section II - Instructions to run the Fortress Ant Build
-NavPrev: section-I.html
-NavPrevText: Section I - Instructions to download, extract and configure Fortress
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-III.html
-NavNextText: Section III - Instructions to run the Builder to Install OpenLDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section II - Instructions to run the Fortress Ant Build
-
-### Step 1
-
-From FORTRESS_HOME root folder, edit the b.sh script to point to java home:
-
- export JAVA_HOME=/opt/jdk1.7.0_10
-
-<CENTER>
- <IMG src="../../images/Screenshot3-edit-javahome.png" alt="Screenshot" width="766" height="111"/>
-</CENTER>
-
-### Step 2
-
-Run the distribution target:
-
- ./b.sh dist
-
-<CENTER>
- <IMG src="../../images/Screenshot4-ant-dist.png" alt="Screenshot" width="766" height="58"/>
-</CENTER>
-
-Note: The b.sh batch file referred to here uses Ant package that is local to Fortress quickstart package.
-
-### Step 3
-
-Verify it ran correctly according to Ant:
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot4-ant-success-dist.png" alt="Screenshot" width="766" height="58"/>
-</CENTER>
-
-You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
-
-<CENTER>
- <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
-</CENTER>
diff --git a/content/fortress/installation/linux/section-III.mdtext b/content/fortress/installation/linux/section-III.mdtext
deleted file mode 100644
index a7e7797..0000000
--- a/content/fortress/installation/linux/section-III.mdtext
+++ /dev/null
@@ -1,104 +0,0 @@
-Title: Section III - Instructions to run the Builder to Install OpenLDAP
-NavPrev: section-II.html
-NavPrevText: Section II - Instructions to run the Fortress Ant Build
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-IV.html
-NavNextText: Section IV - Instructions to regression test Fortress and OpenLDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
-
-<DIV class="note" markdown="1">
- Important: This target reinstalls and reloads the OpenLDAP server program, configuration and data.
-</DIV>
-
-### Step 1
-
-The fortress 'init-slapd' uses LDAPv3 to perform initial operations.
-
-edit build.properties, ensure the following line has been commented out:
-
-<CENTER>
- <IMG src="../../images/Screenshot43-edit-disable-rest.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The default for this setting is 'false' or disabled.
-
-### Step 2
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-if sudo:
-
- sudo ./b.sh init-slapd
-
-<CENTER>
- <IMG src="../../images/Screenshot6-init-slapd.png" alt="Screenshot" width="766" height="86"/>
-</CENTER>
-
-if not sudo you must run as user that has priv to modify folders in /var and /opt folders:
-
- su
-
- [enter your pw]
-
-before running the command to kick off the install
-
- ./b.sh init-slapd
-
-### Step 3
-
-Verify it ran correctly according to Ant.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot7-init-slapd-success.png" alt="Screenshot" width="766" height="101"/>
-</CENTER>
-
-### Step 4
-
-After above step completes, OpenLDAP will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
-
-### Step 5
-
-Point your preferred LDAP browser, ours is Apache Directory Studio, to the installed directory. The configuration parameters you'll need to browse can be found in the generated 'slapd.conf' file.
-
-To view data stored in default database:
-
- suffix "dc=openldap,dc=org"
- rootdn "cn=Manager,dc=openldap,dc=org"
- rootpw "secret"
-
-The root pw will be encrypted before stored in slapd.conf
-
-<CENTER>
- <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
-</CENTER>
-
-To view data stored in audit log database:
-
- suffix "cn=log"
- rootdn "cn=Manager,cn=log"
- rootpw "secret"
-
-The log root pw will be encrypted before stored in slapd.conf
-
-<CENTER>
- <IMG src="../../images/Screenshot9-ldap-browser-log.png" alt="Screenshot" width="766" height="374"/>
-</CENTER>
diff --git a/content/fortress/installation/linux/section-IV.mdtext b/content/fortress/installation/linux/section-IV.mdtext
deleted file mode 100644
index 0e10ed0..0000000
--- a/content/fortress/installation/linux/section-IV.mdtext
+++ /dev/null
@@ -1,69 +0,0 @@
-Title: Section IV - Instructions to regression test Fortress and OpenLDAP
-NavPrev: section-III.html
-NavPrevText: Section III - Instructions to run the Builder to Install OpenLDAP
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-V.html
-NavNextText: Section V - Instructions to install Commander Web UI Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section IV - Instructions to regression test Fortress and OpenLDAP on target machine (optional)
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh test-full
-
-<CENTER>
- <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The Fortress regression tests will run for around 3 minutes.
-
-### Step 2
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot11-ant-test-success.png" alt="Screenshot" width="766" height="59"/>
-</CENTER>
-
-### Step 3
-
-To re-run these tests:
-
- ./b.sh test-full
-
-<DIV class="note" markdown="1">
- WARNING messages in test output are good as these are negative tests in action.
-</DIV>
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
-</CENTER>
-
-<DIV class="note" markdown="1">
- If you made it this far without junit or ant ERRORS, the Fortress and OpenLDAP IAM system are certified to run on your machine.
-</DIV>
-
-<DIV class="note" markdown="1">
- These tests load tens of thousands of records into your newly installed directory. The 'init-slapd' and 'test-full' targets may be re-run as often as necessary. After regressions testing has completed, you may run the 'init-slapd' target to remove all test data from the directory.
-</DIV>
diff --git a/content/fortress/installation/linux/section-IX.mdtext b/content/fortress/installation/linux/section-IX.mdtext
deleted file mode 100644
index 3e0bd7d..0000000
--- a/content/fortress/installation/linux/section-IX.mdtext
+++ /dev/null
@@ -1,85 +0,0 @@
-Title: Section IX - Instructions to run Fortress Console
-NavPrev: section-VIII.html
-NavPrevText: Section VIII - Instructions to run the Fortress Command Line Interpreter
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-X.html
-NavNextText: Section X - Instructions to generate and view Javadoc
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section IX - Instructions to run Fortress Console (optional)
-
-For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh console
-
-<CENTER>
- <IMG src="../../images/Screenshot17-ant-console.png" alt="Screenshot" width="766" height="49"/>
-</CENTER>
-
-### Some Console Screenshots...
-
-#### Main Menu:
-
-<CENTER>
- <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
-</CENTER>
-
-#### Admin Manager Functions
-
-Enter choice 1 and follow the screen prompts to edit RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Review Manager Functions
-
-Enter choice 2 and follow the screen prompts to search RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
-</CENTER>
-
-#### Access Manager Functions
-
-Enter choice 3 and follow the screen prompts to test RBAC policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
-</CENTER>
-
-#### Delegated Admin Manager Functions
-
-Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Audit Manager Functions
-
-Enter choice 8 and follow the screen prompts to search through the AUDIT log:
-
-<CENTER>
- <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
-</CENTER>
diff --git a/content/fortress/installation/linux/section-V.mdtext b/content/fortress/installation/linux/section-V.mdtext
deleted file mode 100644
index b9eb966..0000000
--- a/content/fortress/installation/linux/section-V.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: Section V - Instructions to install Commander Web UI Demo
-NavPrev: section-IV.html
-NavPrevText: Section IV - Instructions to regression test Fortress and OpenLDAP
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-VI.html
-NavNextText: Section VI - Instructions to test Commander Web UI Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section V - Instructions to install Commander Web UI Demo (optional)
-
-Run the install-commander-demo target:
-
- ./b.sh install-commander-demo
diff --git a/content/fortress/installation/linux/section-VI.mdtext b/content/fortress/installation/linux/section-VI.mdtext
deleted file mode 100644
index 209d9e9..0000000
--- a/content/fortress/installation/linux/section-VI.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: Section VI - Instructions to test Commander Web UI Demo
-NavPrev: section-V.html
-NavPrevText: Section V - Instructions to install Commander Web UI Demo
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-VII.html
-NavNextText: Section VII - Instructions to connect to Commander Web Admin
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VI - Instructions to automatically test Commander Web UI Demo (optional)
-
-Run the commander-maven-test target to perform headless test of Commander Web:
-
- ./b.sh commander-maven-test
-
-note: Firefox must be preinstalled to target system.
\ No newline at end of file
diff --git a/content/fortress/installation/linux/section-VII.mdtext b/content/fortress/installation/linux/section-VII.mdtext
deleted file mode 100644
index f8fa6d1..0000000
--- a/content/fortress/installation/linux/section-VII.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: Section VII - Instructions to connect to Commander Web Admin
-NavPrev: section-VI.html
-NavPrevText: Section VI - Instructions to test Commander Web UI Demo
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-VIII.html
-NavNextText: Section VIII - Instructions to run the Fortress Command Line Interpreter
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VII - Instructions to connect to Commander Web Admin
-
-Open up browser and enter the following URL:
-
- http://localhost:8080/commander
-
- userId: test
- password: test
-
-Click on links on top or buttons on side of page to navigate between pages
\ No newline at end of file
diff --git a/content/fortress/installation/linux/section-VIII.mdtext b/content/fortress/installation/linux/section-VIII.mdtext
deleted file mode 100644
index 8ab34bf..0000000
--- a/content/fortress/installation/linux/section-VIII.mdtext
+++ /dev/null
@@ -1,67 +0,0 @@
-Title: Section VIII - Instructions to run the Fortress Command Line Interpreter
-NavPrev: section-VII.html
-NavPrevText: Section VII - Instructions to connect to Commander Web Admin
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-IX.html
-NavNextText: Section IX - Instructions to run Fortress Console
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI) utility (optional)
-
-This command line tool provides an interactive session with the user based on a simple command line syntax.
-
-### Step 1
-
-To start the CLI, enter:
-
- ./b.sh cli
-
-<CENTER>
- <IMG src="../../images/Screenshot13-ant-cli.png" alt="Screenshot" width="766" height="48"/>
-</CENTER>
-
-Which will bring up the command interpreter:
-
-<CENTER>
- <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-### Step 2
-
-enter the command:
-
- review fuser -u demo
-
-<CENTER>
- <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-This example will return all users with userId that begins with 'demo':
-
-<CENTER>
- <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
-</CENTER>
-
-### Step 3
-
-To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
-
- [Command Line Interpreter](link...)
-
-Note: if javadocs are not found, go to [Section X](section-X.html)
\ No newline at end of file
diff --git a/content/fortress/installation/linux/section-X.mdtext b/content/fortress/installation/linux/section-X.mdtext
deleted file mode 100644
index 76c88a4..0000000
--- a/content/fortress/installation/linux/section-X.mdtext
+++ /dev/null
@@ -1,66 +0,0 @@
-Title: Section X - Instructions to generate and view Javadoc
-NavPrev: section-IX.html
-NavPrevText: Section IX - Instructions to run Fortress Console
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-XI.html
-NavNextText: Section XI - Instructions to install EnMasse Policy Server Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section X - Instructions to generate and view Javadoc (optional)
-
-### Step 1
-
-Run the javadoc target:
-
- ./b.sh javadoc
-
-<CENTER>
- <IMG src="../../images/Screenshot24-ant-javadoc.png" alt="Screenshot" width="766" height="61"/>
-</CENTER>
-
-
-### Step 2
-
-Navigate to where docs are generated:
-
-<CENTER>
- <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
-</CENTER>
-
-### Step 3
-
-Open 'index.html' using your preferred HTML Browser :
-
-<CENTER>
- <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
-</CENTER>
-
-### Step 4
-
-The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
-
-### Step 5
-
-Good places to start learning about Fortress :
-
-* Fortress Manager Summary
-* RBAC Summary
-* Audit Manager
-* Command Line Interpreter
-* FortressAntTask
diff --git a/content/fortress/installation/linux/section-XI.mdtext b/content/fortress/installation/linux/section-XI.mdtext
deleted file mode 100644
index d2ec327..0000000
--- a/content/fortress/installation/linux/section-XI.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: Section XI - Instructions to install EnMasse Policy Server Demo
-NavPrev: section-X.html
-NavPrevText: Section X - Instructions to generate and view Javadoc
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-XII.html
-NavNextText: Section XII - Instructions to regression test EnMasse Policy server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XI - Instructions to install EnMasse Policy Server Demo (optional)
-
-### Step 1
-
-Run the install-enmasse-demo target:
-
- ./b.sh install-enmasse-demo
-
-### Step 2
-
-Verify it ran correctly according to Ant.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot42-install-enmasse-demo-success.png" alt="Screenshot" width="766" height="278"/>
-</CENTER>
-
-
-### Step 3
-
-After above step completes, Fortress EnMasse will be installed
diff --git a/content/fortress/installation/linux/section-XII.mdtext b/content/fortress/installation/linux/section-XII.mdtext
deleted file mode 100644
index 50acd0d..0000000
--- a/content/fortress/installation/linux/section-XII.mdtext
+++ /dev/null
@@ -1,87 +0,0 @@
-Title: Section XII - Instructions to regression test EnMasse Policy server
-NavPrev: section-XI.html
-NavPrevText: Section XI - Instructions to install EnMasse Policy Server Demo
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-XIII.html
-NavNextText: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
-
-### Step 1
-
-Edit file named 'build.properties' and enable REST protocol here:
-
- enable.mgr.impl.rest=true
-
-Accept the defaults for other HTTP parameters in build.properties:
-
- http.user=demouser4
- http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
- http.host=localhost
- http.port=8080
-
-Should look like the following:
-
-<CENTER>
- <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
-</CENTER>
-
-### Step 2
-
-Save and exit the text file editor
-
-### Step 3
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- ./b.sh test-full
-
-<CENTER>
- <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The EnMasse regression tests will run for around 20 minutes.
-
-### Step 4
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 5
-
-This regression test may be rerun as often as necessary:
-
- ./b.sh test-full
-
-Note 1 : WARNING messages in test output are good as these are negative tests in action :
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
-</CENTER>
-
-Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
-
-Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
-
diff --git a/content/fortress/installation/linux/section-XIII.mdtext b/content/fortress/installation/linux/section-XIII.mdtext
deleted file mode 100644
index f2a9ddd..0000000
--- a/content/fortress/installation/linux/section-XIII.mdtext
+++ /dev/null
@@ -1,83 +0,0 @@
-Title: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
-NavPrev: section-XII.html
-NavPrevText: Section XII - Instructions to regression test EnMasse Policy server
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-NavNext: section-XIV.html
-NavNextText: Section XIV - More Utilities
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP and test Java-side bindings (optional)
-
-
-### Step 1
-
-Edit file named 'build.properties' and enable RBAC accelerator by adding:
-
- rbac.accelerator=true
-
-### Step 2
-
-Save and exit the text file editor
-
-### Step 3
-
-Reinstall OpenLDAP by running the _init-slapd_ target described in [Section III: Instructions to run the Builder to Install OpenLDAP](section-III.html), configure and load with seed data
-
-### Step 4
-
-Load necessary test data for unit tests:
-
- ./b.sh admin -Dparam1=ldap/setup/RbacAcceleratorTestUsers.xml
-
-### Step 5
-
-Now you can run the rbac accelerator unit tests:
-
- ./b.sh test-accel
-
-### Step 6
-
-Verify the test-accel target completed with no ant or junit errors
-
-### Step 7
-
-Reload necessary regression test data by running the test-full target described in [Section IV: Instructions to regression test Fortress and OpenLDAP on target machine](section-IV.html)
-
-### Step 8
-
-Now you can run the rbac accelerator regression tests:
-
- ./b.sh test-accel-full
-
-### Step 9
-
-Verify the test-full-accel target completed with no ant or junit errors
-
-### Step 10
-
-Check out the javadoc for learning about APIs supported within the RBAC accelerator: [Fortress Accelerator Client](link...)
-
-
-Note 1: The RBAC accelerator turns OpenLDAP into an RBAC Policy Decision Point (PDP) server. All state is maintained in OpenLDAP LMDB databases including session and audit trail.
-
-Note 2: The slapd.conf file contains the mappings for the new database backends. You can view this data using any LDAP browser.
-
-Note 3: Bindings for C and Python are being worked on and will be released soon.
-
-Note 4: SessionPermissions will be in future release as required by ANSI RBAC (INCITS 359) Core functionality.
diff --git a/content/fortress/installation/linux/section-XIV.mdtext b/content/fortress/installation/linux/section-XIV.mdtext
deleted file mode 100644
index 1c44426..0000000
--- a/content/fortress/installation/linux/section-XIV.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: Section XIV - More Utilities
-NavPrev: section-XIII.html
-NavPrevText: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
-NavUp: linux.html
-NavUpText: Quickstart Linux - Table of contents
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XIV - More Utilities
-Other execution targets you may find useful:
-
-
-* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
-* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
-* 'encrypt' - interface to jacypt encryption utility
-* 'start-slapd' - Starts OpenLDAP on target machine.
-* 'stop-slapd' - Stops OpenLDAP on target machine. Note: for slapd commands sudo or elevated privileges may be required.
-* display all ant targets available:
-
-<CENTER>
- <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
-</CENTER>
diff --git a/content/fortress/installation/openldap.mdtext b/content/fortress/installation/openldap.mdtext
deleted file mode 100644
index e8d4ab5..0000000
--- a/content/fortress/installation/openldap.mdtext
+++ /dev/null
@@ -1,20 +0,0 @@
-Title: Installation guides
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Installation guides
-
diff --git a/content/fortress/installation/windows/guidelines.mdtext b/content/fortress/installation/windows/guidelines.mdtext
deleted file mode 100644
index fcb1229..0000000
--- a/content/fortress/installation/windows/guidelines.mdtext
+++ /dev/null
@@ -1,37 +0,0 @@
-Title: Guidelines and Tips for first-time users
-NavPrev: prerequisites.html
-NavPrevText: System Prerequisites
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-I.html
-NavNextText: Section I - Instructions to run the Fortress Ant Build
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Guidelines and Tips for first-time users
-
-
-* In the document that follows, when you read \[version\] or \[platform\] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Windows', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Windows-1.0.0.zip
-
-* Does your target machine OS end with an X? Go to [README-QUICKSTART.html]
-
-* The source code for this project is located in [FORTRESS_HOME\src folder].
-
-<CENTER>
- <IMG src="../../images/Screenshot28-src-listing-win.png" alt="Screenshot" width="766" height="518"/>
-</CENTER>
-
diff --git a/content/fortress/installation/windows/prequesites.mdtext b/content/fortress/installation/windows/prequesites.mdtext
deleted file mode 100644
index 243803a..0000000
--- a/content/fortress/installation/windows/prequesites.mdtext
+++ /dev/null
@@ -1,38 +0,0 @@
-Title: System Prequesites
-NavPrev: windows.html
-NavPrevText: Quickstart Windows - Table of contents
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: guidelines.html
-NavNextText: Guidelines and Tips for first-time users
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# System Prerequisites
-
-The following steps are required...
-
-* Internet access to retrieve binary dependencies from online Maven repo.
-* Java SDK Version 7 or beyond installed to target environment
-
-NOTE: The Fortress build.xml may run without connection to Internet if:
-
-* The binary dependencies are already present in FORTRESS_HOME/lib folder
-* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties:
-
- local.mode=true
-
diff --git a/content/fortress/installation/windows/section-I.mdtext b/content/fortress/installation/windows/section-I.mdtext
deleted file mode 100644
index b7adc0b..0000000
--- a/content/fortress/installation/windows/section-I.mdtext
+++ /dev/null
@@ -1,32 +0,0 @@
-Title: Section I - Instructions to extract and configure Fortress Builder Package
-NavPrev: guidelines.html
-NavPrevText: Guidelines and Tips for first-time users
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-II.html
-NavNextText: Section II - Instructions to run the Fortress Ant Build
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section I - Instructions to extract and configure Fortress Builder Package to Target System
-
-### Step 1
-
-Copy fortressBuilder-\[platform\]-\[version\].zip to hard drive on target server env.
-
-### Step 2
-Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
diff --git a/content/fortress/installation/windows/section-II.mdtext b/content/fortress/installation/windows/section-II.mdtext
deleted file mode 100644
index de297d1..0000000
--- a/content/fortress/installation/windows/section-II.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: Section II - Instructions to run the Fortress Ant Build
-NavPrev: section-I.html
-NavPrevText: Section I - Instructions to extract and configure Fortress Builder Package
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-III.html
-NavNextText: Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section II - Instructions to run the Fortress Ant Build
-
-### Step 1
-
-From FORTRESS_HOME root folder, edit the b.bat script to point to java home:
-
- set JAVA_HOME=\Progra~1\Java\jdk1.7.0
-
-<CENTER>
- <IMG src="../../images/Screenshot28-edit-javahome-win.png" alt="Screenshot" width="766" height="504"/>
-</CENTER>
-
-### Step 2
-
-Run the distribution target:
-
- b.bat dist
-
-<CENTER>
- <IMG src="../../images/Screenshot29-ant-dist-win.png" alt="Screenshot" width="766" height="47"/>
-</CENTER>
-
-Note: The b.bat file referred to here uses Ant package that is local to Fortress quickstart package.
-
-### Step 3
-
-Verify it ran correctly according to Ant:
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot30-ant-dist-success-win.png" alt="Screenshot" width="766" height="98"/>
-</CENTER>
-
-You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
-
------> Wrong snapshot !
-
-<CENTER>
- <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
-</CENTER>
diff --git a/content/fortress/installation/windows/section-III.mdtext b/content/fortress/installation/windows/section-III.mdtext
deleted file mode 100644
index 4e8bf8a..0000000
--- a/content/fortress/installation/windows/section-III.mdtext
+++ /dev/null
@@ -1,108 +0,0 @@
-Title: Section III - Instructions to run the Builder to Install OpenLDAP
-NavPrev: section-II.html
-NavPrevText: Section II - Instructions to run the Fortress Ant Build
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-IV.html
-NavNextText: Section IV - Instructions to regression test Fortress and OpenLDAP
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
-
-<DIV class="note" markdown="1">
- Important: This target reinstalls and reloads the OpenLDAP server program, configuration and data.
-</DIV>
-
-### Step 1
-
-From FORTRESS_HOME root folder, edit the build.properties file, setting the 3 properties below to match your environment:
-
- slapd.exe.drive=C <-- contains the drive letter for openldap server
- slapd.exe.dir=OpenLDAP <-- contains the folder to load openldap server binaries
- fortress.home.drive=C <-- contains the drive letter that you extracted fortress' builder package to.
-
-If you are not sure, what to use, the defaults usually work. Here's a screen shot of the build.properties.
-
-<CENTER>
- <IMG src="../../images/Screenshot39-build-properties-win.png" alt="Screenshot" width="766" height="563"/>
-</CENTER>
-
-### Step 2
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- b init-slapd
-
-<CENTER>
- <IMG src="../../images/Screenshot31-init-slapd-win.png" alt="Screenshot" width="766" height="34"/>
-</CENTER>
-
-Note: You will need to reply 'Yes' to the pop-up message:
-
-<CENTER>
- <IMG src="../../images/Screenshot33-window-warning.png" alt="Screenshot"/>
-</CENTER>
-
-Note: You will need to reply 'Allow' to the pop-up security warning message if you intend to allow other machines to communicate with ldap server:
-
-<CENTER>
- <IMG src="../../images/Screenshot40-firewall-warning-win.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 3
-
-Verify it ran correctly according to Ant.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot32-init-slapd-success-win.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 4
-
-After above step completes, OpenLDAP will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
-
-
-### Step 5
-
-Point your preferred LDAP browser, ours is [Apache Directory Studio](https://directory.apache.org/studio), to the installed directory. The configuration parameters you'll need to browse can be found in the generated 'slapd.conf' file.
-
-To view data stored in default database:
-
- suffix "dc=openldap,dc=org"
- rootdn "cn=Manager,dc=openldap,dc=org"
- rootpw "secret"
-
-The root pw will be encrypted before stored in slapd.conf
-
-<CENTER>
- <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
-</CENTER>
-
-To view data stored in audit log database:
-
- suffix "cn=log"
- rootdn "cn=Manager,cn=log"
- rootpw "secret"
-
-The log root pw will be encrypted before stored in slapd.conf
-
-<CENTER>
- <IMG src="../../images/Screenshot9-ldap-browser-log.png" alt="Screenshot" width="766" height="374"/>
-</CENTER>
diff --git a/content/fortress/installation/windows/section-IV.mdtext b/content/fortress/installation/windows/section-IV.mdtext
deleted file mode 100644
index 4143084..0000000
--- a/content/fortress/installation/windows/section-IV.mdtext
+++ /dev/null
@@ -1,67 +0,0 @@
-Title: Section IV - Instructions to regression test Fortress and OpenLDAP
-NavPrev: section-III.html
-NavPrevText: Section III - Instructions to run the Builder to Install OpenLDAP
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-V.html
-NavNextText: Section V - Instructions to install Commander Web UI Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section IV - Instructions to regression test Fortress and OpenLDAP on target machine
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- b test-full
-
-<CENTER>
- <IMG src="../../images/Screenshot34-ant-test-init-win.png" alt="Screenshot" width="766" height="30"/>
-</CENTER>
-
-### Step 2
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot35-ant-test-init-success-win.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 3
-
-To re-run these tests:
-
- b test-full
-
-<DIV class="note" markdown="1">
- WARNING messages in test output are good as these are negative tests in action.
-</DIV>
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
-</CENTER>
-
-<DIV class="note" markdown="1">
- If you made it this far without junit or ant ERRORS, the Fortress and OpenLDAP IAM system are certified to run on your machine.
-</DIV>
-
-<DIV class="note" markdown="1">
- These tests load tens of thousands of records into your newly installed directory. The 'init-slapd' target may be re-run after the 'test-full-init' and 'test-full' targets have completed. This will delete the test data from the directory and restart directory with a clean slate.
-</DIV>
diff --git a/content/fortress/installation/windows/section-IX.mdtext b/content/fortress/installation/windows/section-IX.mdtext
deleted file mode 100644
index 9b73774..0000000
--- a/content/fortress/installation/windows/section-IX.mdtext
+++ /dev/null
@@ -1,85 +0,0 @@
-Title: Section IX - Instructions to run Fortress Console
-NavPrev: section-VIII.html
-NavPrevText: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-X.html
-NavNextText: Section X - Instructions to generate and view Javadoc
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section IX - Instructions to run Fortress Console (optional)
-
-For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
-
-### Step 1
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- b console
-
-<CENTER>
- <IMG src="../../images/Screenshot37-ant-console-win.png" alt="Screenshot"/>
-</CENTER>
-
-### Some Console Screenshots...
-
-#### Main Menu:
-
-<CENTER>
- <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
-</CENTER>
-
-#### Admin Manager Functions
-
-Enter choice 1 and follow the screen prompts to edit RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Review Manager Functions
-
-Enter choice 2 and follow the screen prompts to search RBAC data:
-
-<CENTER>
- <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
-</CENTER>
-
-#### Access Manager Functions
-
-Enter choice 3 and follow the screen prompts to test RBAC policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
-</CENTER>
-
-#### Delegated Admin Manager Functions
-
-Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
-
-<CENTER>
- <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
-</CENTER>
-
-#### Audit Manager Functions
-
-Enter choice 8 and follow the screen prompts to search through the AUDIT log:
-
-<CENTER>
- <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
-</CENTER>
diff --git a/content/fortress/installation/windows/section-V.mdtext b/content/fortress/installation/windows/section-V.mdtext
deleted file mode 100644
index e420e98..0000000
--- a/content/fortress/installation/windows/section-V.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: Section V - Instructions to install Commander Web UI Demo (optional)
-NavPrev: section-IV.html
-NavPrevText: Section IV - Instructions to regression test Fortress and OpenLDAP
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-VI.html
-NavNextText: Section VI - Instructions to test Commander Web UI Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section V - Instructions to install Commander Web UI Demo (optional)
-
-Run the install-commander-demo target:
-
- b install-commander-demo
diff --git a/content/fortress/installation/windows/section-VI.mdtext b/content/fortress/installation/windows/section-VI.mdtext
deleted file mode 100644
index 1633c92..0000000
--- a/content/fortress/installation/windows/section-VI.mdtext
+++ /dev/null
@@ -1,31 +0,0 @@
-Title: Section VI - Instructions to automatically test Commander Web UI Demo (optional)
-NavPrev: section-V.html
-NavPrevText: Section V - Instructions to install Commander Web UI Demo
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-VII.html
-NavNextText: Section VII - Instructions to connect to Commander Web Admin
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VI - Instructions to automatically test Commander Web UI Demo (optional)
-
-Run the commander-maven-test target to perform headless test of Commander Web:
-
- b commander-maven-test
-
-note: Firefox must be preinstalled to target system.
\ No newline at end of file
diff --git a/content/fortress/installation/windows/section-VII.mdtext b/content/fortress/installation/windows/section-VII.mdtext
deleted file mode 100644
index 8cb1691..0000000
--- a/content/fortress/installation/windows/section-VII.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: Section VII - Instructions to connect to Commander Web Admin
-NavPrev: section-VI.html
-NavPrevText: Section VI - Instructions to test Commander Web UI Demo
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-VIII.html
-NavNextText: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VII - Instructions to connect to Commander Web Admin
-
-Open up browser and enter the following URL:
-
- http://localhost:8080/commander
-
- userId: test
- password: test
-
-Click on links on top or bottons on side of page to navigate between pages
\ No newline at end of file
diff --git a/content/fortress/installation/windows/section-VIII.mdtext b/content/fortress/installation/windows/section-VIII.mdtext
deleted file mode 100644
index 08911f0..0000000
--- a/content/fortress/installation/windows/section-VIII.mdtext
+++ /dev/null
@@ -1,67 +0,0 @@
-Title: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
-NavPrev: section-VII.html
-NavPrevText: Section VII - nstructions to connect to Commander Web Admin
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-IX.html
-NavNextText: Section IX - Instructions to run Fortress Console (CLI)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI) (optional)
-
-This command line tool provides an interactive session with the user based on a simple command line syntax.
-
-### Step 1
-
-To start the CLI, enter:
-
- b cli
-
-<CENTER>
- <IMG src="../../images/Screenshot36-ant-cli-win.png" alt="Screenshot"/>
-</CENTER>
-
-Which will bring up the command interpreter:
-
-<CENTER>
- <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-### Step 2
-
-enter the command:
-
- review fuser -u demo
-
-<CENTER>
- <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
-</CENTER>
-
-This example will return all users with userId that begins with 'demo':
-
-<CENTER>
- <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
-</CENTER>
-
-### Step 3
-
-To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
-
- [Command Line Interpreter](link...)
-
-Note: if javadocs are not found, go to [Section X](section-X.html)
\ No newline at end of file
diff --git a/content/fortress/installation/windows/section-X.mdtext b/content/fortress/installation/windows/section-X.mdtext
deleted file mode 100644
index b0610bd..0000000
--- a/content/fortress/installation/windows/section-X.mdtext
+++ /dev/null
@@ -1,70 +0,0 @@
-Title: Section X - Instructions to generate and view Javadoc
-NavPrev: section-IX.html
-NavPrevText: Section IX - Instructions to run Fortress Console
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-XI.html
-NavNextText: Section XI - Instructions to install EnMasse Policy Server Demo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section X - Instructions to generate and view Javadoc (optional)
-
-### Step 1
-
-Run the javadoc target:
-
- b javadoc
-
-<CENTER>
- <IMG src="../../images/Screenshot38-javadoc-win.png" alt="Screenshot"/>
-</CENTER>
-
-
-### Step 2
-
-Navigate to where docs are generated :
-
-(wrong snapshot)
-
-<CENTER>
- <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
-</CENTER>
-
-### Step 3
-
-Open 'index.html' using your preferred HTML Browser :
-
-<CENTER>
- <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
-</CENTER>
-
-### Step 4
-
-The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
-
-### Step 5
-
-Good places to start learning about Fortress :
-
-(update links)
-
-* Fortress Manager Summary
-* RBAC Summary
-* Audit Manager
-* Command Line Interpreter
-* FortressAntTask
diff --git a/content/fortress/installation/windows/section-XI.mdtext b/content/fortress/installation/windows/section-XI.mdtext
deleted file mode 100644
index 6398d61..0000000
--- a/content/fortress/installation/windows/section-XI.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: Section XI - Instructions to install EnMasse Policy Server Demo
-NavPrev: section-X.html
-NavPrevText: Section X - Instructions to generate and view Javadoc
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-XII.html
-NavNextText: Section XII - Instructions to regression test EnMasse Policy server
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XI - Instructions to install EnMasse Policy Server Demo
-
-### Step 1
-
-Run the install-enmasse-demo target:
-
- b install-enmasse-demo
-
-### Step 2
-
-Verify it ran correctly according to Ant.
-
-### Step 3
-
-After above step completes, Fortress EnMasse will be installed
diff --git a/content/fortress/installation/windows/section-XII.mdtext b/content/fortress/installation/windows/section-XII.mdtext
deleted file mode 100644
index b39db8a..0000000
--- a/content/fortress/installation/windows/section-XII.mdtext
+++ /dev/null
@@ -1,90 +0,0 @@
-Title: Section XII - Instructions to regression test EnMasse Policy server
-NavPrev: section-XI.html
-NavPrevText: Section XI - Instructions to install EnMasse Policy Server Demo
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-XIII.html
-NavNextText: Section XIII - misc info about other utilities
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
-
-### Step 1
-
-Edit file named 'build.properties' and enable REST protocol here:
-
- enable.mgr.impl.rest=true
-
-Accept the defaults for other HTTP parameters in build.properties:
-
- http.user=demouser4
- http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
- http.host=localhost
- http.port=8080
-
-Should look like the following:
-
-<CENTER>
- <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
-</CENTER>
-
-### Step 2
-
-Save and exit the text file editor
-
-### Step 3
-
-From FORTRESS_HOME root folder, enter the following command from a system prompt:
-
- b test-full
-
-
-wrong picture...
-
-<CENTER>
- <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
-</CENTER>
-
-Note: The EnMasse regression tests will run for around 20 minutes.
-
-### Step 4
-
-Verify these tests ran with no ERRORS.
-
- BUILD SUCCESSFUL
-
-<CENTER>
- <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
-</CENTER>
-
-### Step 5
-
-This regression test may be rerun as often as necessary:
-
- b test-full
-
-Note 1 : WARNING messages in test output are good as these are negative tests in action :
-
-<CENTER>
- <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
-</CENTER>
-
-Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
-
-Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
-
diff --git a/content/fortress/installation/windows/section-XIII.mdtext b/content/fortress/installation/windows/section-XIII.mdtext
deleted file mode 100644
index a4550c9..0000000
--- a/content/fortress/installation/windows/section-XIII.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: Section XIII - More Utilities
-NavPrev: section-XII.html
-NavPrevText: Section XII - Instructions to regression test EnMasse Policy server
-NavUp: windows.html
-NavUpText: Quickstart Windows - Table of contents
-NavNext: section-XIV.html
-NavNextText: Section XIV - More Utilities
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Section XIII - More Utilities
-
-Other execution targets you may find useful:
-
-
-* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
-* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
-* 'encrypt' - interface to jacypt encryption utility
-* 'start-slapd' - Starts OpenLDAP on target machine.
-* 'stop-slapd' - Stops OpenLDAP on target machine.
-* display all ant targets available:
-
-<CENTER>
- <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
-</CENTER>
diff --git a/content/fortress/installation/windows/windows.mdtext b/content/fortress/installation/windows/windows.mdtext
deleted file mode 100644
index b52455e..0000000
--- a/content/fortress/installation/windows/windows.mdtext
+++ /dev/null
@@ -1,50 +0,0 @@
-Title: Quick start guide for Windows
-NavUp: ../../user-guide.html
-NavUpText: User Guide
-NavNext: prerequisites.html
-NavNextText: System Prerequisites
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
- These instructions are intended for new users who want to quickly learn how to use Apache Fortress and OpenLDAP IAM software on Windows platform using [QUICKSTART package](https://directory.apache.org/fortress/download.html)
-
-Follow the steps and
-
- OpenLDAP will be installed, configured, loaded, and ready to use by [Section IV](section-IV.html).
- Commander Web Admin demo starts in [Section V](section-V.html)
- EnMasse Policy Server demo starts in [Section XI](section-XI.html)
-
-
-### Table of contents
-
-* [System Prerequisites](prerequisites.html)
-* [Guidelines and Tips for first-time users](guidelines.html)
-* [Section I - Instructions to extract and configure Fortress Builder Package](section-I.html)
-* [Section II - Instructions to run the Fortress Ant Build](section-II.html)
-* [Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data](section-III.html)
-* [Section IV - Instructions to regression test Fortress and OpenLDAP](section-IV.html)
-* [Section V - Instructions to install Commander Web UI Demo](section-V.html)
-* [Section VI - Instructions to test Commander Web UI Demo](section-VI.html)
-* [Section VII - Instructions to connect to Commander Web Admin](section-VII.html)
-* [Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)](section-VIII.html)
-* [Section IX - Instructions to run Fortress Console (CLI)](section-IX.html)
-* [Section X - Instructions to generate and view Javadoc](section-X.html)
-* [Section XI - Instructions to install EnMasse Policy Server Demo](section-XI.html)
-* [Section XII - Instructions to regression test EnMasse Policy server](section-XII.html)
-* [Section XIII - More Utilities](section-XIII.html)
-
-
diff --git a/content/fortress/issues.mdtext b/content/fortress/issues.mdtext
deleted file mode 100644
index 1820ae6..0000000
--- a/content/fortress/issues.mdtext
+++ /dev/null
@@ -1,14800 +0,0 @@
-Title: Issues
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Issue tracking
-
-Our project uses [JIRA](https://issues.apache.org/jira/browse/FC/), a Java EE based issue tracking and project management application.
-
-![JIRA](../images/jira-space-logo.gif)
-
-Issues, bugs, and feature requests should be submitted to the following issue tracking system :
-
-
-| Directory Sub-Project | JIRA key | Link to issue tracking system |
-|:-:|:-:|---|
-| Fortress | FC | [http://issues.apache.org/jira/browse/FC](http://issues.apache.org/jira/browse/FC) |
-
-<!-- =========================================================================================================== -->
-<!-- FC-1 -->
-<!-- =========================================================================================================== -->
-<style type="text/css">
-.tableBorder, .grid
-{
- background-color: #fff;
- width: 100%;
- border-collapse: collapse;
-}
-.tableBorder td, .grid td
-{
- vertical-align: top;
- padding: 2px;
- border: 1px solid #ccc;
-}
-.noPadding
-{
- padding: 0 !important;
-}
-h3 .subText
-{
- font-size: 60%;
- font-weight: normal;
-}
-.tabLabel
-{
- font-weight: bold;
- border: 1px solid #ccc;
- border-bottom:none;
- padding: 2px;
- display: inline;
-}
-td.blank
-{
- padding: 0;
- margin: 0;
-}
-.blank td
-{
- border: none;
-}
-#descriptionArea
-{
- margin: 0;
- padding: 2px;
- border: 1px solid #ccc;
-}
-hr
-{
- border-top:1px solid #aaa;
-}
-hr.fullcontent
-{
- height: 15px;
- padding: 10px 0;
- background: #fff url('https://fortress.atlassian.net/images/icons/hr.gif') no-repeat scroll center;
-}
-</style>
-<br>
-<br>
-<table id="FC-1" class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3>[FC-1]delPermObjs causes LDAP 80 error
- <span><font size="-2">Created: 23/Mar/13 Updated: 23/Mar/13 Due: 29/Mar/13</font></span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%">
- <b>Type:</b>
- </td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%">
- <b>Resolution:</b>
- </td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10000-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">4 hours</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">4 hours</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
- <td colspan="3" bgcolor="#ffffff" valign="top"><p>Ubuntu-12.04.1-server-amd64</p></td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0"></table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>The following error occurs during regression test with REST enabled:</p>
- junit 2013-03-22 22:24:44,671 (INFO ) DEL-OBJS TOB4<br>
- junit 2013-03-22 22:24:44,907 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delPermObjs objectName TOB4_8 caught SecurityException rc=3005, msg=us.jts.fortress.rbac.PermDAO.deleteObj objectName TOB4_8 caught LDAPException=80 msg=entry delete failed<br>
- junit us.jts.fortress.SecurityException: us.jts.fortress.rbac.PermDAO.deleteObj objectName TOB4_8 caught LDAPException=80 msg=entry delete failed<br>
- junit at us.jts.fortress.rest.AdminMgrRestImpl.deletePermObj(AdminMgrRestImpl.java:913)<br>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.delPermObjs(AdminMgrImplTest.java:1765)<br>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.testDeletePermissionObj(AdminMgrImplTest.java:1740)<br>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
- junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
- junit at java.lang.reflect.Method.invoke(Method.java:601)<br>
- junit at junit.framework.TestCase.runTest(TestCase.java:168)<br>
- junit at junit.framework.TestCase.runBare(TestCase.java:134)<br>
- junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br>
- junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br>
- junit at junit.framework.TestResult.run(TestResult.java:113)<br>
- junit at junit.framework.TestCase.run(TestCase.java:124)<br>
- junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br>
- junit at junit.framework.TestSuite.run(TestSuite.java:238)<br>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br>
- junit 2013-03-22 22:24:44,909 (INFO ) DEASGN-USRS TU1 TR1<br>
- junit 2013-03-22 22:24:54,723 (INFO ) DEASGN-USRS TU4 TR2<br>
- </td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table style="margin: 0;" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0">
- Comment by Shawn McKinney [Administrator]
- <font size="-2">
- [<font color="#336699">23/Mar/13</font>]
- </font>
- </td>
- </tr>
- <tr id="comment-body-10000">
- <td bgcolor="#ffffff">
- <p>This exception occurs on Ubuntu 12.04 64 bit server and symas-openldap-silver.64_2.4.34-1_amd64.deb.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-2 -->
-<!-- =========================================================================================================== -->
-<table id="FC-2" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-2] <a href="https://fortress.atlassian.net/browse/FC-2">Error adding inheritance</a>
- <span class="subText">
- <font size="-2">
- Created: 21/Apr/13 Updated: 30/Apr/13 Due: 28/Apr/13 Resolved: 30/Apr/13
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC25</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC25</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10400-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">0 minutes</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 hours</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
- <td colspan="3" bgcolor="#ffffff" valign="top"><p>ubuntu 32</p></td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>When adding inheritance relationships between roles, get this error. It appears to happen when a role is assigned to a user beforehand:</p>
- <p> java <br>
- java Enter child role name:<br>
- csr<br>
- java Enter parent role name:<br>
- employee<br>
- java 2013-04-21 17:28:59,889 (INFO ) us.jts.fortress.rbac.RoleUtil.loadGraph initializing ROLE context Client123<br>
- java ConnectionPool (Sun Apr 21 17:28:59 CDT 2013) : adding a connection to pool...<br>
- java 2013-04-21 17:28:59,980 (ERROR) us.jts.fortress.AdminMgrConsole.addRoleInheritance caught SecurityException rc=5003, msg=us.jts.fortress.rbac.RoleDAO.update name CSR caught LDAPException=20 msg=modify/add: roleOccupant: value #0 already exists<br>
- java us.jts.fortress.UpdateException: us.jts.fortress.rbac.RoleDAO.update name CSR caught LDAPException=20 msg=modify/add: roleOccupant: value #0 already exists<br>
- java at us.jts.fortress.rbac.RoleDAO.update(RoleDAO.java:193)<br>
- java at us.jts.fortress.rbac.RoleP.update(RoleP.java:132)<br>
- java at us.jts.fortress.rbac.AdminMgrImpl.addInheritance(AdminMgrImpl.java:1002)<br>
- java at us.jts.fortress.AdminMgrConsole.addRoleInheritance(AdminMgrConsole.java:160)<br>
- java at us.jts.fortress.ProcessMenuCommand.processAdminFunction(ProcessMenuCommand.java:418)<br>
- java at us.jts.fortress.ProcessMenuCommand.processRbacControl(ProcessMenuCommand.java:73)<br>
- java at us.jts.fortress.FortressConsole.main(FortressConsole.java:28)<br>
- java at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
- java at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
- java at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
- java at java.lang.reflect.Method.invoke(Method.java:601)<br>
- java at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)<br>
- java at java.lang.Thread.run(Thread.java:722)<br>
- java Caused by: LDAPException(resultCode=20 (attribute or value exists), errorMessage='modify/add: roleOccupant: value #0 already exists')<br>
- java at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br>
- java at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br>
- java at us.jts.fortress.ldap.DataProvider.modify(DataProvider.java:204)<br>
- java at us.jts.fortress.rbac.RoleDAO.update(RoleDAO.java:187)<br>
- java ... 12 more</p><br>
- </td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table class="grid" style="margin: 0;" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0">
- Comment by Shawn McKinney [Administrator]
- <font size="-2">[<font color="#336699">30/Apr/13</font>]</font>
- </td>
- </tr>
- <tr>
- <td bgcolor="#ffffff">
- <p>Error fixed by adding parent role attribute and name only to entity before calling update.</p>
- </td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0">
- Comment by Shawn McKinney [Administrator]
- <font size="-2">[<font color="#336699">30/Apr/13</font>]</font>
- </td>
- </tr>
- <tr id="comment-body-10502">
- <td bgcolor="#ffffff">
- <p>method was calling update with all of the role attrs which caused failure due to adding role occupant that already existed.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-3 -->
-<!-- =========================================================================================================== -->
-<table if="FC-3" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-3] <a href="https://fortress.atlassian.net/browse/FC-3">Enhance Role Assignment Func</a>
- <span class="subText">
- <font size="-2">
- Created: 30/Apr/13 Updated: 30/Apr/13 Due: 10/May/13
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10600-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 days</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 days</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
- <td colspan="3" bgcolor="#ffffff" valign="top"><p>Linux Dev</p></td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td><p>Measure/repair role assignment funcs to optimize for role occupants.</p><br></td>
- </tr>
- </tbody>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-4 -->
-<!-- =========================================================================================================== -->
-<table id="FC-4" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-3] <a href="https://fortress.atlassian.net/browse/FC-3">Enhance Role Assignment Func</a>
- <span class="subText">Created: 30/Apr/13 Updated: 30/Apr/13 Due: 10/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10600-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">2 days</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">2 days</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>Linux Dev</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Measure/repair role assignment funcs to optimize for role occupants.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-5 -->
-<!-- =========================================================================================================== -->
-<table id="FC-5" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-4] <a href="https://fortress.atlassian.net/browse/FC-4">Add ApacheDS support</a>
- <span class="subText">Created: 04/May/13 Updated: 03/Jun/13 Due: 05/May/13 Resolved: 05/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC25</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC25</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10601-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all linux and windows platforms</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Support apacheds</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10507">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">05/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10507">
- <td bgcolor="#ffffff">
- <p>Regression tests running successfully</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-6 -->
-<!-- =========================================================================================================== -->
-<table id="FC-6" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-5] <a href="https://fortress.atlassian.net/browse/FC-5">Test case DEL-RLS ROLES_TR5_HIER fails on delete with ApacheDS</a>
- <span class="subText">Created: 04/May/13 Updated: 05/May/13 Due: 31/May/13 Resolved: 05/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10602-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all linux</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
- <td bgcolor="#ffffff" valign="top">
- <img src="https://fortress.atlassian.net/images/icons/attach/image.gif" height="16" width="16" alt="PNG File" />
- Screenshot20130504.png
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>test case fails:</p>
- <p>deleteRoles("DEL-RLS ROLES_TR5_HIER", RoleTestData.ROLES_TR5_HIER);</p>
- <p>role oamT5ROLE2 has oamT5Role1 as child and fails on delete. The previous test run removed oamT5Role1 so this error condition should not happen.</p>
- <p>Need to figure out why this happens on ApacheDS and not OpenLDAP.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10505">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">04/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10505">
- <td bgcolor="#ffffff">
- <p>Debug screenshot. ApacheDS has oamT5ROLE1 as child.</p>
- </td>
- </tr>
- <tr id="comment-header-10506">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">04/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10506">
- <td bgcolor="#ffffff">
- <p>fix problems with removing inheritance relationships from roles:</p>
- <p>a. when deleteRole is called, remove all parents.<br/>
- b. when deleteInheritance is called, check for condition of empty parent roles in which case remove the parent role attribute altogether.</p>
- </td>
- </tr>
- <tr id="comment-header-10508">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">05/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10508">
- <td bgcolor="#ffffff">
- <p>fixed</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-7 -->
-<!-- =========================================================================================================== -->
-<table id="FC-7" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-7] <a href="https://fortress.atlassian.net/browse/FC-7">Add SSD Constraint check to updateRole</a>
- <span class="subText">Created: 04/May/13 Updated: 05/Oct/13 Due: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10604-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The updateRole function may modify parent attribute on role entity. This has the opportunity to circumvent role SSD policy constraint. Perform SSD constraint checks if addition role parent is added.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-8 -->
-<!-- =========================================================================================================== -->
-<table id="FC-8" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-8] <a href="https://fortress.atlassian.net/browse/FC-8">CreateSession error on ApacheDS and Ubuntu 32</a>
- <span class="subText">Created: 05/May/13 Updated: 05/May/13 Due: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10605-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>ubuntu 32 VM</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>During test-full target (with teardown) on apacheds receive this error:</p>
- <p> junit Testcase: testCreateSession took 0.019 sec<br/>
- junit FAILED<br/>
- junit us.jts.fortress.rbac.UserDAO.checkPassword userId <a href="https://fortress.atlassian.net/wiki/display/FC/jtsUser2">jtsUser2</a> caught LDAPException=53 msg=ERR_732 Cannot process a Request while binding<br/>
- junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.UserDAO.checkPassword userId <a href="https://fortress.atlassian.net/wiki/display/FC/jtsUser2">jtsUser2</a> caught LDAPException=53 msg=ERR_732 Cannot process a Request while binding<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessions(AccessMgrImplTest.java:331)<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.testCreateSession(AccessMgrImplTest.java:281)<br/>
- junit </p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-9 -->
-<!-- =========================================================================================================== -->
-<table id="FC-9" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-9] <a href="https://fortress.atlassian.net/browse/FC-9">Encode all model data</a>
- <span class="subText">Created: 17/May/13 Updated: 05/Oct/13 Due: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>ALL inbound data must be encoded safe text before persisted.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-10 -->
-<!-- =========================================================================================================== -->
-<table id="FC-10" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-10] <a href="https://fortress.atlassian.net/browse/FC-10">UserDAO throws npe when password is null</a>
- <span class="subText">Created: 18/May/13 Updated: 18/May/13 Due: 20/May/13 Resolved: 18/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10701-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">0 minutes</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
- <td bgcolor="#ffffff" valign="top">
- <img src="https://fortress.atlassian.net/images/icons/attach/image.gif" height="16" width="16" alt="PNG File" />
- UserDAO-PW-NPE-20130517.png
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The UserDAO createUser and updateUpdate user methods throw npe when user entity contains a null value in password field. </p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10600">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">18/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10600">
- <td bgcolor="#ffffff">
- <p>fix npe for null password</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-11 -->
-<!-- =========================================================================================================== -->
-<table id="FC-11" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-11] <a href="https://fortress.atlassian.net/browse/FC-11">Builder change to pull source from maven</a>
- <span class="subText">Created: 19/May/13 Updated: 28/Feb/14 Resolved: 28/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Closed</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Won't Fix</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10800-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 day</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 day</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Change quickstart package's 'builder' target to pull fortress source from maven. Do not include source in quickstart archive.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-12 -->
-<!-- =========================================================================================================== -->
-<table id="FC-12" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-12] <a href="https://fortress.atlassian.net/browse/FC-12">isTemporalSet does not detect changes to entity constraint values</a>
- <span class="subText">Created: 26/May/13 Updated: 26/May/13 Due: 31/May/13 Resolved: 26/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>fix this method to detect when any of the constraint attributes changes. Currently it will only trigger if all of the attributes are not null.</p>
- <p> public boolean isTemporalSet()</p>
- {
- return (beginTime != null && endTime != null && beginDate != null && endDate != null && beginLockDate != null && endLockDate != null && dayMask != null);
- }
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10700">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">26/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10700">
- <td bgcolor="#ffffff">
- <p>Changed the && to ||</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-13 -->
-<!-- =========================================================================================================== -->
-<table id="FC-13" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-13] <a href="https://fortress.atlassian.net/browse/FC-13">ReviewMgr.findUsers does not pull back pw policy subentry</a>
- <span class="subText">Created: 28/May/13 Updated: 28/May/13 Due: 29/May/13 Resolved: 28/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10901-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add OPENLDAP_POLICY_SUBENTRY to the result set for user search</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10701">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10701">
- <td bgcolor="#ffffff">
- <p>added attribute to search</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-14 -->
-<!-- =========================================================================================================== -->
-<table id="FC-14" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-14] <a href="https://fortress.atlassian.net/browse/FC-14">Add bldg, dept and room attrs to user entity</a>
- <span class="subText">Created: 28/May/13 Updated: 03/Jun/13 Due: 31/May/13 Resolved: 03/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10902-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">4 hours</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">4 hours</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add inetorgperson attributes bldg, dept and room to user</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10711">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10711">
- <td bgcolor="#ffffff">
- <p>done</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-15 -->
-<!-- =========================================================================================================== -->
-<table id="FC-15" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-15] <a href="https://fortress.atlassian.net/browse/FC-15">Fortress UserDAO.createUser adds openldap policy flag when server type = apache ds</a>
- <span class="subText">Created: 29/May/13 Updated: 29/May/13 Due: 30/May/13 Resolved: 29/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10903-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>final User create(User entity)<br/>
- {<br/>
- add flag here:<br/>
- if (VUtil.isNotNullOrEmpty(entity.getPwPolicy()))</p>
- {
- String dn = GlobalIds.POLICY_NODE_TYPE + "=" + entity.getPwPolicy() + "," + getRootDn(entity.getContextId(), GlobalIds.PPOLICY_ROOT);
- attrs.add(createAttribute(OPENLDAP_POLICY_SUBENTRY, dn));
- }
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10702">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">29/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10702">
- <td bgcolor="#ffffff">
- <p>added hooks to prevent pulling OL attributes when server.type = apacheds</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-16 -->
-<!-- =========================================================================================================== -->
-<table id="FC-16" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-16] <a href="https://fortress.atlassian.net/browse/FC-16">MDB Error during deletion</a>
- <span class="subText">Created: 29/May/13 Updated: 03/Jun/13 Due: 07/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10904-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>ubuntu32</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
- <td bgcolor="#ffffff" valign="top">
- <img src="https://fortress.atlassian.net/images/icons/attach/text.gif" height="16" width="16" alt="Text File" />
- konsole-output-mdb-delete-error-20130529.txt
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>During deletion to fortress permission object:<br/>
- ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us</p>
- <p>PermDAO.delete</p>
- <p>This error in debug level slapd.logs, excerpt below, full log attached:</p>
- <p>51a66b8d => index_entry_del( 911, "ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us" )</p>
- <p>51a66b8d mdb_idl_delete_keys: 38f 00000000<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 0096defd<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 3d1dea68<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 76324484<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 29c95ac5<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 0e1b3d46<br/>
- 51a66b8d mdb_idl_delete_keys: 38f 1ccd25c5<br/>
- 51a66b8d <= index_entry_del( 911, "ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us" ) success<br/>
- 51a66b8d <=- mdb_delete: id2entry failed: MDB_PAGE_FULL: Internal error - page has no more space (-30786)<br/>
- 51a66b8d send_ldap_result: conn=1000 op=3820 p=3<br/>
- 51a66b8d send_ldap_result: err=80 matched="" text="entry delete failed"<br/>
- 51a66b8d slap_queue_csn: queing 0x3bb8e308 20130529205645.303808Z#000000#000#000000<br/>
- 51a66b8d ==> mdb_add: reqStart=20130529205645.000000Z,cn=log<br/>
- 51a66b8d oc_check_required entry (reqStart=20130529205645.000000Z,cn=log), objectClass "auditDelete"<br/>
- 51a66b8d oc_check_allowed type "objectClass"<br/>
- 51a66b8d oc_check_allowed type "structuralObjectClass"<br/>
- 51a66b8d oc_check_allowed type "reqStart"<br/>
- 51a66b8d oc_check_allowed type "reqEnd"<br/>
- 51a66b8d oc_check_allowed type "reqType"<br/>
- 51a66b8d oc_check_allowed type "reqSession"<br/>
- 51a66b8d oc_check_allowed type "reqAuthzID"<br/>
- 51a66b8d oc_check_allowed type "reqDN"<br/>
- 51a66b8d oc_check_allowed type "reqMessage"<br/>
- 51a66b8d oc_check_allowed type "reqResult"<br/>
- 51a66b8d oc_check_allowed type "reqEntryUUID"<br/>
- 51a66b8d mdb_dn2entry("reqStart=20130529205645Z,cn=log")<br/>
- 51a66b8d => mdb_dn2id("reqStart=20130529205645Z,cn=log")<br/>
- 51a66b8d <= mdb_dn2id: get failed: MDB_NOTFOUND: No matching key/data pair found (-30798)<br/>
- 51a66b8d => mdb_entry_decode:<br/>
- 51a66b8d <= mdb_entry_decode<br/>
- 51a66b8d => access_allowed: add access to "cn=log" "children" requested<br/>
- 51a66b8d <= root access granted<br/>
- 51a66b8d => access_allowed: add access granted by manage(=mwrscxd)<br/>
- 51a66b8d => access_allowed: add access to "reqStart=20130529205645.000000Z,cn=log" "entry" requested<br/>
- 51a66b8d <= root access granted<br/>
- 51a66b8d => access_allowed: add access granted by manage(=mwrscxd)<br/>
- 51a66b8d => mdb_dn2id_add 0x4eba: "reqStart=20130529205645Z,cn=log"<br/>
- 51a66b8d <= mdb_dn2id_add 0x4eba: 0<br/>
- 51a66b8d => index_entry_add( 20154, "reqStart=20130529205645.000000Z,cn=log" )<br/>
- 51a66b8d mdb_idl_insert_keys: 4eba b5c866dc<br/>
- 51a66b8d mdb_idl_insert_keys: 4eba <br/>
- 51a66b8d mdb_idl_insert_keys: 4eba 86ee7ec7<br/>
- 51a66b8d mdb_idl_insert_keys: 4eba 7990d2ba<br/>
- 51a66b8d <= index_entry_add( 20154, "reqStart=20130529205645.000000Z,cn=log" ) success<br/>
- 51a66b8d => mdb_entry_encode(0x00004eba): reqStart=20130529205645.000000Z,cn=log<br/>
- 51a66b8d <= mdb_entry_encode(0x00004eba): reqStart=20130529205645.000000Z,cn=log<br/>
- 51a66b8d mdb_add: added id=00004eba dn="reqStart=20130529205645.000000Z,cn=log"<br/>
- 51a66b8d send_ldap_result: conn=1000 op=3820 p=3<br/>
- 51a66b8d send_ldap_result: err=0 matched="" text=""<br/>
- 51a66b8d slap_graduate_commit_csn: removing 0x89e6d50 20130529205645.303808Z#000000#000#000000<br/>
- 51a66b8d send_ldap_response: msgid=3821 tag=107 err=80<br/>
- ber_flush2: 34 bytes to sd 14<br/>
- 0000: 30 20 02 02 0e ed 6b 1a 0a 01 50 04 00 04 13 65 0 ....k...P....e <br/>
- 0010: 6e 74 72 79 20 64 65 6c 65 74 65 20 66 61 69 6c ntry delete fail <br/>
- 0020: 65 64 ed <br/>
- ldap_write: want=34, written=34<br/>
- 0000: 30 20 02 02 0e ed 6b 1a 0a 01 50 04 00 04 13 65 0 ....k...P....e <br/>
- 0010: 6e 74 72 79 20 64 65 6c 65 74 65 20 66 61 69 6c ntry delete fail <br/>
- 0020: 65 64 ed <br/>
- 51a66b8d conn=1000 op=3820 RESULT tag=107 err=80 text=entry delete failed<br/>
- 51a66b8d slap_graduate_commit_csn: removing 0x8a07120 20130529205645.303808Z#000000#000#000000<br/>
- 51a66c46 daemon: epoll: listen=7 active_threads=0 tvp=zero</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-17 -->
-<!-- =========================================================================================================== -->
-<table id="FC-17" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-17] <a href="https://fortress.atlassian.net/browse/FC-17">Delete descendant role error</a>
- <span class="subText">Created: 29/May/13 Updated: 03/Jun/13 Due: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10905-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>ubuntu 32 - symas-openldap-silver.32_2.4.35-2_i386.deb</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p> junit 2013-05-29 17:51:18,449 (INFO ) DEL-RLS-TR6-DESC<br/>
- junit 2013-05-29 17:51:18,480 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delRoleDescendant caught SecurityException rc=5004, msg=us.jts.fortress.rbac.RoleDAO.remove role name=oamT6C4B2A1 LDAPException=32 msg=no such object<br/>
- junit us.jts.fortress.RemoveException: us.jts.fortress.rbac.RoleDAO.remove role name=oamT6C4B2A1 LDAPException=32 msg=no such object<br/>
- junit at us.jts.fortress.rbac.RoleDAO.remove(RoleDAO.java:316)<br/>
- junit at us.jts.fortress.rbac.RoleP.delete(RoleP.java:246)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImpl.deleteRole(AdminMgrImpl.java:434)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.delRoleDescendant(AdminMgrImplTest.java:670)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.testDelRoleDescendant(AdminMgrImplTest.java:603)<br/>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
- junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
- junit at java.lang.reflect.Method.invoke(Method.java:601)<br/>
- junit at junit.framework.TestCase.runTest(TestCase.java:168)<br/>
- junit at junit.framework.TestCase.runBare(TestCase.java:134)<br/>
- junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br/>
- junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br/>
- junit at junit.framework.TestResult.run(TestResult.java:113)<br/>
- junit at junit.framework.TestCase.run(TestCase.java:124)<br/>
- junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br/>
- junit at junit.framework.TestSuite.run(TestSuite.java:238)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br/>
- junit Caused by: LDAPException(resultCode=32 (no such object), errorMessage='no such object', matchedDN='ou=Roles,ou=RBAC,dc=jts,dc=us')<br/>
- junit at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br/>
- junit at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br/>
- junit at us.jts.fortress.ldap.DataProvider.modify(DataProvider.java:188)<br/>
- junit at us.jts.fortress.ldap.DataProvider.delete(DataProvider.java:235)<br/>
- junit at us.jts.fortress.rbac.RoleDAO.remove(RoleDAO.java:311)<br/>
- junit ... 19 more<br/>
- junit 2013-05-29 17:51:18,483 (INFO ) DEL-RLS-TR6-ASC<br/>
- junit 2013-05-29 17:51:18,487 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delRoleAscendant caught SecurityException rc=5060, msg=us.jts.fortress.rbac.HierUtil.validateRelationship child oamT7D2C1B1A1 does not have parent oamT7C2B1A1<br/>
- junit us.jts.fortress.ValidationException: us.jts.fortress.rbac.HierUtil.validateRelationship child oamT7D2C1B1A1 does not have parent oamT7C2B1A1<br/>
- junit at us.jts.fortress.rbac.HierUtil.validateRelationship(HierUtil.java:127)<br/>
- junit at us.jts.fortress.rbac.RoleUtil.validateRelationship(RoleUtil.java:245)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImpl.deleteInheritance(AdminMgrImpl.java:1046)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.delRoleAscendant(AdminMgrImplTest.java:764)<br/>
- junit at us.jts.fortress.rbac.AdminMgrImplTest.testDelRoleAscendant(AdminMgrImplTest.java:741)<br/>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
- junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
- junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
- junit at java.lang.reflect.Method.invoke(Method.java:601)<br/>
- junit at junit.framework.TestCase.runTest(TestCase.java:168)<br/>
- junit at junit.framework.TestCase.runBare(TestCase.java:134)<br/>
- junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br/>
- junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br/>
- junit at junit.framework.TestResult.run(TestResult.java:113)<br/>
- junit at junit.framework.TestCase.run(TestCase.java:124)<br/>
- junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br/>
- junit at junit.framework.TestSuite.run(TestSuite.java:238)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br/>
- junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br/>
- junit 2013-05-29 17:51:18,487 (INFO ) DEL-RLS TR1<br/>
- junit 2013-05-29 17:51:18,502 (INFO ) DEL-RLS TR2<br/>
- junit 2013-05-29 17:51:18,516 (INFO ) DEL-RLS TR3<br/>
- junit 2013-05-29 17:51:18,771 (INFO ) DEL-RLS TR4<br/>
- junit 2013-05-29 17:51:18,799 (INFO ) DEL-RLS ROLES_TR5_HIER<br/>
- junit 2013-05-29 17:51:18,818 (INFO ) DEL-RLS ROLES_TR5B<br/>
- junit 2013-05-29 17:51:18,852 (INFO ) DEL-RLS ROLES_TR8_SSD<br/>
- junit 2013-05-29 17:51:18,919 (INFO ) DEL-RLS ROLES_TR9_SSD<br/>
- ^Csmckinn@smckinnlt-lr02:~/GIT/fortressDev/openldap-fortress-core$ sudo ./build.sh init-slapd<br/>
- Buildfile: /home/smckinn/GIT/fortressDev/openldap-fortress-core/build.xml</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-18 -->
-<!-- =========================================================================================================== -->
-<table id="FC-18" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-18] <a href="https://fortress.atlassian.net/browse/FC-18">DAO Updates enhancement</a>
- <span class="subText">Created: 30/May/13 Updated: 17/Jun/13 Due: 30/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10906-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>09:15:48 AM emmanuel lecharny: I may have a few q regarding the update methods<br/>
- 09:16:08 AM emmanuel lecharny: it seems that you remove an Attribute before adding some new values<br/>
- 09:18:43 AM emmanuel lecharny: something like :<br/>
- 09:18:44 AM emmanuel lecharny: LDAPModification(type=replace, attr=ftRoles, values={}), <br/>
- LDAPModification(type=add, attr=ftRoles, values=</p>
- {'oamT10SSDR1'})]<br/>
- <br/>
- 09:19:16 AM emmanuel lecharny: which results in two modification bing done on the entry, instead of one<br/>
- 09:19:22 AM emmanuel lecharny: not a big deal though<br/>
- 09:19:47 AM emmanuel lecharny: I assume that all the ftRoles get removed first, then you inject one new one<br/>
- 09:20:06 AM * emmanuel lecharny out for 5 mins<br/>
- 09:33:24 AM smckinney: so you are saying two roundtrips for those operations?<br/>
- 09:34:22 AM smckinney: the intent is yes to replace the old with the new<br/>
- 09:40:49 AM emmanuel lecharny: smckinney: no, this will be done in one single rountrip. This is why t's not a big deal<br/>
- 09:41:00 AM smckinney: yes that was my assumption as well<br/>
- 09:41:16 AM smckinney: but having your eyes in there will be good<br/>
- 09:42:23 AM smckinney: how would you have done this?<br/>
- 09:44:55 AM emmanuel lecharny: a replace with thevalues will blank the existing data, and inject the added values<br/>
- 09:45:10 AM emmanuel lecharny: so no eed to do LDAPModification(type=replace, attr=ftRoles, values={}), <br/>
- <br/>
- 09:45:39 AM emmanuel lecharny: doing LDAPModification(type=replace, attr=ftRoles, values={'oamT10SSDR1'}
- <p>)] should be enough</p>
- <p>09:46:27 AM smckinney: yes agreed. wondering why I did not do that to begin with... <br/>
- 09:47:28 AM smckinney: will create an issue to take another look at it.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-19 -->
-<!-- =========================================================================================================== -->
-<table id="FC-19" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-19] <a href="https://fortress.atlassian.net/browse/FC-19">Add toString() methods for the base objects (Role, Permissions...)</a>
- <span class="subText">Created: 30/May/13 Updated: 03/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10907-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>It would be very comfy to have toString() methods added to the base classes, especially for debugging and logging purpose.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-20 -->
-<!-- =========================================================================================================== -->
-<table id="FC-20" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-20] <a href="https://fortress.atlassian.net/browse/FC-20">Add cache name to ehcache config</a>
- <span class="subText">Created: 30/May/13 Updated: 31/May/13 Due: 28/Jun/13 Resolved: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10908-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add name to ehcache as Emmanuel specifies via the fortress list server:</p>
- <p>yesterday, I spent a couple of hours trying to understand why I get a<br/>
- failure in the tests. I finally found the pb : the EhCache CacheManager<br/>
- is initialized using a factory, and the configuration file does not have<br/>
- a name, which leads the cache to be a singleton. If you are embedding<br/>
- fortress into another application using EhCache, or if Fortress embed an<br/>
- application using EhCache, it's very likely that you face some issue if<br/>
- this cache is also a singleton.</p>
- <p>Bottom line, I added a name="fortress" in the ehcache.xml file, and this<br/>
- solved my pb :</p>
- <p><?xml version="1.0" encoding="UTF-8"?></p>
- <p><!--<br/>
- Fortress CacheManager Configuration<br/>
- ==========================<br/>
- This ehcache.xml corresponds to a single CacheManager.<br/>
- --><br/>
- <ehcache name="fortress"<br/>
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10703">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10703">
- <td bgcolor="#ffffff">
- <p>changed ehcache.xml's header to include the name fortress:</p>
- <p><ehcache name="fortress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-21 -->
-<!-- =========================================================================================================== -->
-<table id="FC-21" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-21] <a href="https://fortress.atlassian.net/browse/FC-21">Alter DAO LDAP connection managment</a>
- <span class="subText">Created: 30/May/13 Updated: 31/May/13 Due: 31/May/13 Resolved: 31/May/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10909-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Another from Emmanuel:</p>
- <p>><br/>
- > On 05/25/2013 04:24 PM, Emmanuel Lecharny wrote:<br/>
- >> 2) It would be better to get the connection immediately before using it,<br/>
- >> and to release it as soon as you are done with it. For instance, the<br/>
- >> connection could be get just before calling the dataProvider and<br/>
- >> released just after. Not really a huge improvment, but assuming that<br/>
- >> you may have thousands of requests per second, this may become an<br/>
- >> issue.<br/>
- >><br/>
- ><br/>
- > The current pattern followed in the Fortress DAO's is as follows:<br/>
- ><br/>
- > // inside any DAO method:<br/>
- > try<br/>
- > </p>
- {
- > 1. getAdminConnection();
- > 2. build up the ldap attribute set or search filter
- > 3. perform the ldap operation
- > }
- <p>> catch (LDAPException e)<br/>
- > </p>
- {
- > // perform error handling
- > }
- <p>> finally<br/>
- > </p>
- {
- > 4. closeAdminConnection(ld);
- > }
- <p>><br/>
- > This change you are suggesting is to delay opening the connection<br/>
- > until the beginning of step 3?<br/>
- Yes. Basically :</p>
- <p>try<br/>
- {<br/>
- 1. build up the ldap attribute set or search filter<br/>
- 2. getAdminConnection();<br/>
- 3. perform the ldap operation</p>
- <p>Now, it's questionable if the connection should be grab in (2) instead<br/>
- in the method that performs the operation. The only rationnal I see is<br/>
- for a non-admin connection to be used, but this is not the case in teh<br/>
- DAO, AFAICS.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10704">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10704">
- <td bgcolor="#ffffff">
- <p>Moved getting connections from the pools until just before the call to DAO base util apis. In other words, moved it until when it was needed.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-22 -->
-<!-- =========================================================================================================== -->
-<table id="FC-22" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-22] <a href="https://fortress.atlassian.net/browse/FC-22">We should be able to clear the cache through the API</a>
- <span class="subText">Created: 31/May/13 Updated: 20/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10910-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>There are some cases where we would like to clear all or one single cache. For instance, when running atomic tests, teh cache should be cleared <b>before</b> the test, or after the test.</p>
- <p>Currently, this is not possible.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10705">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10705">
- <td bgcolor="#ffffff">
- <p>I suggest to add :</p>
- <p> /**</p>
- <ul>
- <li>Clear all the caches<br/>
- */<br/>
- public void clearAll()
- {
- m_ehCacheImpl.clearAll();
- }</li>
- </ul>
- <p>in the CacheMgr class. That does the trick, and it does not expose the underlying EhCache instance.</p>
- </td>
- </tr>
- <tr id="comment-header-10706">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10706">
- <td bgcolor="#ffffff">
- <p>OK that is fine we can do it. But this property needs to be changed to true inside fortress.properties:</p>
- <ol>
- <li>If for any reason echcache must be DISABLED for DSD, make sure this parameter is set to 'true' which is the default. Otherwise performance penalty will be incurred during multi-role activations.<br/>
- disable.dsd.cache=false</li>
- </ol>
- <p>As part of the code change we will all this setting to be made through the build.properties.</p>
- </td>
- </tr>
- <tr id="comment-header-11309">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11309">
- <td bgcolor="#ffffff">
- <p>resolved</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-23 -->
-<!-- =========================================================================================================== -->
-<table id="FC-23" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-23] <a href="https://fortress.atlassian.net/browse/FC-23">Constraint not correctly processing delimiters</a>
- <span class="subText">Created: 03/Jun/13 Updated: 03/Jun/13 Due: 04/Jun/13 Resolved: 03/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10913-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The CUtil.setConstraint utility is not correctly processing the multi attribute string input. Modify string parsing to allow for empty subattributes within constraint data struct.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10708">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10708">
- <td bgcolor="#ffffff">
- <p>changed call to tokenizer to return delimiters as tokens:</p>
- <p>StringTokenizer tkn = new StringTokenizer(inputString, GlobalIds.DELIMITER, true);</p>
- <p>which enables the correct placement to be maintained - even with empty constraint sub attrs.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-24 -->
-<!-- =========================================================================================================== -->
-<table id="FC-24" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-24] <a href="https://fortress.atlassian.net/browse/FC-24">Strip name from pw policy DN for User inquiry</a>
- <span class="subText">Created: 03/Jun/13 Updated: 03/Jun/13 Due: 04/Jun/13 Resolved: 03/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10914-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>the pw policy subentry is stored in ldap as a DN. This creates problems with the client on inquiries. Strip the rDn from the dn and set that value in pwpolicy attribute on user entity during retrieval.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10710">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10710">
- <td bgcolor="#ffffff">
- <p>strip rDN from policy DN before loading into entity and returning to caller.</p>
- <p> String szPolicy = getAttribute(le, OPENLDAP_POLICY_SUBENTRY);<br/>
- if(VUtil.isNotNullOrEmpty(szPolicy))</p>
- {
- entity.setPwPolicy(getRdn(szPolicy));
- }
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-25 -->
-<!-- =========================================================================================================== -->
-<table id="FC-25" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-25] <a href="https://fortress.atlassian.net/browse/FC-25">Remove role assignment from UserDAO add and update</a>
- <span class="subText">Created: 04/Jun/13 Updated: 17/Jun/13 Due: 05/Jun/13 Resolved: 17/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10915-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Fortress role assignments effect both user and role entities. The UserDAO only changes user entity and does not update role. This leaves role assignment in inconsistent state. Remove capability to assign roles from add/update user and only allow in assignuser.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-26 -->
-<!-- =========================================================================================================== -->
-<table id="FC-26" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-26] <a href="https://fortress.atlassian.net/browse/FC-26">Cleanup test data</a>
- <span class="subText">Created: 05/Jun/13 Updated: 17/Jun/13 Due: 05/Jun/13 Resolved: 17/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10917-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>cleanup test data</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-27 -->
-<!-- =========================================================================================================== -->
-<table id="FC-27" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-27] <a href="https://fortress.atlassian.net/browse/FC-27">Rename constant for user policy violation</a>
- <span class="subText">Created: 06/Jun/13 Updated: 17/Jun/13 Due: 06/Jun/13 Resolved: 17/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10918-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>rename constant for user system policy violation.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-28 -->
-<!-- =========================================================================================================== -->
-<table id="FC-28" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-28] <a href="https://fortress.atlassian.net/browse/FC-28">ReviewMgr - Add search SDSets by name</a>
- <span class="subText">Created: 13/Jun/13 Updated: 17/Jun/13 Resolved: 17/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-10946-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Commander need ability to search SDSets by name.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-29 -->
-<!-- =========================================================================================================== -->
-<table id="FC-29" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-29] <a href="https://fortress.atlassian.net/browse/FC-29">Add jpeg photo to User</a>
- <span class="subText">Created: 17/Jun/13 Updated: 17/Jun/13 Resolved: 17/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add jpeg photo to userdao</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-30 -->
-<!-- =========================================================================================================== -->
-<table id="FC-30" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-30] <a href="https://fortress.atlassian.net/browse/FC-30">AdminMgr Update S/DSD method</a>
- <span class="subText">Created: 25/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11004-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/EN-3"><strike>EN-3</strike></a></td>
- <td>AdminMgr Update S/DSD method</td>
- <td>Resolved</td>
- </tr>
-</table>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>needed for commander</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-31 -->
-<!-- =========================================================================================================== -->
-<table id="FC-31" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-31] <a href="https://fortress.atlassian.net/browse/FC-31">Add ApacheDS regression tests</a>
- <span class="subText">Created: 26/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11005-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add Apache DS regression junit test suite</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-32 -->
-<!-- =========================================================================================================== -->
-<table id="FC-32" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-32] <a href="https://fortress.atlassian.net/browse/FC-32">Bump up heap space on fortress junit tests</a>
- <span class="subText">Created: 27/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11006-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>bump up heap allocation to 1024M</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-33 -->
-<!-- =========================================================================================================== -->
-<table id="FC-33" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-33] <a href="https://fortress.atlassian.net/browse/FC-33">Add JMX counters to Fortress DAO calls</a>
- <span class="subText">Created: 27/Jun/13 Updated: 28/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11007-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add counter to lower level fortress dao utils to measure the numbers of the various ldap ops - add, mod, delete, search, etc</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-34 -->
-<!-- =========================================================================================================== -->
-<table id="FC-34" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-34] <a href="https://fortress.atlassian.net/browse/FC-34">Replace the use of Log4j by SLF4j</a>
- <span class="subText">Created: 28/Jun/13 Updated: 30/Jun/13 Resolved: 30/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11009-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The idea is to abstract the lib from the logger used by the application that embeds Fortress.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10801">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">28/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10801">
- <td bgcolor="#ffffff">
- <p>There are a few steps to migrate the logger usage :</p>
- <ul class="alternate" type="square">
- <li>first of all, add the dependencies on the SLFJ jars in build.xml/pom.xml</li>
- <li>Replace the folowing line :<br/>
- private static final Logger log = Logger.getLogger(CLS_NM);<br/>
- by<br/>
- private static final Logger LOG = LoggerFactory.getLogger( CLS_NM );</li>
- </ul>
- <p>(note that as its a static final field, it's uppercase)</p>
- <ul class="alternate" type="square">
- <li>Add the following imports, in place of the Log4j imports :<br/>
- import org.slf4j.Logger;<br/>
- import org.slf4j.LoggerFactory;</li>
- </ul>
- <ul class="alternate" type="square">
- <li>At this point, this is pretty much done. One more step though : remove the CLS_NM constant, when it's not useful. That also means it has to be removed from the LOG.blah() calls.</li>
- </ul>
- <ul class="alternate" type="square">
- <li>Use the new syntax :<br/>
- LOG.debug( "this is a log : {}", the Log ); </li>
- </ul>
- </td>
- </tr>
- <tr id="comment-header-10802">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10802">
- <td bgcolor="#ffffff">
- <p>Removed log4j as compile dependency. Removed CLS_NM constant from log statements.</p>
- </td>
- </tr>
- <tr id="comment-header-10804">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">30/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10804">
- <td bgcolor="#ffffff">
- <p>Closing issue, still need to go with new log syntax.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-35 -->
-<!-- =========================================================================================================== -->
-<table id="FC-35" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-35] <a href="https://fortress.atlassian.net/browse/FC-35">Add toString() methods to classes containing data structures</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Aug/13 Resolved: 04/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC26</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Duplicate</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11010-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>It's convenient when debugging to have the classes to implement toString()</p>
-<br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10803">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">29/Jun/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10803">
- <td bgcolor="#ffffff">
- <p>The following classes have to be modified :</p>
- <ul class="alternate" type="square">
- <li>rbac.Address</li>
- <li>rbac.AdminRole</li>
- <li>rbac.AdminRoleRelationship</li>
- <li>rbac.Bind</li>
- <li>rbac.Context</li>
- <li>rbac.Hier</li>
- <li>rbac.Mod</li>
- <li>rbac.OrgUnit</li>
- <li>rbac.OrgUnitRelationship</li>
- <li>rbac.PermGrant</li>
- <li>rbac.Permission</li>
- <li>rbac.PermObj</li>
- <li>rbac.Props</li>
- <li>rbac.PwPolicy</li>
- <li>rbac.Relationship</li>
- <li>rbac.Role</li>
- <li>rbac.RolePerm</li>
- <li>rbac.RoleRelationship</li>
- <li>rbac.SDSet</li>
- <li>rbac.Session</li>
- <li>rbac.User</li>
- <li>rbac.UserAdminRole</li>
- <li>rbac.UserAudit</li>
- <li>rbac.UserRole</li>
- </ul>
- </td>
- </tr>
- <tr id="comment-header-10901">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">02/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10901">
- <td bgcolor="#ffffff">
- <p>The User class already has a toString() method which simply returns the User's userId field.</p>
- <p>Is it intended, or could we improve what it produces ?</p>
- </td>
- </tr>
- <tr id="comment-header-10902">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">02/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10902">
- <td bgcolor="#ffffff">
- <p>it can be improved. are you suggesting all of the fields from user comprise tostring?</p>
- </td>
- </tr>
- <tr id="comment-header-10903">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10903">
- <td bgcolor="#ffffff">
- <p>That's an option...</p>
- </td>
- </tr>
- <tr id="comment-header-10904">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10904">
- <td bgcolor="#ffffff">
- <p>There is already an issue for that : <a href="https://fortress.atlassian.net/browse/FC-19" title="Add toString() methods for the base objects (Role, Permissions...)" class="issue-link" data-issue-key="FC-19">FC-19</a></p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-36 -->
-<!-- =========================================================================================================== -->
-<table id="FC-36" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-36] <a href="https://fortress.atlassian.net/browse/FC-36">Create sub-packages for DAO, POJOs, Process modules</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11011-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Break fortress modules in rbac package into separate packages.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-37 -->
-<!-- =========================================================================================================== -->
-<table id="FC-37" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-37] <a href="https://fortress.atlassian.net/browse/FC-37">Create sub-modules for REST, LDAP, API, CLI, CONFIG, Ant</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11012-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Break fortress core into multiple jars. One for CLI, Ant, Rest, etc</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-38 -->
-<!-- =========================================================================================================== -->
-<table id="FC-38" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-38] <a href="https://fortress.atlassian.net/browse/FC-38">Convert Config to non-singleton</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11013-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>This task is to determine how to convert the Fortress Config component to not be a singleton.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-39 -->
-<!-- =========================================================================================================== -->
-<table id="FC-3" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-39] <a href="https://fortress.atlassian.net/browse/FC-39">Mavenize Fortress Build</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11014-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Convert the build and packaging tasks to use Maven rather than Ant. Use maven for releasing source code from GIT. Automatic publish artifacts using Maven. </p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-40 -->
-<!-- =========================================================================================================== -->
-<table id="FC-40" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-40] <a href="https://fortress.atlassian.net/browse/FC-40">Configurable LDAP connection (network or direct)</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11015-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Convert the Fortress ldap connections to be over network or to use local mode.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-41 -->
-<!-- =========================================================================================================== -->
-<table id="FC-41" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-41] <a href="https://fortress.atlassian.net/browse/FC-41">Switch to Apache LDAP API</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11016-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Use Apache LDAP API for fortress. Daotutil should provide abstraction layer to use unbound or apache.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10905">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10905">
- <td bgcolor="#ffffff">
- <p>On progress...</p>
- <p>I'm currently able to add users using the Apache LDAP API.</p>
- <p>There is more to come.</p>
- </td>
- </tr>
- <tr id="comment-header-11308">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11308">
- <td bgcolor="#ffffff">
- <p>still experimental</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-42 -->
-<!-- =========================================================================================================== -->
-<table id="FC-42" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-42] <a href="https://fortress.atlassian.net/browse/FC-42">Add annotations to run OpenLDAP tests</a>
- <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11017-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Use annotations for OpenLDAP junit tests. Break the tests into standalone mode. Follow the apacheds model.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-43 -->
-<!-- =========================================================================================================== -->
-<table id="FC-43" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-43] <a href="https://fortress.atlassian.net/browse/FC-43">Switch to junit 4.11</a>
- <span class="subText">Created: 28/Jun/13 Updated: 01/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11018-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>fortress to use junit 4.11</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-10900">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">01/Jul/13</font>]</font></td>
- </tr>
- <tr id="comment-body-10900">
- <td bgcolor="#ffffff">
- <p>This version requires that you add a dependency on |hamcrest-core.jar|<br/>
- <<a href="http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.hamcrest%22%20AND%20a%3A%22hamcrest-core%22" class="external-link" rel="nofollow">http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.hamcrest%22%20AND%20a%3A%22hamcrest-core%22</a>><br/>
- (with ant, it has to be added to the classpath)</p>
- <p>See <a href="https://github.com/junit-team/junit/wiki/Download-and-Install" class="external-link" rel="nofollow">https://github.com/junit-team/junit/wiki/Download-and-Install</a></p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-44 -->
-<!-- =========================================================================================================== -->
-<table id="FC-44" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-44] <a href="https://fortress.atlassian.net/browse/FC-44">Fortress 1.0-RC27 Release</a>
- <span class="subText">Created: 30/Jun/13 Updated: 30/Jun/13 Resolved: 30/Jun/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11019-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>release 27</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-45 -->
-<!-- =========================================================================================================== -->
-<table id="FC-45" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-45] <a href="https://fortress.atlassian.net/browse/FC-45">Make the PasswordPolicy code to work with ApacheDS</a>
- <span class="subText">Created: 01/Jul/13 Updated: 01/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-46 -->
-<!-- =========================================================================================================== -->
-<table id="FC-46" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-46] <a href="https://fortress.atlassian.net/browse/FC-46">Add the missing serialVersionUID for Serializable classes</a>
- <span class="subText">Created: 01/Jul/13 Updated: 01/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11101-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-47 -->
-<!-- =========================================================================================================== -->
-<table id="FC-47" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-47] <a href="https://fortress.atlassian.net/browse/FC-47">Improve the way Factories create instances</a>
- <span class="subText">Created: 02/Jul/13 Updated: 02/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11102-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Currently, the various Mgr factories are creating instances for Mgr depending on the type of access we want (basically, direct access or via REST).</p>
- <p>We can imagine that we may have more kind of access in the future (remote, SOAP <del>yukkk</del>, ... )</p>
- <p>But in any case, I think we can simplify the way we create instances :</p>
- <p> accessClassName = AccessMgrImpl.class.getName();<br/>
- AccessMgr accessMgr = <br/>
- (AccessMgr)ClassUtil.createInstance(accessClassName);</p>
- <p>could be written :</p>
- <p> AccessMgr accessMgr = new AccessMgrImpl();</p>
- <p>We know everything about the class, and we don't even have to pull a constructor FQCN from the configuration, the only thing is that we will create a new instance depending on some configuration parameter.</p>
- <p>(this is of course when the config does not provide the class name to instanciate)</p>
- <p>I also have some concern about the fact that we may want to mix REST and other kind of access. Atm, either we have a REST access, or not, but it's global and can't be changed, as the IS_EST flag is static and final. Each context might access the Mgr in different ways (at least, this is my understanding, even if I'm pushing it a bit too far).</p>
- <p>Does it sound reasonnable ?</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-48 -->
-<!-- =========================================================================================================== -->
-<table id="FC-48" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-48] <a href="https://fortress.atlassian.net/browse/FC-48">UserDAO employeeType incorrectly mapped</a>
- <span class="subText">Created: 03/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11104-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>fix this code in UserDAO:</p>
- <p> final User update( User entity )</p>
- <p> if ( VUtil.isNotNullOrEmpty( entity.getEmployeeType() ) )</p>
- {
- LDAPAttribute employeeType = new LDAPAttribute( EMPLOYEE_TYPE, entity.getSn() );
- mods.add( LDAPModification.REPLACE, employeeType );
- }
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11307">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11307">
- <td bgcolor="#ffffff">
- <p>fixed</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-49 -->
-<!-- =========================================================================================================== -->
-<table id="FC-49" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-49] <a href="https://fortress.atlassian.net/browse/FC-49">Make it possible to programatically configure Fortress</a>
- <span class="subText">Created: 04/Jul/13 Updated: 04/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11106-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Currently, all the fortress configuration is done though a configuration file. </p>
- <p>It would be very convenient to be able to configure Fortress without depending on a configuration file.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-50 -->
-<!-- =========================================================================================================== -->
-<table id="FC-50" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-50] <a href="https://fortress.atlassian.net/browse/FC-50">UserDAO loadUserRoles & loadUserAdminRoles not properly setting USER_ASSIGN attribute</a>
- <span class="subText">Created: 04/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11107-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>these methods:<br/>
- private void loadUserRoles( List<UserRole> list, LDAPModificationSet mods )<br/>
- private void loadUserAdminRoles( List<UserAdminRole> list, LDAPModificationSet mods )</p>
- <p>need this added:</p>
- <p> if ( attr != null )</p>
- {
- mods.add( LDAPModification.REPLACE, attr );
- add this-> mods.add( LDAPModification.REPLACE, attrNm );
- }
- <p> }<br/>
- }</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11305">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11305">
- <td bgcolor="#ffffff">
- <p>done</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-51 -->
-<!-- =========================================================================================================== -->
-<table id="FC-51" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-51] <a href="https://fortress.atlassian.net/browse/FC-51">RoleDAO update should not update role occupants</a>
- <span class="subText">Created: 04/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11108-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Do not update roleOccupants attribute in RoleDAO.update method</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11304">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11304">
- <td bgcolor="#ffffff">
- <p>removed occupant update from method</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-52 -->
-<!-- =========================================================================================================== -->
-<table id="FC-52" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-52] <a href="https://fortress.atlassian.net/browse/FC-52">Create unit tests for DAOs</a>
- <span class="subText">Created: 05/Jul/13 Updated: 05/Jul/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11109-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>We are currently testing the API though the existing managers. It would be good to also test the DAO themselves, as we may have different implementations.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-53 -->
-<!-- =========================================================================================================== -->
-<table id="FC-53" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-53] <a href="https://fortress.atlassian.net/browse/FC-53">Add a way to use different DAO implementations</a>
- <span class="subText">Created: 05/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11110-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>We currently have one single implementation for the DAOs, using the UnboundID API. It would be interesting to have a way to instanciate some other implementation (like one using the Apache LDAP API, or a relational database)</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11303">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11303">
- <td bgcolor="#ffffff">
- <p>added dao interface</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-54 -->
-<!-- =========================================================================================================== -->
-<table id="FC-54" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-54] <a href="https://fortress.atlassian.net/browse/FC-54">Upgrade default OpenLDAP installation to 2.4.35-2</a>
- <span class="subText">Created: 05/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11111-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>flip switch in build.properties to 2.4.35-2</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11302">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11302">
- <td bgcolor="#ffffff">
- <p>done</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-56 -->
-<!-- =========================================================================================================== -->
-<table id="FC-56" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-56] <a href="https://fortress.atlassian.net/browse/FC-56">PermDAO update incorrectly processes admin roles</a>
- <span class="subText">Created: 29/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11501-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The PermDAO updatePerm incorrectly process administrative roles. For example it validates against the non admin role tree and causes this exception when roles is non-null:</p>
- <p>SecurityException=us.jts.fortress.FinderException: getRole Obj COULD NOT FIND ENTRY for dn cn=oamAdmin8,ou=Roles,ou=RBAC,dc=jts,dc=us</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11301">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11301">
- <td bgcolor="#ffffff">
- <p>This was fixed by adding code to PermP validate to check for admin role presence.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-57 -->
-<!-- =========================================================================================================== -->
-<table id="FC-57" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-57] <a href="https://fortress.atlassian.net/browse/FC-57">User Add NPE when ou is null</a>
- <span class="subText">Created: 04/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11506-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The function should throw a checked security exceptoin</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11306">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11306">
- <td bgcolor="#ffffff">
- <p>add null check in userp.validation method</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-59 -->
-<!-- =========================================================================================================== -->
-<table id="FC-59" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-59] <a href="https://fortress.atlassian.net/browse/FC-59">add method DelAccessMgr.sessionPermissions</a>
- <span class="subText">Created: 04/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11509-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>DelAccessMgr needs sessionPermissions method</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11300">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11300">
- <td bgcolor="#ffffff">
- <p>This was resolved by using the isAdmin flag in permission and passing it down into PermDAO.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-60 -->
-<!-- =========================================================================================================== -->
-<table id="FC-60" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-60] <a href="https://fortress.atlassian.net/browse/FC-60">Delegated Policy Load</a>
- <span class="subText">Created: 19/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3"><p>all</p></td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add load script for delegated policy. Change fortress junit test to work if delegated policy is loaded beforehand.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-11310">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
- </tr>
- <tr id="comment-body-11310">
- <td bgcolor="#ffffff">
- <p>script name is DelegatedAdminManagerLoad.xml. Code added to junit tests to work if this policy has been preloaded</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-61 -->
-<!-- =========================================================================================================== -->
-<table id="FC-61" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-61] <a href="https://fortress.atlassian.net/browse/FC-61">User incorrect mapping of displayName attribute</a>
- <span class="subText">Created: 21/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC27</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11801-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/COM-45"><strike>COM-45</strike></a></td>
- <td>User Detail Commit is mapping userId ...</td>
- <td>Resolved</td>
- </tr>
-</table>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>correctly map user displayName to displayName in fortress</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-63 -->
-<!-- =========================================================================================================== -->
-<table id="FC-63" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-63] <a href="https://fortress.atlassian.net/browse/FC-63">Add REST DelegatedAdminMgr.sessionPermissions</a>
- <span class="subText">Created: 26/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>implement this method:</p>
- <p>Caused by: java.lang.UnsupportedOperationException<br/>
- at us.jts.fortress.rest.DelAccessMgrRestImpl.sessionPermissions(DelAccessMgrRestImpl.java:384)</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-64 -->
-<!-- =========================================================================================================== -->
-<table id="FC-64" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-64] <a href="https://fortress.atlassian.net/browse/FC-64">RC29 Release</a>
- <span class="subText">Created: 28/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-11905-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-65 -->
-<!-- =========================================================================================================== -->
-<table id="FC-65" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-65] <a href="https://fortress.atlassian.net/browse/FC-65">createSession with Roles improperly loads activated roles into the session</a>
- <span class="subText">Created: 17/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>during the role activation step the user role selection is improperly loaded into the session.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-66 -->
-<!-- =========================================================================================================== -->
-<table id="FC-66" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-66] <a href="https://fortress.atlassian.net/browse/FC-66">SoD add type DSD fails for Ant admin</a>
- <span class="subText">Created: 17/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12101-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>to fox:<br/>
- if(sd.getType() == SDSet.SDType.STATIC)<br/>
- adminMgr.createSsdSet( sd );<br/>
- else<br/>
- adminMgr.createDsdSet( sd );</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-67 -->
-<!-- =========================================================================================================== -->
-<table id="FC-67" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-67] <a href="https://fortress.atlassian.net/browse/FC-67">Add User properties to Ant admin</a>
- <span class="subText">Created: 18/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC29</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12102-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add the ability to set user properties in ant:</p>
- <p><user ... userProps="fortressdemo1:ROLE_TEST1"/></p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-68 -->
-<!-- =========================================================================================================== -->
-<table id="FC-68" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-68] <a href="https://fortress.atlassian.net/browse/FC-68">RC30 Release</a>
- <span class="subText">Created: 19/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12103-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>all</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-69 -->
-<!-- =========================================================================================================== -->
-<table id="FC-69" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-69] <a href="https://fortress.atlassian.net/browse/FC-69">Use global class.path in ant load scripts</a>
- <span class="subText">Created: 01/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>convert load scripts to use global classpath set in the build.xml rather than from local properties in the ant build file.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-70 -->
-<!-- =========================================================================================================== -->
-<table id="FC-70" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-70] <a href="https://fortress.atlassian.net/browse/FC-70">Improvements to Apache LDAP client API usage</a>
- <span class="subText">Created: 01/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Minor bug fixes and improvements in configuration of apache ldap api usage.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-71 -->
-<!-- =========================================================================================================== -->
-<table id="FC-71" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-71] <a href="https://fortress.atlassian.net/browse/FC-71">Enmasse & Commander demo on windows platform</a>
- <span class="subText">Created: 05/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12209-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add windows support for commander and enmasse demos</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-72 -->
-<!-- =========================================================================================================== -->
-<table id="FC-72" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-72] <a href="https://fortress.atlassian.net/browse/FC-72">RC31 Release</a>
- <span class="subText">Created: 05/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC30</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The two improvements made:</p>
- <p>1. minor bug fixes to enable the apache ldap api to work correctly</p>
- <p>2. tweaks to enable win platform support on enmasse & commander demo web applications</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-73 -->
-<!-- =========================================================================================================== -->
-<table id="FC-73" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-73] <a href="https://fortress.atlassian.net/browse/FC-73">Add debug mode for Ant admin scripts</a>
- <span class="subText">Created: 13/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12215-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add switch to allow xml load utility to be attached by remote debugger</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-74 -->
-<!-- =========================================================================================================== -->
-<table id="FC-74" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-74] <a href="https://fortress.atlassian.net/browse/FC-74">Pass warnings in session for role constraint and pw policy violations</a>
- <span class="subText">Created: 19/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12300-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-75 -->
-<!-- =========================================================================================================== -->
-<table id="FC-75" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-75] <a href="https://fortress.atlassian.net/browse/FC-75">Make jpgphoto xmltransient</a>
- <span class="subText">Created: 19/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12301-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>For now make the jpegphoto transient so that enmasse doesn't try to xml serialize.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-76 -->
-<!-- =========================================================================================================== -->
-<table id="FC-76" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-76] <a href="https://fortress.atlassian.net/browse/FC-76">Fix local.mode</a>
- <span class="subText">Created: 03/Nov/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12406-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>remove local.mode from the resolve target.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-77 -->
-<!-- =========================================================================================================== -->
-<table id="FC-77" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-77] <a href="https://fortress.atlassian.net/browse/FC-77">RC32 Release</a>
- <span class="subText">Created: 03/Nov/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC31</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12409-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-78 -->
-<!-- =========================================================================================================== -->
-<table id="FC-78" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-78] <a href="https://fortress.atlassian.net/browse/FC-78">Remove extra attribute values from constraints</a>
- <span class="subText">Created: 07/Nov/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32,1.0-RC33</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12501-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>remove 'none', 'all' and any other values from constraints. Use empty value to indicate that constraint is not enforced.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-79 -->
-<!-- =========================================================================================================== -->
-<table id="FC-79" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-79] <a href="https://fortress.atlassian.net/browse/FC-79">RC32 Cleanup</a>
- <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12600-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-80 -->
-<!-- =========================================================================================================== -->
-<table id="FC-80" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-80] <a href="https://fortress.atlassian.net/browse/FC-80">Add tenant and thread IDs to log statement</a>
- <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12601-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add the thread id to log4j messages. Add the tenant id to log statements in junit output.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-81 -->
-<!-- =========================================================================================================== -->
-<table id="FC-81" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-81] <a href="https://fortress.atlassian.net/browse/FC-81">addActiveRole not validating temporal constraints</a>
- <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12602-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
- <br/>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The addActiveRole method is not checking time/date constraints on roles being activated into session.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-82 -->
-<!-- =========================================================================================================== -->
-<table id="FC-82" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-82] <a href="https://fortress.atlassian.net/browse/FC-82">User-Role Temporal constraints improperly parsing raw data</a>
- <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12603-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>When user-role constraint data is being converted from raw (as stored in ldap) to entity format it is not handling empty params correctly. Change the way the string is being parsed in order to handle empty values.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-83 -->
-<!-- =========================================================================================================== -->
-<table id="FC-83" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-83] <a href="https://fortress.atlassian.net/browse/FC-83">Add Multitenant Demo</a>
- <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12604-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add new ant & bash scripts to kick off multi-tenant batch test/demo.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-84 -->
-<!-- =========================================================================================================== -->
-<table id="FC-84" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-84] <a href="https://fortress.atlassian.net/browse/FC-84">Remove extraneous admin bind during user authN</a>
- <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12605-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The connection pool fortress uses ConnectionPool class from Mozilla java ldap sdk. The code performs a bind on connections that are being put back in the pool (ostensibly to clear the previous credentials). This creates unnecessary extra bind during user authentication flow. </p>
- <p>Change the ConnectionPool class to not bind before returning to pool</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-85 -->
-<!-- =========================================================================================================== -->
-<table id="FC-85" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-85] <a href="https://fortress.atlassian.net/browse/FC-85">Add jpegphoto to ant ldap load util</a>
- <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12606-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add jpeg photo to ant load utility.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-86 -->
-<!-- =========================================================================================================== -->
-<table id="FC-86" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-86] <a href="https://fortress.atlassian.net/browse/FC-86">RC33 Release</a>
- <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC32</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC33</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12608-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-87 -->
-<!-- =========================================================================================================== -->
-<table id="FC-87" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-87] <a href="https://fortress.atlassian.net/browse/FC-87">Change user dao bind error mapping</a>
- <span class="subText">Created: 18/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>change error mapping on bind to use </p>
- <p> /**</p>
- <ul>
- <li>The User bind operation failed on server.<br/>
- */<br/>
- public final static int USER_BIND_FAILED = 1037;</li>
- </ul>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-88 -->
-<!-- =========================================================================================================== -->
-<table id="FC-88" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-88] <a href="https://fortress.atlassian.net/browse/FC-88">ARBAC Role Assign/Deassign raw data mapping error</a>
- <span class="subText">Created: 20/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12702-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Problem description submitted via the fortress mailing list. Issue resolved by fixing UserAdminRole.getRawData()</p>
- <p>Assign A user to a role-- Works fine<br/>
- Call Deassign User from a role - Leads to exception the trace is mentioned as follows</p>
- <p>LDAPException(resultCode=16 (no such attribute), errorMessage='modify/delete: ftARC: no such value')<br/>
- at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br/>
- at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br/>
- at us.jts.fortress.ldap.UnboundIdDataProvider.modify(UnboundIdDataProvider.java:241)<br/>
- at us.jts.fortress.rbac.dao.unboundid.UserDAO.deassign(UserDAO.java:1683)<br/>
- at us.jts.fortress.rbac.UserP.deassign(UserP.java:728)<br/>
- at us.jts.fortress.rbac.DelAdminMgrImpl.deassignUser(DelAdminMgrImpl.java:296)</p>
- <p>Things i have verified <br/>
- 1. User Exists <br/>
- 2. Role Exists<br/>
- 3. User is a role occupant of the mentioned role.</p>
- <p>Any clues as to why this is happening. </p>
- <p>Relevant piece of code.<br/>
- //assign user<br/>
- delAdminMgr = createAndGetDelAdminMgr();<br/>
- UserAdminRole role = new UserAdminRole(userName, roleName);<br/>
- try </p>
- {
- delAdminMgr.assignUser(role);
- }
- <p> catch (SecurityException e) {</p>
- <p>}<br/>
- //remove user </p>
- <p> delAdminMgr = createAndGetDelAdminMgr();<br/>
- UserAdminRole role = new UserAdminRole(userName, roleName);<br/>
- try </p>
- {
- delAdminMgr.deassignUser(role);
- }
- <p> catch (SecurityException e) {</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-89 -->
-<!-- =========================================================================================================== -->
-<table id="FC-89" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-89] <a href="https://fortress.atlassian.net/browse/FC-89">PoolMgr use of uninitialized variables</a>
- <span class="subText">Created: 20/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12703-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Correct PoolMgr usage of uninitialized variables:</p>
- <p> private static String hostName;<br/>
- private static int portId;</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-90 -->
-<!-- =========================================================================================================== -->
-<table id="FC-90" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-90] <a href="https://fortress.atlassian.net/browse/FC-90">Administrative Permissions and Objects in search result set admin flag not set on return</a>
- <span class="subText">Created: 28/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12705-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The isAdmin flag must be set on administrative permissions and objects returned from search.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-91 -->
-<!-- =========================================================================================================== -->
-<table id="FC-91" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-91] <a href="https://fortress.atlassian.net/browse/FC-91">Update copyright to 2014</a>
- <span class="subText">Created: 28/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12706-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-92 -->
-<!-- =========================================================================================================== -->
-<table id="FC-92" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-92] <a href="https://fortress.atlassian.net/browse/FC-92">Simplify fortress openldap acls</a>
- <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12710-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Remove the following unnecessary ACL's from OL config file:</p>
- <ol>
- <li>
- <ol>
- <li>
- <ol>
- <li>
- Allow users to read permission records (needed for OAM authorization):<br/>
- access to dn.sub="ou=Permissions,ou=RBAC,@SUFFIX@" by users read<br/>
- access to dn.sub="ou=AdminPerms,ou=ARBAC,@SUFFIX@" by users read
- </li>
- </ol>
- </li>
- </ol>
- </li>
- </ol>
- <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client123,@SUFFIX@" by users read<br/>
- access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client123,@SUFFIX@" by users read</p>
- <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client456,@SUFFIX@" by users read<br/>
- access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client456,@SUFFIX@" by users read</p>
- <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client789,@SUFFIX@" by users read<br/>
- access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client789,@SUFFIX@" by users read</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-93 -->
-<!-- =========================================================================================================== -->
-<table id="FC-93" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-93] <a href="https://fortress.atlassian.net/browse/FC-93">Factory createInstance for default HOME context</a>
- <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12711-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add simplified methods for constructing fortress managers that do not require passing HOME tenant. This is useful when multitenancy is not needed.</p>
- <p>for example:</p>
- <p> /**</p>
- <ul>
- <li>
- Create and return a reference to
- {@link us.jts.fortress.ReviewMgr} object using HOME context.<br/>
- *<br/>
- * @return instance of {@link us.jts.fortress.ReviewMgr}
- <p>.</p>
- </li>
- <li>
- @throws SecurityException in the event of failure during instantiation.<br/>
- */<br/>
- public static us.jts.fortress.ReviewMgr createInstance()<br/>
- throws SecurityException
- {
- return createInstance( GlobalIds.HOME );
- }
- </li>
- </ul>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-94 -->
-<!-- =========================================================================================================== -->
-<table id="FC-94" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-94] <a href="https://fortress.atlassian.net/browse/FC-94">RC34 Release</a>
- <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC33</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12713-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-95 -->
-<!-- =========================================================================================================== -->
-<table id="FC-95" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-95] <a href="https://fortress.atlassian.net/browse/FC-95">PermDAO does not set DN on returned entity for Add/Update operations</a>
- <span class="subText">Created: 31/Dec/13 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12716-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Set DN to returned entity for add, update operations in PermDAO</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-96 -->
-<!-- =========================================================================================================== -->
-<table id="FC-96" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-96] <a href="https://fortress.atlassian.net/browse/FC-96">RC34 Cleanup</a>
- <span class="subText">Created: 31/Dec/13 Updated: 31/Dec/13 Resolved: 31/Dec/13</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12717-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>update ivy xml to include the 34 released artifiacts</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-97 -->
-<!-- =========================================================================================================== -->
-<table id="FC-97" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-97] <a href="https://fortress.atlassian.net/browse/FC-97">Support 3 part domain component for suffix</a>
- <span class="subText">Created: 19/Jan/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-12900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add support for 3 part suffix - i.e. - dc=name1, dc=name2, dc=org</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-98 -->
-<!-- =========================================================================================================== -->
-<table id="FC-98" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-98] <a href="https://fortress.atlassian.net/browse/FC-98">Change ACL to disallow user from all but user password</a>
- <span class="subText">Created: 24/Jan/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The ACL setting in slapd.conf for user is currently defined:<br/>
- access to attrs=userpassword,ftModCode,ftModId,ftModifier<br/>
- by self write<br/>
- by * auth</p>
- <p>change to:<br/>
- access to attrs=userpassword<br/>
- by self write<br/>
- by * auth</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-99 -->
-<!-- =========================================================================================================== -->
-<table id="FC-99" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-99] <a href="https://fortress.atlassian.net/browse/FC-99">Update comments on init-slapd ant target</a>
- <span class="subText">Created: 08/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
- <td bgcolor="#ffffff" valign="top" colspan="3">
- <p>Provide detailed comments on ant init-slapd target.</p>
- </td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-100 -->
-<!-- =========================================================================================================== -->
-<table id="FC-100" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-100] <a href="https://fortress.atlassian.net/browse/FC-100">Store JAXB context in cache</a>
- <span class="subText">Created: 10/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Utilize cache for JAXB context for improved performance.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-101 -->
-<!-- =========================================================================================================== -->
-<table id="FC-101" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-101] <a href="https://fortress.atlassian.net/browse/FC-101">Integrate RBAC Accelerator Overlay</a>
- <span class="subText">Created: 18/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Integrate RBAC Accelerator Overlay into Fortress</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-102 -->
-<!-- =========================================================================================================== -->
-<table id="FC-102" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-102] <a href="https://fortress.atlassian.net/browse/FC-102">Normalize permission attributes</a>
- <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13207-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/COM-91"><strike>COM-91</strike></a></td>
- <td>Normalize permission attributes</td>
- <td>Resolved</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<br/>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Change perm entities to use standardized attribute names for:<br/>
- objName, objId</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-103 -->
-<!-- =========================================================================================================== -->
-<table id="FC-103" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-103] <a href="https://fortress.atlassian.net/browse/FC-103">Fix parsing of Admin Role raw data</a>
- <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13208-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Fix Admin Role parsing alignment issue with constraint raw data.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-104 -->
-<!-- =========================================================================================================== -->
-<table id="FC-104" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-104] <a href="https://fortress.atlassian.net/browse/FC-104">RC35 Release</a>
- <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC34</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>RC35 Release</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-105 -->
-<!-- =========================================================================================================== -->
-<table id="FC-105" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-105] <a href="https://fortress.atlassian.net/browse/FC-105">RC35 Cleanup</a>
- <span class="subText">Created: 22/Feb/14 Updated: 28/Feb/14 Resolved: 28/Feb/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13215-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Update ivy xml to include the RC35 artifacts. Update build properties to include latest symas openldap bulds.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-106 -->
-<!-- =========================================================================================================== -->
-<table id="FC-106" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-106] <a href="https://fortress.atlassian.net/browse/FC-106">Warning class needs to implement Serializable</a>
- <span class="subText">Created: 20/Mar/14 Updated: 20/Mar/14 Resolved: 20/Mar/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13500-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>This is needed for Fortress session serialization.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-107 -->
-<!-- =========================================================================================================== -->
-<table id="FC-107" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-107] <a href="https://fortress.atlassian.net/browse/FC-107">Some tests are failing with JAVA 8 (due to the Map order being different)</a>
- <span class="subText">Created: 23/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Blocker</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>When running the tests with Java 8 instead of Java 7, we get a few errors, which boil down to some Map being ordered in a different way in Java 8.</p>
- <p>In any case, no assumption should be made on a Map ordering, so this is clearly a bug that is likely to happen in the near future.</p>
- <p>The failing test is in FortressJUnitApachedsTest.testAddActiveRole</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-12000">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">23/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12000">
- <td bgcolor="#ffffff">
- <p>More info:</p>
- <p>This test case fails:<br/>
- assignUsersSSD( "ASGN-USRS_SSDT6B TU11 SSD_T6_B", UserTestData.USERS_TU11_SSD_HIER, RoleTestData.SSD_T6_B );</p>
- <p>The following data entries correspond to what should be present inside SdUtil.validateSSD:</p>
- <p>User</p>
- {userId='jtsTU11User3', internalId='null', roles=null, adminRoles=null, pwPolicy='null', cn='null', sn='null', dn='null', ou='null', description='null', beginTime='null', endTime='null', beginDate='null', endDate='null', beginLockDate='null', endLockDate='null', dayMask='null', name='null', employeeType='null', title='null', timeout=0, reset=false, locked=false, system=null, props=us.jts.fortress.rbac.Props@42ebaace, address=null, phones=null, mobiles=null, emails=null}
- <p>RoleoamT13SSD10, date : <null, null>, time : <null, null>, lock date : <null, null>, timeout : 0, daymask : null</p>
- <p>Set<String> rls = rMgr.authorizedRoles(user);<br/>
- oamT13SSD1</p>
- <p>List<SDSet> ssdSets = getSsdCache(role.getName(), user.getContextId());<br/>
- oamT6Ssd1</p>
- <p>Set<String> map = ssd.getMembers();<br/>
- oamT13SSD1, oamT13SSD6, oamT13SSD9</p>
- <p>First time through this should throw an exception:</p>
- <p> if (map.contains(authRole))<br/>
- {<br/>
- matchCount++;<br/>
- // does the match count exceed the cardinality allowed for this particular SSD set?<br/>
- if (matchCount >= ssd.getCardinality() - 1)</p>
- {
- String error = "validateSSD new role [" + role.getName() + "] validates SSD Set Name:" + ssd.getName() + " Cardinality:" + ssd.getCardinality();
- throw new SecurityException(GlobalErrIds.SSD_VALIDATION_FAILED, error);
- }
- <p> }</p>
- <p>This is what is present in Java 8 env:</p>
- <p>the map contains oamT13SSD1, oamT13SSD6, oamT13SSD9<br/>
- the authRole is OAMT13SSD4, which is upper case</p>
- <p>for some reason the call to Set<String> rls = rMgr.authorizedRoles(user);</p>
- <p>returns OAMT13SSD4 instead of oamT13SSD1</p>
- </td>
- </tr>
- <tr id="comment-header-12001">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">23/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12001">
- <td bgcolor="#ffffff">
- <p>In Java 7, the call to Set<String> rls = rMgr.authorizedRoles(user); returns oamT13SSD1<br/>
- In Java 8, the call to Set<String> rls = rMgr.authorizedRoles(user); returns OAMT13SSD4, oamT13SSD5</p>
- <p>There is something wrong in the way we build the authz roles. </p>
- </td>
- </tr>
- <tr id="comment-header-12009">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12009">
- <td bgcolor="#ffffff">
- <p>Test failures running the FortressJunitTest suite under Java 8</p>
- <p>junit Testcase: createSessionsDSD took 0.001 sec<br/>
- junit FAILED<br/>
- junit us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
- junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:602)<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:559)<br/>
- junit <br/>
- junit Testcase: createSessionsDSD took 0.001 sec<br/>
- junit FAILED<br/>
- junit us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
- junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:602)<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:559)<br/>
- junit <br/>
- junit Testcase: testSessionRole took 0.034 sec<br/>
- junit Testcase: testCheckAccess took 1.872 sec<br/>
- junit Testcase: testAddActiveRole took 0.217 sec<br/>
- junit FAILED<br/>
- junit us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD cardinality test failed user jtsTU8User1 role oamDSDR1 ssd oamDsdTest1 cardinality 2 count 1<br/>
- junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD cardinality test failed user jtsTU8User1 role oamDSDR1 ssd oamDsdTest1 cardinality 2 count 1<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD(AccessMgrImplTest.java:1216)<br/>
- junit at us.jts.fortress.rbac.AccessMgrImplTest.testAddActiveRole(AccessMgrImplTest.java:983)<br/>
- junit <br/>
- junit Testcase: testDropActiveRole took 0.03 sec</p>
- </td>
- </tr>
- <tr id="comment-header-12010">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12010">
- <td bgcolor="#ffffff">
- <p>Problem 1:</p>
- <p>The hierarchical SSD test case depended on a faulty test dataset:</p>
- {
- "oamT6Ssd3", /* NAME_COL */
- "Test Case T6B", /* DESC_COL */
- "2", /* CARDINALITY */
- "oamT13SSD10,oamT13SSD5,oamT13SSD1", /* RELATIONSHIP_COL */}
- <p> };</p>
- <p>The test case iterates on roles in relationship col and depends on assignment of 2nd role in set to fail due to SSD constraint. There is problem in dataset because only two of the three roles listed are constrained. The 3rd one (oamT13SS5) is OK. This problem was masked because previously (before Java 8) the roles were iterated in this order:<br/>
- <a href="https://fortress.atlassian.net/wiki/display/FC/oamT13SSD1%2C+oamT13SSD10%2C+oamT13SSD5">oamT13SSD1, oamT13SSD10, oamT13SSD5</a></p>
- <p>When it hit the 2nd role, oamT13SSD10 an SSD constraint would throw an exception on assignUser which is the expected condition for this test case.</p>
- <p>Under Java 8 the list is returned in this order:<br/>
- <a href="https://fortress.atlassian.net/wiki/display/FC/oamT13SSD5%2C+oamT13SSD10%2C+oamT13SSD1">oamT13SSD5, oamT13SSD10, oamT13SSD1</a></p>
- <p>Because oamT13SSD5 isn't a member of the SSD dataset, when it hits the 2nd role oamT13SSD10, an exception is not thrown and the test case fails.</p>
- <p>Because the members of SSD are a set, and a set is by its very definition an unordered list of elements, we cannot predetermine the order. This means every member must be in the SSD set (or inherited by a role in the SSD set). There is not a 3rd role that can be selected from the role test set that provides this condition.</p>
- <p>The workaround is to remove the 3rd role from the test data set which means only 2 roles will be returned, and since these two roles always satisfy the test case, it fixes the problem while maintaining the test conditions.</p>
- </td>
- </tr>
- <tr id="comment-header-12011">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">25/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12011">
- <td bgcolor="#ffffff">
- <p>similarly this test case:</p>
- <p> addActiveRolesDSD( "ADD-ACT-RLS-USRS_DSDT6B TU11 DSD_T6_B", UserTestData.USERS_TU11_SSD_HIER,<br/>
- RoleTestData.DSD_T6_D );</p>
- <p>was failing because this dataset was wrong but was masked because before java 7 returned in an order that ensured success due to mismatching role not getting called:</p>
- {
- "oamT6Dsd3", /* NAME_COL */
- "Test Case T6D", /* DESC_COL */
- "2", /* WORKS FOR ADD ACTIVE ROLE DSD TESTS */
- "oamT13DSD10,oamT13DSD5,oamT13DSD1", /* RELATIONSHIP_COL */
- }
- <p>change dataset to remove the role that does not violate constraint:</p>
- {
- "oamT6Dsd3", /* NAME_COL */
- "Test Case T6D", /* DESC_COL */
- "2", /* WORKS FOR ADD ACTIVE ROLE DSD TESTS */
- "oamT13DSD10,oamT13DSD1", /* RELATIONSHIP_COL */
- }
- <p>and test case passes under Java 8</p>
- </td>
- </tr>
- <tr id="comment-header-12012">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">25/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12012">
- <td bgcolor="#ffffff">
- <p>Excellent ! I would not be able to find the cause of those problems...</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-108 -->
-<!-- =========================================================================================================== -->
-<table id="FC-108" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-108] <a href="https://fortress.atlassian.net/browse/FC-108">Add RBAC Accelerator client to Fortress</a>
- <span class="subText">Created: 23/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13701-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add the Fortress Accelerator interface to Fortress so that it can call the extended LDAP operations for createSession, checkAccess, addActiveRole, etc.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-109 -->
-<!-- =========================================================================================================== -->
-<table id="FC-109" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-109] <a href="https://fortress.atlassian.net/browse/FC-109">Review the LOG statement for better performances</a>
- <span class="subText">Created: 24/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13702-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Currently, we have a lot of logs like :<br/>
- LOG.debug( "addOrgUnits ou <span class="error">[" + entity.getName() + "]</span> successful" );</p>
- <p>Even if the debug level is not set, a String will be constructed and the getName() method will be callse. We can have a more efficient LOG by using :</p>
- <p>LOG.debug( "addOrgUnits ou <a href="https://fortress.atlassian.net/wiki/display/FC/%7B%7D">{}</a> successful", entity.getName() );</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-12002">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12002">
- <td bgcolor="#ffffff">
- <p>Just to make sure I have this right, statements like this:<br/>
- LOG.debug( "toGraph child=" + child + ", parent=" + parent );</p>
- <p>will be changed to this:<br/>
- LOG.debug( "toGraph child={}, parent={}", child, parent );</p>
- </td>
- </tr>
- <tr id="comment-header-12003">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12003">
- <td bgcolor="#ffffff">
- <p>But what about this:</p>
- <p> LOG.info( "loadGraph initializing ADMIN ROLE context <span class="error">[" + inHier.getContextId() + "]</span>" );</p>
- <p>If log level is set to info, there isn't any value in converting to this:</p>
- <p> LOG.info( "loadGraph initializing ADMIN ROLE context {}", inHier.getContextId());</p>
- <p>right?</p>
- <p>or what about this one:</p>
- <p> LOG.debug( "toGraph" );</p>
- <p>any value in changing to:</p>
- <p> LOG.debug( "{}", "toGraph" );</p>
- </td>
- </tr>
- <tr id="comment-header-12004">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12004">
- <td bgcolor="#ffffff">
- <p>And one more.</p>
- <p>are there any benefit to doing this:</p>
- <p> if ( LOG.isDebugEnabled() )<br/>
- {<br/>
- LOG.debug( "{} controls{}={}", methodName, i, controlsi );<br/>
- }</p>
- <p>over simply this?</p>
- <p> LOG.debug( "{} controls{}</a>={}", methodName, i, controlsi );</p>
- </td>
- </tr>
- <tr id="comment-header-12005">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12005">
- <td bgcolor="#ffffff">
- <p>Each parameter is injected in {}, in the order they appear. The limit is 2.</p>
- <p>When you have no parameter, you can just do that :<br/>
- LOG.debug( "toGraph" ); </p>
- </td>
- </tr>
- <tr id="comment-header-12006">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12006">
- <td bgcolor="#ffffff">
- <p>In any case, it's still valuable to convert the LOG to use {}. If someone wants to disable info, why would we construct a String that will never be exposed ?</p>
- <p>When you have more than 2 parameters, you have no other ways than doing something like :</p>
- <p>if (LOG.isDebugEnabled()) </p>
- {
- LOG.debug( ... )
- }
- <p>This way, you avoid building the String if debug is disabled.</p>
- </td>
- </tr>
- <tr id="comment-header-12007">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12007">
- <td bgcolor="#ffffff">
- <p>Was concerned a limit of two and ran a test:</p>
- <p>Logger LOG = LoggerFactory.getLogger( FortressConsole.class );<br/>
- Logger LOG = LoggerFactory.getLogger( FortressConsole.class );<br/>
- LOG.info( "test log 1, 1:{}", "one" );<br/>
- LOG.info( "test log 2, 1:{}, 2:{}", "one", "two");<br/>
- LOG.info( "test log 3, 1:{}, 2:{}, 3:{}", "one", "two", "three");<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}", "one", "two", "three", "four" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}", "one", "two", "three", "four", "five" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}", "one", "two", "three", "four", "five", "six" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}", "one", "two", "three", "four", "five", "six", "seven" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}", "one", "two", "three", "four", "five", "six", "seven", "eight" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" );<br/>
- LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}, 10:{}", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" );</p>
- <p>produced the hoped for output:</p>
- <p>main (INFO ) test log 1, 1:one<br/>
- main (INFO ) test log 2, 1:one, 2:two<br/>
- main (INFO ) test log 3, 1:one, 2:two, 3:three<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine<br/>
- main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten</p>
- </td>
- </tr>
- <tr id="comment-header-12008">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font>
- </td>
- </tr>
- <tr id="comment-body-12008">
- <td bgcolor="#ffffff">
- <p>Ah, great, they fixed the limited number of arguments ! Probably because they now use the ellipsis notation, when they weren't in a previous version.</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-110 -->
-<!-- =========================================================================================================== -->
-<table id="FC-110" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-110] <a href="https://fortress.atlassian.net/browse/FC-110">ObjectClass description in Javadoc could use different tags</a>
- <span class="subText">Created: 26/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13703-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Many of the ObjectClass in Javadoc are using this formatting :</p>
- <ul>
- <li><ul></li>
- <li><li> ------------------------------------------</li>
- <li><li> <code>objectclass ( 1.3.6.1.4.1.38088.3.2</code></li>
- <li><li> <code>NAME 'ftProperties'</code></li>
- <li><li> <code>DESC 'Fortress Properties AUX Object Class'</code></li>
- <li><li> <code>AUXILIARY</code></li>
- <li><li> <code>MAY ( ftProps ) ) </code></li>
- <li><li> ------------------------------------------</li>
- <li></ul></li>
- </ul>
- <p>It results in a presentation which is not really what one would expect.</p>
- <p>It would be better to use <pre>...</pre> like this :</p>
- <ul>
- <li><pre></li>
- <li>------------------------------------------</li>
- <li>objectclass ( 1.3.6.1.4.1.38088.3.2</li>
- <li>NAME 'ftProperties'</li>
- <li>DESC 'Fortress Properties AUX Object Class'</li>
- <li>AUXILIARY</li>
- <li>MAY ( ftProps )</li>
- <li>)</li>
- <li>------------------------------------------</li>
- <li></pre></li>
- </ul>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-111 -->
-<!-- =========================================================================================================== -->
-<table id="FC-111" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-111] <a href="https://fortress.atlassian.net/browse/FC-111">The safeText method is probably not useful, and can be faster</a>
- <span class="subText">Created: 26/Apr/14 Updated: 29/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13704-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>When we want to validate an entity before injecting it in the server, we call the RegExUtil.safeText() method.</p>
- <p>It's checking something the server will already check (each value injected in the server will be controlled). Of course, we can set limits like the max length, but this can be done when defining the AttributeType (using the </p>
- {NNN}
- <p> notation).</p>
- <p>Otherwise, the way the regexp is evaluated is costly : we compile the gexep every time, when it could be done only once.</p>
- <p> Pattern safeTextPattern = Pattern.compile(safeTextPatternStr);</p>
- <p>can be done globally.</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-12013">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12013">
- <td bgcolor="#ffffff">
- <p>When I move to static</p>
- <p> Pattern safeTextPattern = Pattern.compile(safeTextPatternStr);</p>
- <p>Get this exception at runtime. Not opposed to moving away from regx to attribute type notation. How would that work here?</p>
- <p>nt] <br/>
- startAnt BUILD FAILED<br/>
- startAnt /home/smckinn/GIT/fortressDev/openldap-fortress-core/ldap/setup/refreshLDAPData.xml:11: java.lang.ExceptionInInitiFortressAdmin 2014-04-27 09:55:47,507 (INFO ) DEBUG MODE 1<br/>
- startAnt FortressAdmin 2014-04-27 09:55:47,507 (INFO ) addSuffixes name=jts description=JoshuaTree Software<br/>
- startAnt alizerError<br/>
- startAnt at org.openldap.fortress.util.attr.VUtil.safeText(VUtil.java:173)<br/>
- startAnt at org.openldap.fortress.ldap.suffix.SuffixP.validate(SuffixP.java:135)<br/>
- startAnt at org.openldap.fortress.ldap.suffix.SuffixP.add(SuffixP.java:70)<br/>
- startAnt at org.openldap.fortress.ant.FortressAntTask.addSuffixes(FortressAntTask.java:1602)<br/>
- startAnt at org.openldap.fortress.ant.FortressAntTask.execute(FortressAntTask.java:802)<br/>
- startAnt at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)<br/>
- startAnt at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
- startAnt at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
- startAnt at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
- startAnt at java.lang.reflect.Method.invoke(Method.java:601)<br/>
- startAnt at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)<br/>
- startAnt at org.apache.tools.ant.Task.perform(Task.java:348)<br/>
- startAnt at org.apache.tools.ant.Target.execute(Target.java:390)<br/>
- startAnt at org.apache.tools.ant.Target.performTasks(Target.java:411)<br/>
- startAnt at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)<br/>
- startAnt at org.apache.tools.ant.Project.executeTarget(Project.java:1368)<br/>
- startAnt at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)<br/>
- startAnt at org.apache.tools.ant.Project.executeTargets(Project.java:1251)<br/>
- startAnt at org.apache.tools.ant.Main.runBuild(Main.java:809)<br/>
- startAnt at org.apache.tools.ant.Main.startAnt(Main.java:217)<br/>
- startAnt at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)<br/>
- startAnt at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)<br/>
- startAnt Caused by: java.lang.NullPointerException<br/>
- startAnt at java.util.regex.Pattern.<init>(Pattern.java:1336)<br/>
- startAnt at java.util.regex.Pattern.compile(Pattern.java:1022)<br/>
- startAnt at org.openldap.fortress.util.attr.RegExUtil.<clinit>(RegExUtil.java:37)<br/>
- startAnt ... 22 more<br/>
- startAnt </p>
- </td>
- </tr>
- <tr id="comment-header-12014">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny <font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12014">
- <td bgcolor="#ffffff"><p>What is the content of safeTextPatternStr ?</p></td>
- </tr>
- <tr id="comment-header-12015">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12015"><td bgcolor="#ffffff"><p>regXSafetext=^A-Za-z0-9-</p></td>
- </tr>
- <tr id="comment-header-12100">
- <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">29/Apr/14</font>]</font></td>
- </tr>
- <tr id="comment-body-12100"><td bgcolor="#ffffff"><p>It should be ^[A-Za-z0-9-]*, no ?</p></td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-112 -->
-<!-- =========================================================================================================== -->
-<table id="FC-112" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-112] <a href="https://fortress.atlassian.net/browse/FC-112">Convert all package names, maven group and licenses to org.openldap</a>
- <span class="subText">Created: 26/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13705-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/COM-98"><strike>COM-98</strike></a></td>
- <td>Convert all package names, maven grou...</td>
- <td>Resolved</td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/EN-15"><strike>EN-15</strike></a></td>
- <td>Convert all package names, maven grou...</td>
- <td>Resolved</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-113 -->
-<!-- =========================================================================================================== -->
-<table id="FC-113" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-113] <a href="https://fortress.atlassian.net/browse/FC-113">RC36 Release</a>
- <span class="subText">Created: 27/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC35</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13711-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-114 -->
-<!-- =========================================================================================================== -->
-<table id="FC-114" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-114] <a href="https://fortress.atlassian.net/browse/FC-114">Fix javadoc in Session Class</a>
- <span class="subText">Created: 29/Apr/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-13800-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>This class has public methods that need to be documented.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-115 -->
-<!-- =========================================================================================================== -->
-<table id="FC-115" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-115] <a href="https://fortress.atlassian.net/browse/FC-115">createSession with roles has problem related to DSD policies.</a>
- <span class="subText">Created: 18/May/14 Updated: 18/May/14 Resolved: 18/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Create session with roles changed to validate constraints after the requested role list has been built. </p>
- <p>The reason is if user has been assigned two roles that conflict with a single DSD policy, on who's behalf createSession is being called with just one of those roles requested being passed in, failure occurs because the requested role 'may' have been forced deactive from user's actual list during validate constraint check. </p>
- <p>Currently (and because) Fortress has no way of adjudicating which conflicting role 'wins' during constraint validation checking, it will simply deactivate the first role it finds that violates a particular DSD policy.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-116 -->
-<!-- =========================================================================================================== -->
-<table id="FC-116" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-116] <a href="https://fortress.atlassian.net/browse/FC-116">CreateSession with default roles</a>
- <span class="subText">Created: 18/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14001-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-117 -->
-<!-- =========================================================================================================== -->
-<table id="FC-117" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-117] <a href="https://fortress.atlassian.net/browse/FC-117">CacheMgr classloader issues</a>
- <span class="subText">Created: 20/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Change to following for Tomcat context realm support:<br/>
- // This call will create a new CacheManager, or throw exception if the it already exists, or if the configuration file is not found on classloader.</p>
- <p>m_ftCacheImpl = new CacheMgr( new CacheManager( ClassUtil.resourceAsStream( cacheConfig ) ) );</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-118 -->
-<!-- =========================================================================================================== -->
-<table id="FC-118" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-118] <a href="https://fortress.atlassian.net/browse/FC-118">Add support for LDAP Groups</a>
- <span class="subText">Created: 23/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14103-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add support for LDAP groups (CRUD) and assignments to users.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-119 -->
-<!-- =========================================================================================================== -->
-<table id="FC-119" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-119] <a href="https://fortress.atlassian.net/browse/FC-119">admin console add/update user work</a>
- <span class="subText">Created: 24/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14104-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The add and update user functions in adminConsole are test functions but they still should be usable for general purpose admin. This ticket clears up a couple of minor bugs.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-120 -->
-<!-- =========================================================================================================== -->
-<table id="FC-120" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-120] <a href="https://fortress.atlassian.net/browse/FC-120">Group console problems with update</a>
- <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14105-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>The update user functions in group console are test functions but still should be usable for general purpose admin. This ticket fixes update problems.</p>
- <br/>
- </td>
- </tr>
-</table>
-
-<!-- =========================================================================================================== -->
-<!-- FC-121 -->
-<!-- =========================================================================================================== -->
-<table id="FC-121" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-121] <a href="https://fortress.atlassian.net/browse/FC-121">Clean up group exception processing</a>
- <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14106-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-122 -->
-<!-- =========================================================================================================== -->
-<table id="FC-122" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-122] <a href="https://fortress.atlassian.net/browse/FC-122">Make Group object class and attribute names configurable</a>
- <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14107-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add to fortress properties configurations to control LDAP group name, and attribute names.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-123 -->
-<!-- =========================================================================================================== -->
-<table id="FC-123" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-123] <a href="https://fortress.atlassian.net/browse/FC-123">Add Group unit tests</a>
- <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
-</tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add group test cases that use ant loader. Also cleanup ant group entity processing.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-124 -->
-<!-- =========================================================================================================== -->
-<table id="FC-124" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-124] <a href="https://fortress.atlassian.net/browse/FC-124">Add and delete group properties using ant load</a>
- <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>add capability for ant load to add and remove group properties</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-125 -->
-<!-- =========================================================================================================== -->
-<table id="FC-125" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-125] <a href="https://fortress.atlassian.net/browse/FC-125">Control group funcs with delegated access control</a>
- <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14204-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Enable delegated access control over group manager functions</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-126 -->
-<!-- =========================================================================================================== -->
-<table id="FC-126" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-126] <a href="https://fortress.atlassian.net/browse/FC-126">Add toString for entities</a>
- <span class="subText">Created: 26/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14205-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>the fortress entities should override toString for display purposes</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-127 -->
-<!-- =========================================================================================================== -->
-<table id="FC-127" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-127] <a href="https://fortress.atlassian.net/browse/FC-127">Add search group by users</a>
- <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14206-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add findByUsers to groupmgr. Cleanup and refine tests and entity processing.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-128 -->
-<!-- =========================================================================================================== -->
-<table id="FC-128" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-128] <a href="https://fortress.atlassian.net/browse/FC-128">Fix Accelerator test cases</a>
- <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14208-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>fix a few minor problems with accelerator test cases not keeping up with changes on the server.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-129 -->
-<!-- =========================================================================================================== -->
-<table id="FC-129" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-129] <a href="https://fortress.atlassian.net/browse/FC-129">Fortress use sentry distribution</a>
- <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14209-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>change the sentry distribution classification to use 'dist':</p>
- <p> <dependency org="org.openldap" name="sentry" rev="1.0-RC37" conf="default->master"><br/>
- <artifact name="sentry" e:classifier="dist" type="jar"/><br/>
- </dependency></p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-12300">
- <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/May/14</font>]</font>
- </td>
- </tr>
- <tr id="comment-body-12300"><td bgcolor="#ffffff">
- <p>change setting in build.xml</p>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-130 -->
-<!-- =========================================================================================================== -->
-<table id="FC-130" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-130] <a href="https://fortress.atlassian.net/browse/FC-130">Fortress default suffix change to dc=openldap,dc=org</a>
- <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>change the default suffix name from dc=jts, dc=us to dc=openldap, dc=org</p><br/>
- </td>
- </tr>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-131 -->
-<!-- =========================================================================================================== -->
-<table id="FC-131" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-131] <a href="https://fortress.atlassian.net/browse/FC-131">RC37 Release</a>
- <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC36</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14211-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-132 -->
-<!-- =========================================================================================================== -->
-<table id="FC-132" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-132] <a href="https://fortress.atlassian.net/browse/FC-132">RC37 Cleanup</a>
- <span class="subText">Created: 28/May/14 Updated: 09/Aug/14 Resolved: 09/Aug/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14218-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Update ivy xml to include the RC37 artifacts</p><br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-133 -->
-<!-- =========================================================================================================== -->
-<table id="FC-133" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-133] <a href="https://fortress.atlassian.net/browse/FC-133">Fix Accelerator CreateSession negative test case</a>
- <span class="subText">Created: 03/Jun/14 Updated: 03/Jun/14 Resolved: 03/Jun/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14300-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>fix negative test case in testCreateSession()</p><br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-134 -->
-<!-- =========================================================================================================== -->
-<table id="FC-134" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-134] <a href="https://fortress.atlassian.net/browse/FC-134">replace bootstrap props with group vals</a>
- <span class="subText">Created: 14/Jun/14 Updated: 05/Jul/14 Resolved: 05/Jul/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14305-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>use ant replacement for the following group mgr values:</p>
- <p>1. group object class name:<br/>
- <replace file="$</p>
- {dst.bootstrap.conf}" token="@GROUP_OBJECT_CLASS@" value="${group.objectclass}"/><br/>
- 2. group protocol attribute name:<br/>
- <replace file="${dst.bootstrap.conf}
- <p>" token="@GROUP_PROTOCOL@" value="$</p>
- {group.protocol}
- <p>"/><br/>
- 3. grop props attribute name: <br/>
- <replace file="$</p>
- {dst.bootstrap.conf}
- <p>" token="@GROUP_PROPERTIES@" value="$</p>
- {group.properties}
- <p>"/></p>
- <br/>
- </td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-135 -->
-<!-- =========================================================================================================== -->
-<table id="FC-135" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-135] <a href="https://fortress.atlassian.net/browse/FC-135">add objectId to accel checkAccess</a>
- <span class="subText">Created: 26/Jun/14 Updated: 26/Jun/14 Resolved: 26/Jun/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14404-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/RA-22"><strike>RA-22</strike></a></td>
- <td>Add ObjectId to checkAccess request</td>
- <td>Done</td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/RA-26"><strike>RA-26</strike></a></td>
- <td>add objectId to accelerator checkAcce...</td>
- <td>Done</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea"><p>Add objectId support to RBAC accelerator checkAccess operation.</p><br/></td>
- </tr>
-</table>
-<br/>
-
-<!-- =========================================================================================================== -->
-<!-- FC-136 -->
-<!-- =========================================================================================================== -->
-<table id="FC-136" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-136] <a href="https://fortress.atlassian.net/browse/FC-136">Add sessionRoles to AccelMgr</a>
- <span class="subText">Created: 29/Jun/14 Updated: 05/Jul/14 Resolved: 05/Jul/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<br />
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14408-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/RA-24"><strike>RA-24</strike></a></td>
- <td>create sessionRoles operations - java...</td>
- <td>Done</td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/RA-27"><strike>RA-27</strike></a></td>
- <td>create sessionRoles operations - server</td>
- <td>Done</td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Add the sessionRoles method to AccelMgr interface. This calls the accelerator sessionRoles extended operation.</p>
- <br/>
- </td>
- </tr>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-137 -->
-<!-- =========================================================================================================== -->
-<table id="FC-137" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-137] <a href="https://fortress.atlassian.net/browse/FC-137">Add description to Permission entity</a>
- <span class="subText">Created: 29/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14409-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top" class="noPadding">
- <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td>
- <a href="https://fortress.atlassian.net/browse/RA-25">RA-25</a></td><td>create sessionPermissions operation</td><t>To Do
- <td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Permission names can be terse thus hard to understand what they mean during setup.</p>
- <p>The description field will allow users of the system to place human readable permission names onto these entities. This label can then be shown on administrative interfaces to help the user understand what they granting.</p>
- <p>For example permission:</p>
- <p>objNm : customer<br/>
- opNm : read<br/>
- description : allow user to inquire the customer record</p>
- <br/>
- </td>
- </tr>
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
- <tr id="comment-header-12502">
- <td bgcolor="#f0f0f0">
- Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">29/Jun/14</font>]</font>
- </td>
- </tr>
- <tr id="comment-body-12502">
- <td bgcolor="#ffffff">
- <p>The description must be added before the sessionPermissions extended operation can be completed.</p>
- </td>
- </tr>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-138 -->
-<!-- =========================================================================================================== -->
-<table id="FC-138" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
- <h3 class="formtitle">
- [FC-138] <a href="https://fortress.atlassian.net/browse/FC-138">Remove public default constructors from DAOs</a>
- <span class="subText">Created: 29/Jun/14 Updated: 29/Jun/14 Resolved: 29/Jun/14</span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >
- Task
- </td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14410-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
- </tr>
-</table>
-<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
-</table>
-<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
- <tr>
- <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
-</table>
-<table cellpadding="0" cellspacing="0" border="0" width="100%">
- <tr>
- <td id="descriptionArea">
- <p>Was originally intent as package private default constructors to prevent outside classes from constructions. With a move towards pluggable DAO impl's (unbound and apache), this is no longer possible to do because fortress dependent classes ('P' objects) reside in a separate package.</p>
- <br/>
- </td>
- </tr>
-</table>
-</br>
-<!-- =========================================================================================================== -->
-<!-- FC-139 -->
-<!-- =========================================================================================================== -->
-<table id="FC-139" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-139] <a href="https://fortress.atlassian.net/browse/FC-139">AcceleratorDAO CheckAccess sending empty objectId in request</a>
- <span class="subText">
- <font size="-2">Created: 30/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14</font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea"><p>The objectId should not be encoded in request if empty.</p><br>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-140 -->
-<!-- =========================================================================================================== -->
-<table id="FC-140" class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-140] <a href="https://fortress.atlassian.net/browse/FC-140">RBAC Overlay DB dir not setup</a>
- <span class="subText">
- <font size="-2">
- Created: 30/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea"><p>correct RBAC accelerator setup to create RBAC db.</p><br></td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-141 -->
-<!-- =========================================================================================================== -->
-<table id="FC-141" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-141] <a href="https://fortress.atlassian.net/browse/FC-141">RC38 Release</a>
- <span class="subText">
- <font size="-2">
- Created: 05/Jul/14 Updated: 05/Jul/14 Resolved: 05/Jul/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC37</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14503-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-142 -->
-<!-- =========================================================================================================== -->
-<table id="FC-142" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-142] <a href="https://fortress.atlassian.net/browse/FC-142">RC38 Cleanup</a>
- <span class="subText">
- <font size="-2">
- Created: 06/Jul/14 Updated: 06/Jul/14 Resolved: 06/Jul/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC38</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>None</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
-<tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14507-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-143 -->
-<!-- =========================================================================================================== -->
-<table id="FC-143" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-143] <a href="https://fortress.atlassian.net/browse/FC-143">Add SSL to Unbound connection pool</a>
- <span class="subText">
- <font size="-2">
- Created: 02/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC38</td></tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14700-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None
- </td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
- <td class="noPadding" bgcolor="#ffffff" valign="top">
- <table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/SEN-24"><strike>SEN-24</strike></a></td>
- <td>Add SSL to Unbound connection pool</td>
- <td>Resolved</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea"><p>Update unbound connection pool to support SSL</p><br></td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-144 -->
-<!-- =========================================================================================================== -->
-<table id="FC-144" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-144] <a href="https://fortress.atlassian.net/browse/FC-144">Add Tomcat SSL to demo</a>
- <span class="subText">
- <font size="-2">
- Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
- <td class="noPadding" bgcolor="#ffffff" valign="top">
- <table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/FC-145"><strike>FC-145</strike></a></td>
- <td>Add SSL to REST client</td>
- <td>Resolved</td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/SEN-25"><strike>SEN-25</strike></a></td>
- <td>Add Tomcat SSL to demo</td>
- <td>Resolved</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-145 -->
-<!-- =========================================================================================================== -->
-<table id="FC-145" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-145] <a href="https://fortress.atlassian.net/browse/FC-145">Add SSL to REST client</a>
- <span class="subText">
- <font size="-2">
- Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
- <td class="noPadding" bgcolor="#ffffff" valign="top">
- <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/FC-144"><strike>FC-144</strike> </td>
- <td>Add Tomcat SSL to demo</td>
- <td>Resolved</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
-</tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea"><p>Add capability for Fortress REST client to connect SSL with EnMasse Server</p><br></td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-146 -->
-<!-- =========================================================================================================== -->
-<table id="FC-146" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-146] <a href="https://fortress.atlassian.net/browse/FC-146">RC39 Release</a>
- <span class="subText">
- <font size="-2">
- Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC38</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-147 -->
-<!-- =========================================================================================================== -->
-<table id="FC-147" border="0" width="100%" cellpadding="0" cellspacing="0">
-<tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-147] <a href="https://fortress.atlassian.net/browse/FC-147">RC39 Cleanup</a>
- <span class="subText">
- <font size="-2">
- Created: 11/Aug/14 Updated: 11/Aug/14 Resolved: 11/Aug/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC40</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-14810-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-148 -->
-<!-- =========================================================================================================== -->
-<table id="FC-148" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-148] <a href="https://fortress.atlassian.net/browse/FC-148">Extend password max age for demo users</a>
- <span class="subText">
- <font size="-2">
- Created: 05/Sep/14 Updated: 05/Sep/14 Resolved: 05/Sep/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC40</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>extend to: maxAge="7776000"</p>
- <br>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-149 -->
-<!-- =========================================================================================================== -->
-<table id="FC-149" align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>Bug fixes and enhancements to apache DAO modules in preparation for unbound replacement.</p><br>
- </td>
- </tr>
- </tbody>
-</table>
-<table class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3 class="formtitle">
- [FC-149] <a href="https://fortress.atlassian.net/browse/FC-149">AuditMgr.getUserAuthZs incorrectly handles failures</a>
- <span class="subText">
- <font size="-2"
- Created: 18/Sep/14 Updated: 18/Sep/14 Resolved: 18/Sep/14
- </font>
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Resolved</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC40</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-15100-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top">
- <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td>
- <a href="https://fortress.atlassian.net/browse/COM-115"><strike>COM-115</strike></a>
- </td>
- <td>Audit AuthZ lists all as failures</td>
- <td>Resolved</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Description</b></font> </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>getUserAuthZs does not work in terms of success or failure. Need to remap:</p>
- <p>Use:<br>
- private static final String REQASSERTION = "reqAssertion";</p>
- <p>field in auditCompare objectclass. It will contain the following if authorization failed:<br>
- attributeValue = "AuthZ Failed";</p>
- <p>Change the DAO method to compare to the attributeValue and if true, set success to false, otherwise set success to true.</p>
- <br>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-150 -->
-<!-- =========================================================================================================== -->
-<table id="FC-150" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3>
- [FC-150] <a href="https://fortress.atlassian.net/browse/FC-150">AuditMgr.getUserAuthZ cannot pull back faileOnly</a>
- <span><fot size="-2">Created: 18/Sep/14 Updated: 18/Sep/14</font></span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%"><b>Status:</b></td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%"><b>Project:</b></td>
- <td width="80%">Fortress Core</td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC39</td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC40</td>
- </tr>
- </tbody>
-</table>
-<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-15102-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
- <td bgcolor="#ffffff" valign="top">
- <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
- </tr>
- <tr>
- <td>relates to</td>
- <td><a href="https://fortress.atlassian.net/browse/COM-116">COM-116</a></td>
- <td>Disable the audit authZ list failedOn...</td>
- <td>Open</td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
-</table>
-<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
- <tbody>
- <tr>
- <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
- <font color="#ffffff"><b>Description</b></font>
- </td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td id="descriptionArea">
- <p>This search filter:</p>
- <p>filter += "(" + REQASSERTION + "=" + GlobalIds.AUTH_Z_FAILED_VALUE + ")";</p>
- <p>in AuditDAO.getAllAuthZs does not work. It appears the reqAssertion attribute cannot be searched on within the auditCompare object class. Have tested with ldapbrowser and does not pull back entries. Will need to come up with a work around.</p>
- </td>
- </tr>
- </tbody>
-</table>
-<br>
-
-<!-- =========================================================================================================== -->
-<!-- FC-151 -->
-<!-- =========================================================================================================== -->
-<TABLE id="FC-151" border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
- <h3>
- [FC-151] <a href="https://fortress.atlassian.net/browse/FC-151">UnboundID SDK removal preparations</a>
- <span>
- Created: 19/Oct/14 Updated: 19/Oct/14
- </span>
- </h3>
- </td>
- </tr>
- <tr>
- <td width="20%">
- <b>Status:</b>
- </td>
- <td width="80%">Open</td>
- </tr>
- <tr>
- <td width="20%">
- <b>Project:</b>
- </td>
- <td width="80%">
- <a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a>
- </td>
- </tr>
- <tr>
- <td><b>Component/s:</b></td>
- <td>None</td>
- </tr>
- <tr>
- <td><b>Affects Version/s:</b></td>
- <td>1.0-RC39</td>
- </td>
- </tr>
- <tr>
- <td><b>Fix Version/s:</b></td>
- <td>1.0-RC40</td>
- </tr>
- </tbody>
-</table>
-<table border="0" width="100%" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Improvement</td>
- <td bgcolor="#f0f0f0"><b>Priority:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
- <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</a></td>
- <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</a></td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
- <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
- <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
- <td id="labels-15200-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- <tr>
- <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
- <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
- </tr>
- </tbody>
-</table>
diff --git a/content/fortress/news.mdtext b/content/fortress/news.mdtext
deleted file mode 100644
index 3be49e2..0000000
--- a/content/fortress/news.mdtext
+++ /dev/null
@@ -1,134 +0,0 @@
-# Fortress News
-
-<h2 class="news">Apache Fortress 2.0.5 Released <em>posted on May 26th, 2020</em></h2>
-
-The Apache Directory Project announces the twelfth release of Fortress - 2.0.5.
-
-This maintenance release contains the following bug fixes and enhancements:
-
- * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12348279">Fortress 2.0.5 Release Notes</a>
-
-<h2 class="news">Apache Fortress 2.0.4 Released <em>posted on December 13th, 2019</em></h2>
-
-The Apache Directory Project announces the eleventh release of Fortress - 2.0.4.
-
-This maintenance release contains many bug fixes and enhancements.
-
- * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12344368">Fortress 2.0.4 JIRA Release Notes</a>
-
-<h2 class="news">Apache Fortress 2.0.3 Released <em>posted on November 12th, 2018</em></h2>
-
-The Apache Directory Project announces the tenth release of Fortress - 2.0.3.
-
-This maintenance release contains two new Access Manager APIs, support of JSON and bug fixes.
-
-The Release notes:
-
- * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12344047">Fortress 2.0.3 JIRA Release Notes</a>
-
-Trying Apache Fortress with ApacheDS and/or OpenLDAP Quickstarts is like having training wheels for LDAP:
-
- * <a href="https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md">Readme Docker ApacheDS</a>
- * <a href="https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md">Readme Docker OpenLDAP</a>
-
-<h2 class="news">Apache Fortress 2.0.2 Released <em>posted on September 12th, 2018</em></h2>
-
-The Apache Directory Project announces the ninth release of Fortress - 2.0.2.
-
-This maintenance release contains enhanced coverage for Attribute-Based Access Control.
-
- * <a href="https://issues.apache.org/jira/browse/FC-239">[FC-239]</a> - Some additional methods to manage role constraints.
-
-The Release notes:
-
- * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12343768">Fortress 2.0.2 JIRA Release Notes</a>
-
-<h2 class="news">Apache Fortress 2.0.1 Released <em>posted on July 20th, 2018</em></h2>
-
-The Apache Directory Project announces the eighth release of Fortress - 2.0.1.
-
-New features include
-
- * <a href="https://issues.apache.org/jira/browse/FC-108">[FC-108]</a> - Unix RFC2307bis posixAccount (User) and posixGroup (Role) auxiliary object classes.
- * <a href="https://issues.apache.org/jira/browse/FC-235">[FC-235]</a> - Enforcement of arbitrary constraints during role activation with dynamic attributes like location, organization and account.
-
-The Release notes have the complete list of 21 fixes and enchancements: <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12338782">2.0.1 JIRA Release Notes</a>
-
-<h2 class="news">Apache Fortress 2.0.0 Released <em>posted on June 26th, 2017</em></h2>
-
-The Apache Directory Project announces the seventh release of Fortress - 2.0.0 GA. This major release requires Java version 8. It adds formal support of ApacheDS giving full IETF password policy coverage for both it and OpenLDAP. There are Docker images preconfigured with Apache DS & OpenLDAP for rapid deployment and testing.
-
-
-<h2 class="news">Apache Fortress 2.0.0 Released <em>posted on June 26th, 2017</em></h2>
-
-The Apache Directory Project announces the seventh release of Fortress - 2.0.0 GA. This major release requires Java version 8. It adds formal support of ApacheDS giving full IETF password policy coverage for both it and OpenLDAP. There are Docker images preconfigured with Apache DS & OpenLDAP for rapid deployment and testing.
-
-Apache Fortress 2.0.0 enhancements include:
-
- * Java 8 requirement
- * Usage of Apache LDAP API v1.0.0
- * FC-209 Missing object classes when create permission attribute and sets
- * FC-210 Programtically determine which methods have ARBAC checks
- * FC-211 Support ApacheDS password policies
- * FC-212 ApacheDS in Docker
-
-The report pulled from JIRA: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0 resolved issues</a>
-
-<h2 class="news">Apache Fortress 2.0.0-RC2 Released <em>posted on May 4th, 2017</em></h2>
-
-The Apache Directory Project announces the sixth release of Fortress. This is a minor release, the second release candidate for a 2.0 GA and includes a move to require Java version 8. There are a number of other enhancements:
-
- * FC-201 jgrapht 1.0.0 requires Java 8
- * FC-202 dir-fortress-core-docker-test to use latest slapd install procs
- * FC-203 propmr modifiers
-
-The complete list: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0-RC2%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0-RC2 resolved issues</a>
-
-<h2 class="news">Apache Fortress 2.0.0-RC1 Released <em>posted on November 7th, 2016</em></h2>
-
-The Apache Directory Project announces the fifth release of Fortress. This major revision has a couple of changes that have broken backward compatibility with 1.x:
-
- * FC-183 Use Apache IANA Number of OID - The LDAP schema uses the Apache Directory's IANA base number instead of the one from JoshuaTree. Requires updating existing fortress impls to upgrade schema using latest
- * FC-194 Change password representation from a char[] to a String. Applies to all methods using a password in the arguments. If using the fortress-realm, ensure the tomcat instance has the latest proxy jar also.
-
-Some other major enhancements include:
-
- * FC-144 - Ability to assign groups to roles
- * FC-116 - Need the ability to get user specific attributes for fine grained access determinations
- * FC-181 - Multitenancy for Realm and Web
-
-The complete list: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0-RC1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0-RC1 resolved issues</a>
-
-<h2 class="news">Apache Fortress 1.0.1 Released <em>posted on July 22nd, 2016</em></h2>
-
-The Apache Directory Project announces the fourth release of Fortress.
-
-This maintenance release includes the following enhancements:
-
- * Fortress Core use of a non-static configurator
- * Fortress Core to use the Apache LDAP API 1.0.0-RC1
- * Fortress Rest to use Apache CXF 3.1.6 and Spring 4.3.1
- * Fortress Web to use Apache Wicket 7.3.0 and Spring 4.3.1
-
-<h2 class="news">Apache Fortress 1.0.0 Released <em>posted on April 15th, 2016</em></h2>
-
-The Apache Directory Project announces the third release of Fortress which provides role-based access control, delegated administration and password policies using LDAP servers like ApacheDS and OpenLDAP.
-
-<h2 class="news">Apache Fortress 1.0-RC42 Released <em>posted on March 28th, 2016</em></h2>
-
-The Apache Directory Project announces the second release of Fortress which includes the Core, Realm, Rest and Web components.
-
-Dozens of features and bug fixes have been added since the last release.
- * [JIRA Report for fix version 1.0-RC42](https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%201.0.0-RC42%20%20AND%20project%20%3D%20FC)
-
-This is the first time we've released other packages of Realm, Rest and Web components. A 1.0 GA release will follow in coming weeks.
-
-<h2 class="news">Apache Fortress Core 1.0-RC40 released ! <em>posted on April 15th, 2015</em></h2>
-
-The Apache Directory Project is proud to announce the very first release of Fortress Core, the core library of the Fortress project.
-
-<h2 class="news">Apache Fortress Added as a sub-project of Apache Directory <em>posted on October 25th, 2014</em></h2>
-
-The Apache Directory Team is proud to announce the addition of the Apache Fortress project as a sub-project.
-
-Apache Fortress provides an RBAC management and enforcement system that builds on existing open source applications like ApacheDS, OpenLDAP and Apache Tomcat.
diff --git a/content/fortress/overview.mdtext b/content/fortress/overview.mdtext
deleted file mode 100644
index 4839652..0000000
--- a/content/fortress/overview.mdtext
+++ /dev/null
@@ -1,134 +0,0 @@
-Title: Fortress Overview
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Apache Fortress Overview
-
-FORTRESS is a standards-based authorization system, that provides role-based access control, delegated administration and password policy services using an LDAP backend.
-
-## What's in it?
-
-Included are the following components:
-
-* Core - Java Authorization SDK
-* Realm - Java EE security for Apache Tomcat
-* Rest - HTTP protocol wrappers for the APIs using Apache CXF
-* Web - HTML pages and framework for the APIs using Apache Wicket
-
-It's released under terms of the Apache License 2.0.
-
-## How Does It Work?
-
-Fortress is a Role-Based Access Control security system. It uses a directory server to store the information about users, roles, permissions, etc. Out-of-the-box it supports either ApacheDS or OpenLDAP servers but works with any LDAPv3 compliant system.
-
-To learn how to install, setup and configure with either of the supported servers, check out the quickstarts:
-
-* [QUICKSTARTS](installation.html)
-
-## Other Guides
-
-### API usage
-Probably the best place to start is the javadoc. To understand how RBAC works, look at the interfaces like AccessMgr, AdminMgr and ReviewMgr. For ARBAC add 'Del' to the name - for delegated. DelAdminMgr, DelAccessMgr, etc. For password policies, PwPolicyMgr.
-
-### Configuration
-Next is to understand how the runtime works. As you might expect, Fortress requires a large number of parameters that bind it to a runtime environment. For example the LDAP server's coordinates, hostname, port, suffix, service account credentials and more. The configuration subsystem pulls these parameters from a variety of locations.
-
-* [README-CONFIG.md](https://github.com/apache/directory-fortress-core/blob/master/README-CONFIG.md) - How the Fortress Config subsystem works
-
-### Multitenancy
-The Fortress APIs and data storage is fully multitenant. To understand how that works.
-
-* [README-MULTITENANCY.md](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md) - How Fortress Multitenancy works
-
-## What technologies at play?
-
-Fortress products run on open system hardware and software platforms supporting LDAPv3, HTTP & Java.
-
-## What standards apply?
-
-The following standards are implemented...
-
-### ANSI Role-Based Access Control (INCITS 359)
-
-There is more to RBAC than assigning users to groups and applying ACL policies within directories or databases. [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) systems provide selective Role activation/deactivation, role hierarchies, and constraints over separation of duty. The [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) component provides APIs to add, update, delete, and search the directory data
-
-More info can be found on [Intro to ANSI RBAC Page](user-guide/1-intro-rbac.html)
-
-### [Java EE Platform](http://java.net/projects/javaee-spec/pages/Home) (tm) Security
-
-Used for SSL, X.509 mutual authentication, form-based container authentication, authorization and SSO. Works within compliant Java Web apps like Fortress Rest and Web.
-
-### Administrative Role-Based Access Control ([ARBAC02](http://profsandhu.com/journals/tissec/p113-oh.pdf))
-
-The ARBAC model explains how [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) can be extended with organizational controls to govern policies regarding the security administration process. ARBAC helps by allowing administrative tasks be delegated to end users who fall outside typical datacenter operations.
-
-### IETF Password Policies
-
-Fortress fully supports password policies of both ApacheDS and OpenLDAP. It adds by integrating with its administrative and access control APIs. These APIs enable outside apps to participate and manipulate OpenLDAP password policies without understanding the specifics of how they work. Fortress provides services for setting up new policies and ensuring password policies are tracked and enforced across all avenues.
-
-### Auditing
-
-Fortress audits use OpenLDAP's slapd access log overlay.
-
-The Fortress audits rely on slapd events to track its data exchanges performed within its own APIs. Change event tracking includes adds, updates, and deletes of Fortress entities. Read and search events tracked include user authentication, authorization, and policy interrogations. Full historical data change tracking is maintained and may be searched later with APIs to be used for monitoring, reporting, and undo. The log may be retrieved later to synch with outside database for long-term regulatory and compliance concerns.
-
-### Temporal Constraints
-
-The Fortress Temporal model allows Users and Roles to carry time and date Constraints which govern when activations may occur. Role constraints are checked on every call into Fortress. The user constraint applied only at session creation.
-
-### ANSI RBAC Policy-Enhanced (INCITS-494-2012)
-
-One day.
-
-## What services are available?
-
-Over one hundred services divided across the Manager components.
-
-A description of these managers follow along with their associated javadoc links that describe the apis...
-
-###RBAC Managers
-
-* [AccessMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AccessMgr.html) - Performs runtime access control operations on objects that are provisioned RBAC entities that reside in LDAP directory.
-* [AdminMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AdminMgr.html) - Performs administrative functions to provision Fortress RBAC entities into the LDAP directory.
-* [ReviewMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/ReviewMgr.html) - The review functions on RBAC entities in LDAP.
-
-###ARBAC Managers
-
-* [DelAccessMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelAccessMgr.html) - Runtime delegated access control operations on objects that are provisioned Fortress ARBAC entities that reside in LDAP.
-* [DelAdminMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelAdminMgr.html) - Policy administration of Fortress ARBAC entities in LDAP.
-* [DelReviewMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelReviewMgr.html) - Policy review ops of ARBAC entities in LDAP.
-
-###PW Policies Manager
-
-* [PwPolicyMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/PwPolicyMgr.html) - Used to perform admin and review functions on the PWPOLICIES data sets.
-
-###Audit Manager
-
-* [AuditMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AuditMgr.html) - Methods used to search OpenLDAP's slapd access log for fortress events.
-
-###Config Manager
-
-* [ConfigMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/ConfigMgr.html) - CRUD methods used to manage properties stored within LDAP.
-
-## Where is it?
-
-Source is managed by Apache's GIT repo:
-
-* [Fortress Core](https://gitbox.apache.org/repos/asf/directory-fortress-core.git)
-* [Fortress Web](https://gitbox.apache.org/repos/asf/directory-fortress-commander.git)
-* [Fortress Rest](https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git)
-* [Fortress Realm](https://gitbox.apache.org/repos/asf/directory-fortress-realm.git)
diff --git a/content/fortress/testimonials.mdtext b/content/fortress/testimonials.mdtext
deleted file mode 100644
index 52b5923..0000000
--- a/content/fortress/testimonials.mdtext
+++ /dev/null
@@ -1,401 +0,0 @@
-# Testimonials
-
-## Credits
-This work was contributed by Yudhi Karunia Surtan of PT. Global Digital Niaga (blibli.com). Thanks to him and his team for their efforts in helping others use Fortress.
-
-## Introduction
-
-This document contains an overview for combining a CAS-based SSO module with fortress-based authorization, using a declarative URL filtering mechanism.
-
-###Detailed description of the project
-
-I created this solution a few years ago because at the time I was looking for an IAM and SSO solution, and there were no open source solutions that provided everything that I needed.
-
-Basically, the idea was, I needed a framework where the developer didn't have to programmatically add authorization calls to their code, or use annotations, or any other kind of *if condition* statement. With this solution, I can have a declarative mechanism that is still capable of making advanced dynamic authorization decisions, even if the user hasn't been logged in before or has any of the proper roles activated to their session. I can do this because I control the authorization and it has been centralized in the server, and that server can activate whatever user roles needed to to allow access to the runtime environment.
-
-I searched all available open source solutions and finally decided to combine Apereo CAS and Apache Fortress into a single solution. Apereo CAS does the authentication and Apache Fortress will handle authorization.
-
-I went this route because Apereo CAS is very good way to handle the Single Sign-On and Single Sign-Out problems, but it lacks authorization capabilities, because there aren't standardized solutions in that space yet. Apache Fortress is good at authorization because it uses standard RBAC. However, Apache Fortress doesn't have an SSO solution yet. That is why I think both should be combined because they complement each other. Unfortunately, there aren't yet good documentation resources available to combine these which is why I created this one, so other developers can follow my team's lead and make their life easier by providing good security for their webapps.
-
-The solution I present to you here has operated successfully inside production environments since 2015 and so it's quite mature. I write this how-to document to explain how it works. It's intended as a guide for you to follow as well.
-
-Here are the technology stacks used within my extended framework:
-
- * Apereo CAS -> 4.2.x
- * Apache Fortress Enmasse (rest) -> 1.0.0
- * Apache Fortress Proxy -> 1.0.0
- * Apache Ignite -> 1.7.0
- * Spring Framework -> 4.2.x-RELEASE
-
-There are two areas of development focus. One to handle the server side and the other for the client. The client is shared with my dev team for managing security within their web applications.
-
- 1. CAS Server side development: Includes creating own implementation for AbstractUsernamePasswordAuthenticationHandler and implemening an Apache Ignite Service Registry for CAS
- 2. CAS Client side development: Includes create own implementation for WebExpressionVoter and CasAuthenticationProvider
-
-## Code Descriptions
-
-The following sections contain code and xml snippets describing how the CAS and Fortress integration was accomplished.
-
-###Server side development:
-
-####1. The Authentication Handler
-
- The interesting part for this solution is how to maintain both the Apereo CAS and Apache Fortress sessions. Luckily, CAS is using a token for maintaining their session and that token is also designed to have some extended attributes included with it. Using this knowledge, we can modify the profile given by CAS Server to the client. Let's have a look what I've done with combining the Apereo CAS and Apache Fortress sessions in the code that follows.
-
- :::Java
-
- /*
- * Copyright 2017 to PT. Global Digital Niaga(Blibli.com)
- *
- * Licensed under the Apache License, Version 2.0; you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
- package com.gdn.iam.cas;
-
- import java.io.StringWriter;
- import java.security.GeneralSecurityException;
- import java.util.HashMap;
- import java.util.Map;
-
- import javax.xml.bind.JAXBContext;
- import javax.xml.bind.JAXBException;
- import javax.xml.bind.Marshaller;
-
- import org.apache.directory.fortress.core.AccessMgr;
- import org.apache.directory.fortress.core.model.Session;
- import org.apache.directory.fortress.core.model.User;
- import org.jasig.cas.authentication.HandlerResult;
- import org.jasig.cas.authentication.PreventedException;
- import org.jasig.cas.authentication.UsernamePasswordCredential;
- import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- public class IamAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler {
-
- private static final Logger LOG = LoggerFactory.getLogger(IamAuthenticationHandler.class);
-
- private AccessMgr accessManager;
- private JAXBContext jaxbContext;
- private Marshaller marshaller;
-
- public IamAuthenticationHandler() {
- try {
- jaxbContext = JAXBContext.newInstance(Session.class);
- marshaller = jaxbContext.createMarshaller();
- } catch (JAXBException e) {
- LOG.error("cannot bind Session with jaxb context", e);
- }
- }
-
- @Override
- protected HandlerResult authenticateUsernamePasswordInternal(
- UsernamePasswordCredential usernamePasswordCredential)
- throws GeneralSecurityException, PreventedException {
- String username = usernamePasswordCredential.getUsername();
- String password = usernamePasswordCredential.getPassword();
- Session iamSession = null;
- String iamXmlSession = null;
- try {
- LOG.trace("trying to authenticate username : {}, password : {}",
- new Object[] {username, password});
- iamSession = accessManager.createSession(new User(username, password.toCharArray()), false);
- LOG.trace("iam session : {}", iamSession);
- if (iamSession != null) {
- StringWriter writer = new StringWriter();
- marshaller.marshal(iamSession, writer);
- iamXmlSession = writer.toString();
- LOG.trace("iam xml session : {}", iamXmlSession);
- Map<String, Object> attributes = new HashMap<>();
- attributes.put("iamSession", iamXmlSession);
- return createHandlerResult(usernamePasswordCredential,
- principalFactory.createPrincipal(username, attributes), null);
- }
- } catch (org.apache.directory.fortress.core.SecurityException e) {
- String errorMessage = "IAM authentication failed for [" + username + "]";
- LOG.trace(errorMessage);
- throw new GeneralSecurityException(errorMessage);
- } catch (JAXBException e) {
- String errorMessage = "cannot marshalling session with value : " + iamSession == null ? "null"
- : iamSession.toString();
- LOG.trace(errorMessage);
- throw new GeneralSecurityException(errorMessage);
- }
- LOG.trace("returning default handler");
- return createHandlerResult(usernamePasswordCredential,
- principalFactory.createPrincipal(username), null);
- }
-
- public AccessMgr getAccessManager() {
- return accessManager;
- }
-
- public void setAccessManager(AccessMgr accessManager) {
- this.accessManager = accessManager;
- }
-
- }
-
-
- In the above source code you can see how I construct a new principal by creating a new attribute map with values contained withing the Apache Fortress Session xml.
-
-####2. The Attribute Populator
-
- In order to populate fortress and pass it on to the client we need to override the casServiceValidationSuccess.jsp file, located at WEB-INF/view/jsp/protocol/2.0/, since its default view won't populating the necessary attributes. Here is how I was able to accomplish that:
-
- :::XML
-
- <%@ page session="false" contentType="application/xml; charset=UTF-8" %>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
- <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
- <!-- cas 2 validation success -->
- <cas:authenticationSuccess>
- <cas:user>${fn:escapeXml(assertion.primaryAuthentication.principal.id)}</cas:user>
- <c:if test="${not empty assertion.primaryAuthentication.principal.attributes}">
- <cas:attributes>
- <c:forEach var="attr" items="${assertion.primaryAuthentication.principal.attributes}" >
- <cas:${fn:escapeXml(attr.key)}><![CDATA[${attr.value}]]></cas:${fn:escapeXml(attr.key)}>
- </c:forEach>
- </cas:attributes>
- </c:if>
- <c:if test="${not empty pgtIou}">
- <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
- </c:if>
- <c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
- <cas:proxies>
- <c:forEach var="proxy" items="${assertion.chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
- <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
- </c:forEach>
- </cas:proxies>
- </c:if>
- </cas:authenticationSuccess>
- </cas:serviceResponse>
-
-One thing that I love about CAS, even if you correctly extracted the attribute at this page (or maybe you just got hacked at this page), CAS is able to protect the returned attributes by changing the services registry configuration. see the HTTPSandIMAPS-10000001.json file. I’ve put ReturnAllAttributeReleasePolicy type for debuging all the attributes returned, you can change it later to make your application more secure as well.
-
-####3. Apache Ignite For Ticket Replication
-
- To have a production readiness we need to somehow manage a high availability requirement, so we're not just using a single cas server. That is why we needed to have a centralized or distributed ticket repository, to allow cas to scale. To scale the ticket repository, I chose Apache Ignite for distributing the tickets. To Implement is very simple, and is also written about in Apereo CAS documentation.
-
-###Client side development:
-
-####1. The Spring Voter
-
- Spring is a great framework, they allow you to add your own interceptors to use your own implementation. WebExpressionVoter is the class you need to extend in order to override the normal spring decision mechanism. Usually you will use xml + regex for registering the condition. However, xml + regex is not the approach I wanted for my development team. See below code snippet, to understand what I did to make this more dynamic.
-
- :::Java
- @Override
- @SuppressWarnings("static-access")
- public int vote(Authentication authentication, FilterInvocation fi,
- Collection<ConfigAttribute> attributes) {
- Authentication securityContextAuthentication =
- SecurityContextHolder.getContext().getAuthentication();
- int result = super.vote(securityContextAuthentication, fi, attributes);
- if (System.getenv(IAM_SECURITY_PARAMETER) != null) {
- LOG.warn("iam security is disable, enable all access mode is enable");
- return result;
- } else {
- LOG.debug("authentication = {}",
- ToStringBuilder.reflectionToString(securityContextAuthentication));
- LOG.debug("super vote for : {}", result);
- if (super.ACCESS_GRANTED == result) {
- String requestMethod = fi.getRequest().getMethod().toLowerCase();
- String filterUrl = getFilterUrl(fi.getHttpRequest());
- if (filterUrl == null) {
- return result;
- }
- try {
- CasAuthenticationToken casAuthenticationToken =
- ((CasAuthenticationToken) securityContextAuthentication);
- LOG.debug("assertion : {}",
- ToStringBuilder.reflectionToString(casAuthenticationToken.getAssertion()));
- String iamSessionXml = (String) casAuthenticationToken.getAssertion().getAttributes()
- .get(IAM_SESSION_ATTRIBUTE_KEY);
- LOG.debug("iam session xml == {}", iamSessionXml);
- Session iamSession = sessionCache.getIfPresent(casAuthenticationToken.getKeyHash());
- if (iamSession == null) {
- Unmarshaller unmarshaller = null;
- try {
- unmarshaller = context.createUnmarshaller();
- } catch (JAXBException ex) {
- LOG.warn("cannot create unmarshaller : ", ex);
- }
- iamSession = (Session) unmarshaller.unmarshal(new StringReader(iamSessionXml));
- sessionCache.put(casAuthenticationToken.getKeyHash(), iamSession);
- }
- StringBuilder sessionPermissionKeyBuilder = new StringBuilder(iamSession.getSessionId()).append(filterUrl).append(requestMethod);
- Boolean isAllowed = accessCache.getIfPresent(sessionPermissionKeyBuilder.toString());
- if(isAllowed == null) {
- isAllowed = accessManager.checkAccess(iamSession, new Permission(filterUrl, requestMethod));
- accessCache.put(sessionPermissionKeyBuilder.toString(), isAllowed);
- }
- LOG.debug("{} is {} to access {} with method {}",
- new Object[] {securityContextAuthentication.getName(),
- isAllowed ? "granted" : "denied", filterUrl, requestMethod});
- if (isAllowed) {
- return super.ACCESS_GRANTED;
- }
- } catch (Exception e) {
- LOG.error("catch exception when communicate with iam server", e);
- }
- }
- return super.ACCESS_DENIED;
- }
- }
-
- Yep, I'm calling fortress to check if the user is allowed to access fortress permissions or not.
-
-#####2. UserDetail Populator
-
- Spring uses the implementation of AbstractCasAssertionUserDetailsService to populate user details following successful authentication, you can see the example at IamUserDetails code, here is the snipet of that class:
-
- :::Java
- @Override
- protected UserDetails loadUserDetails(final Assertion assertion) {
- List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
- LOG.debug("user asssertion : {}", ToStringBuilder.reflectionToString(assertion));
- boolean accountNonExpired = true;
- boolean credentialsNonExpired = true;
- boolean accountNonLocked = true;
- boolean enabled = true;
- for (String attribute : this.attributes) {
- String value = (String) assertion.getPrincipal().getAttributes().get(attribute);
- LOG.debug("value = {}", value);
- if (value != null) {
- LOG.debug("adding default authorization to user");
- grantedAuthorities.add(new SimpleGrantedAuthority(ROLE_USER));
-
- Unmarshaller unmarshaller = null;
- Session iamSession = null;
- try {
- unmarshaller = context.createUnmarshaller();
- iamSession = (Session) unmarshaller.unmarshal(new StringReader(value));
- for (UserRole role : iamSession.getRoles()) {
- LOG.debug("adding {} authorization to user", role.getName().toUpperCase());
- grantedAuthorities.add(new SimpleGrantedAuthority(role.getName().toUpperCase()));
- }
- } catch (Exception ex) {
- LOG.error("cannot generate user details", ex);
- }
- }
- }
- LOG.debug(
- "accountNonExpired : {}, credentialsNonExpired : {}, accountNonLocked : {}, enabled : {}",
- new Object[] {accountNonExpired, credentialsNonExpired, accountNonLocked, enabled});
- return new User(assertion.getPrincipal().getName().toLowerCase().trim(), NON_EXISTENT_PASSWORD_VALUE, enabled,
- accountNonExpired, credentialsNonExpired, accountNonLocked, grantedAuthorities);
- }
-
- You can change the implementation later for your needs.
-
-#####3. Network Might Be a Problem
-
- Since this is running inside a production environment, we needed to consider that sometimes there might be a trouble over our network that causes problems and requires retries. That is why it's important to allow a little delay time in our application. Here's an example of how allow a small delay, in order to allow temorary network glitches and slowdowns to work themselves out.
-
- :::Java
- /*
- * Copyright 2017 to PT. Global Digital Niaga(Blibli.com)
- *
- * Licensed under the Apache License, Version 2.0; you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
- package com.gdn.iam.spring.security;
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.security.cas.authentication.CasAuthenticationProvider;
- import org.springframework.security.core.Authentication;
- import org.springframework.security.core.AuthenticationException;
-
- public class GdnCasAuthenticationProvider extends CasAuthenticationProvider {
-
- private static transient Logger LOG = LoggerFactory.getLogger(GdnCasAuthenticationProvider.class);
- private long sleepForDistributeTicketTime = 300;
-
- @Override
- public Authentication authenticate(Authentication authentication) throws AuthenticationException {
- try {
- LOG.trace(
- "will try to sleep for waiting ticket to be distributed to other node, sleep time : {}",
- getSleepForDistributeTicketTime());
- Thread.sleep(getSleepForDistributeTicketTime());
- } catch (InterruptedException e) {
- LOG.error("something wrong when sleeping", e);
- }
- return super.authenticate(authentication);
- }
-
- public long getSleepForDistributeTicketTime() {
- return sleepForDistributeTicketTime;
- }
-
- public void setSleepForDistributeTicketTime(long sleepForDistributeTicketTime) {
- this.sleepForDistributeTicketTime = sleepForDistributeTicketTime;
- }
-
- }
-
-###Descriptions of authentication flow
-
- The CAS authentication flow will be the same, no changes are required in terms of that authentication flow. Furthermore, you can see that flow at Apereo CAS 4.2.x documentation page.
-
- The main difference now is we don't put the ticket registry inside an in-memory database, we put it inside an Apache Ignite cache, so when other nodes are there it can replicate the ticket between them which increases efficiencies.
-
-###Descriptions of authorization flow
-
- Spring Security usually has the authorization role configuration inside your spring context xml file or using annotations in source. This is the only difference between plain spring security and that using my extended framework solution. We put the configuration inside of Fortress. Everytime the user changes the URL, it will check the user has access to that specific URL and not through the extended voter class. If the user is authorized then the app will give them the correct page, otherwise it will route to 40X http error status page.
-
-###Instructions to test
-
- For testing this example, you need to understand that Apache Fortress configuration is necessary to find fortress.properties on the classpath so it might be good if you put that configuration file at the same classpath, for instance, if you are using tomcat remove all the fortress.properties inside the classes directory and put it on $TOMCAT_HOME/lib/ folder. Make sure get Apache Fortress running at the first step. Here are the detailed instructions for testing this example:
-
-####Server Section
-
-#####1. Read and find the instructions at:
-
- * https://github.com/apache/directory-fortress-core
- * https://github.com/apache/directory-fortress-enmasse
- * https://github.com/apache/directory-fortress-commander
-
- and configure your Apache Fortress properly.
-
-#####2. Clone the project from link at *Where to download* section below, change the configuration properly inside *cas-fortress-servers/src/main/resourcesz8 folder and package it using
-
- :::Maven
- mvn clean package.
-
- Copy the war file from cas-fortress-server/target into the web-container deploy directory.
-
-#####3. Start your web-container and you get cas fortress integrated.
-
-####Client Section
-
- * Simply put the war file inside the web-container deploy directory.
- * Open and login to your commander(fortress-web)
- * Create a user with role ROLE_USER (you can change to what ever role). The role need to align with spring-security.xml for this statement <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />. This is the mandatory role, with this role we are seperate between the anonymous role and authenticate one.
- * Create a permission object containing your restricted url, for instance http://localhost:8080/cas-fortress-client/profile and http://localhost:8080/cas-fortress-client/catalog.
- * Map the permission object and role at permission tab at your commander. Currently we only support get for both of the url.
- * Start your web-container and play with your cas-fortress-client later on.
-
-###Where to download
-
- * https://github.com/bliblidotcom/cas-fortress-example
-
-##Next Steps
-
- Next should be implementing ARBAC solution. Since I don't allow people to create conditional statements inside their application code to check for roles, buttons or page elements that should be not accessible for specific users will appear on their pages, even they can't perform that particular action. This causes some confusion in terms or usability for my users. With ARBAC I believe I can do a whitelist for the page attributes and increase the usability for the user.
diff --git a/content/fortress/user-guide.mdtext b/content/fortress/user-guide.mdtext
deleted file mode 100644
index f9733e3..0000000
--- a/content/fortress/user-guide.mdtext
+++ /dev/null
@@ -1,48 +0,0 @@
-Title: User's Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Fortress User's Guide
-
-This guide is primarily for people new to Fortress. It will guide through basic concepts.
-
-## About this guide
-
-Learn what RBAC is and how to download, install and configure an Apache Fortress instance using ApacheDS or OpenLDAP as the datastore. Over time we'll add documents covering more advanced topics.
-
-## Table of contents
-
-* [1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004](user-guide/1-intro-rbac.html)
- * [1.1 - ANSI RBAC Explained](user-guide/1.1-rbac-explained.html)
- * [1.2 - What ANSI RBAC is not](user-guide/1.2-what-is-not-rbac.html)
- * [1.3 - What ANSI RBAC is](user-guide/1.3-what-rbac-is.html)
- * [1.4 - Why is ANSI RBAC Important?](user-guide/1.4-why-rbac-is-important.html)
- * [1.5 - How to implement ANSI RBAC](user-guide/1.5-how-to-impl-rbac.html)
- * [1.6 - Where to go for more info](user-guide/1.6-go-for-more.html)
-* [2 - Multitenancy](user-guide/2-multitenancy.html)
- * [2.1 - Fortress Multitenancy](user-guide/2.1-fortress-multitenancy.html)
- * [2.2 - Traditional Multi-Instances architecture](user-guide/2.2-tradi-multi-instances.html)
- * [2.3 - Multitenancy under the covers](user-guide/2.3-multitenancy-under-covers.html)
- * [2.4 - Apache Fortress Core Multitenancy Configuration](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md)
- * [2.5 - Apache Fortress Web Multitenancy Configuration](https://github.com/apache/directory-fortress-commander/blob/master/README-MULTITENANCY.md)
-* [3 - Fortress Configuration](user-guide/3-configuration.html)
-* 4 - Install
- * [4.1 - Apache Fortress Core & ApacheDS QUICKSTART](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-APACHEDS.md)
- * [4.2 - Apache Fortress Core & ApacheDS QUICKSTART on DOCKER](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md)
- * [4.3 - Apache Fortress Core & OpenLDAP QUICKSTART](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-SLAPD.md)
- * [4.4 - Apache Fortress Core & OpenLDAP QUICKSTART on DOCKER](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md)
- * [4.5 - Apache Fortress Web & Tomcat QUICKSTART](https://github.com/apache/directory-fortress-commander/blob/master/README-QUICKSTART.md)
diff --git a/content/fortress/user-guide/1-intro-rbac.mdtext b/content/fortress/user-guide/1-intro-rbac.mdtext
deleted file mode 100644
index 50dd8a9..0000000
--- a/content/fortress/user-guide/1-intro-rbac.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 1.1-rbac-explained.html
-NavNextText: 1.1 - ANSI RBAC Explained
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-
-![ANSI RBAC Specification](images/ANSIRBAC-Spec_0.png)
-
-## Table of content
-
-* [1.1 - ANSI RBAC Explained](1.1-rbac-explained.html)
-* [1.2 - What ANSI RBAC is not](1.2-what-is-not-rbac.html)
-* [1.3 - What ANSI RBAC is](1.3-what-rbac-is.html)
-* [1.4 - Why is ANSI RBAC Important?](1.4-why-rbac-is-important.html)
-* [1.5 - How to implement ANSI RBAC](1.5-how-to-impl-rbac.html)
-* [1.6 - Where to go for more info](1.6-go-for-more.html)
diff --git a/content/fortress/user-guide/1.1-rbac-explained.mdtext b/content/fortress/user-guide/1.1-rbac-explained.mdtext
deleted file mode 100644
index 094144f..0000000
--- a/content/fortress/user-guide/1.1-rbac-explained.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: 1.1 - ANSI RBAC Explained
-NavPrev: 1-intro-rbac.html
-NavPrevText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 1.2-what-is-not-rbac.html
-NavNextText: 1.2 - What ANSI RBAC is not
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1 - ANSI RBAC Explained
-
-![ANSI RBAC Specification](images/ANSIRBAC-Spec_0.png)
-
-Misnomers abound as to what constitutes a working Role-Based Access Control (RBAC) system. With ANSI RBAC, Groups are not Roles and resource connections not Sessions. This paper explains what ANSI RBAC is and how it can be applied to existing problem domains. It dispels longstanding myths persistent within the enterprise. Additionally readers receive tips on how to implement their own successful RBAC program and where to go to get a fully compliant ANSI RBAC system that may be used as a reference implementation.
diff --git a/content/fortress/user-guide/1.2-what-is-not-rbac.mdtext b/content/fortress/user-guide/1.2-what-is-not-rbac.mdtext
deleted file mode 100644
index fb3e6bc..0000000
--- a/content/fortress/user-guide/1.2-what-is-not-rbac.mdtext
+++ /dev/null
@@ -1,50 +0,0 @@
-Title: 1.2 - What ANSI RBAC is not
-NavPrev: 1.1-rbac-explained.html
-NavPrevText: 1.1 - ANSI RBAC Explained
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 1.3-what-rbac-is.html
-NavNextText: 1.3 - What ANSI RBAC is
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.2 - What ANSI RBAC is not
-
-* User Groups (i.e. LDAP _groupOfUniqueNames_). In RBAC, Roles are many-to-many mappings between User and Permission entities. Furthermore the assignments and grants may be interrogated, added or removed at any time. Roles should fall within a hierarchy which facilitate control over assets, encourages reuse and reduces the number of entitlements that have to be maintained.
-
- [RFC 4519 LDAP](http://tools.ietf.org/html/rfc4519): Schema for User Applications June 2006
-
- ( 2.5.6.17 NAME 'groupOfUniqueNames'
- SUP top
- STRUCTURAL
- MUST ( uniqueMember $
- cn )
- MAY ( businessCategory $
- seeAlso $
- owner $
- ou $
- o $
- description ) )
-
- *groupOfUniqueNames is not RBAC*
-
-* Resource connections (i.e. LDAP connection). Allowing your LDAP or DB system to calculate entitlements based on user group assignments violates the concept of least privilege. RBAC compliant systems add a role activation step to signon that provides control over what a user can do at a point in time within a particular application.
-
-* User-to-Entitlement Access Control List. Bypassing roles and mapping entitlements directly to users will undermine the ability to control and determine who has access to what resources. It also makes it difficult to figure out what access needs to be granted or revoked and when.
-
-* Outdated or obsolete. Contrary to what is often told, the RBAC model is still a viable means in which to manage security within the enterprise. Employ finer-grained attribute-based or dynamic access controls as needed but ANSI RBAC is still the foundation for sound enterprise IT security strategies.
-
diff --git a/content/fortress/user-guide/1.3-what-rbac-is.mdtext b/content/fortress/user-guide/1.3-what-rbac-is.mdtext
deleted file mode 100644
index 6142d3f..0000000
--- a/content/fortress/user-guide/1.3-what-rbac-is.mdtext
+++ /dev/null
@@ -1,61 +0,0 @@
-Title: 1.3 - What ANSI RBAC is
-NavPrev: 1.2-what-is-not-rbac.html
-NavPrevText: 1.2 - What ANSI RBAC is not
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 1.4-why-rbac-is-important.html
-NavNextText: 1.4 - Why is ANSI RBAC Important?
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.3 - What ANSI RBAC is
-
-There is more to RBAC than using a Role object during policy enforcement.
-
-* ANSI INCITS 359-2001, [http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf](http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf) - The ANSI specification describes RBAC and provides functional specifications in Z-notation.
-
-<CENTER>
-![ANSI RBAC](images/ANSIRBAC-Spec.png)
-</CENTER>
-
-* <b>RBAC0</b> - Users, Roles, Permissions (Objects-Operations), Sessions - Form the Core of ANSI RBAC. Role activation and Permissions mapped to Object->Operation pairing are key facets of the basic ANSI RBAC model.
-
-<CENTER>
-![The Core](images/RbacCore.png)
-</CENTER>
-
-* <b>RBAC1</b> - Hierarchical Roles - Encourages proper role engineering. Parent roles are Business Roles while child roles map to IT Roles. Role hierarchies should be many-to-many or multi-inheritance.
-
-<CENTER>
-![Hierarchical RBAC](images/RbacHier.png)
-</CENTER>
-
-* <b>RBAC2</b> - Static Separation of Duties - Used to limit the privilege of users to within normal boundaries. SSD constraints are applied at role assignment time.
-
-<CENTER>
-![Static Separation of Duties](images/RbacSSD.png)
-</CENTER>
-
-* <b>RBAC3</b> - Dynamic Separation of Duties - Enforces constraints on what functions may used together at any point in time. DSD constraints may be used to enforce strict controls during multi-step approval processes. DSD constraints are applied at role activation time.
-
-<CENTER>
-![Dynamic Separation of Duties](images/RbacDSD.png)
-</CENTER>
-
-* Well defined APIs that can be shared across projects and application development teams.
-
-* Well defined data model. Easily created and replicated across the enterprise.
diff --git a/content/fortress/user-guide/1.4-why-rbac-is-important.mdtext b/content/fortress/user-guide/1.4-why-rbac-is-important.mdtext
deleted file mode 100644
index 84b2e7e..0000000
--- a/content/fortress/user-guide/1.4-why-rbac-is-important.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 1.4 - Why is ANSI RBAC Important?
-NavPrev: 1.3-what-rbac-is.html
-NavPrevText: 1.3 - What ANSI RBAC is
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 1.5-how-to-impl-rbac.html
-NavNextText: 1.5 - How to implement ANSI RBAC
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.4 - Why is ANSI RBAC Important?
-
-* Enforces the concept of least privilege. Granting users business functionality doesn't imply entitlements may be used at any time. For example a bank teller shouldn't withdrawal money from customer accounts outside of normal business hours or freelance contractors don't require access to production resources to do their jobs.
-
-* Enables Regulatory Compliance. Who has been granted authority to the most important resources? How can we be certain that terminiated employees and customers no longer have access to controlled resources?
-
-* Enforces separation of duty policies. For example traders must not be regulators or purchasing agents cannot approve transactions.
-
-* Eases administration costs due to elimination of redundant resources. Enable business units to be delegated administrative tasks.
diff --git a/content/fortress/user-guide/1.5-how-to-impl-rbac.mdtext b/content/fortress/user-guide/1.5-how-to-impl-rbac.mdtext
deleted file mode 100644
index db27e61..0000000
--- a/content/fortress/user-guide/1.5-how-to-impl-rbac.mdtext
+++ /dev/null
@@ -1,68 +0,0 @@
-Title: 1.5 - How to implement ANSI RBAC
-NavPrev: 1.4-why-rbac-is-important.html
-NavPrevText: 1.4 - Why is ANSI RBAC Important?
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 1.6-go-for-more.html
-NavNextText: 1.6 - Where to go for more info
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.5 - How to implement ANSI RBAC
-
-* Learn using the SPEC
-
-* Pick a technology stack you are comfortable with based on current knowledge, SLAs, data storage, and support requirements.
-
-* Design a very simple RBAC data model. Eight objects are all that is needed.
- * User, Role, Permission, Object, Operation, User-Role, Session, Constraints
-
-* Design a simple RBAC software model.
- * Top layer called a Manager and contains a stable public API that external apps may call.
- * Three managers, System, Admin, Review are all that is needed.
- * The implementation the manager interface contains must be able to be be swapped out for another complete RBAC system without impacting dependent apps.
- * External applications use RBAC Manager API to map to internal entitlement systems.
- * Middle layer for RBAC system is optional and may be used for processing fine-grained data validations rules
- * Bottom layer for accessing the actual data.
- * Implementation may be swapped for other back ends without impacting Manager.
- * LDAP, JDBC, Hibernate, JAX-WS, JAX-RS other technologies may be used here to manage the data
-
-* Don't ignore the Audit
- * View before and after images of the data
-
-* Code first as a POC. Start with the core - RBAC0. Get it right first.
-
-* Test driven development and automation key contributors to successful outcome.
- * Engage IT teams.
- * Analyze existing IT entitlements.
- * Use established role mining techniques.
-
-* Map existing IT entitlements to RBAC system using established role engineering techniques
-
-* Use parent roles as Business Roles and child roles as IT Roles.
-
-* Deploy RBAC system into application environment using established standards. Use declarative policy enforcement points like JEE security for coarse-grained, Spring for fine-grained.
-
-* Application teams own mapping between Business and IT roles.
-
-* Model administrative controls on ARBAC. More on ARBAC coming soon...
-
-<CENTER>
- ![Administrative RBAC](images/ARbac.png)
-</CENTER>
-
-* Roll-out (Slow and steady starting out)
diff --git a/content/fortress/user-guide/1.6-go-for-more.mdtext b/content/fortress/user-guide/1.6-go-for-more.mdtext
deleted file mode 100644
index ca1bcb8..0000000
--- a/content/fortress/user-guide/1.6-go-for-more.mdtext
+++ /dev/null
@@ -1,30 +0,0 @@
-Title: 1.6 - Where to go for more info
-NavPrev: 1.5-how-to-impl-rbac.html
-NavPrevText: 1.5 - How to implement ANSI RBAC
-NavUp: 1-intro-rbac.html
-NavUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
-NavNext: 2-multitenancy.html
-NavNextText: 2 - Multitenancy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.6 - Where to go for more info
-
-* Download the ANSI RBAC specification: [http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf](http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf)
-
-* Download working ANSI RBAC reference implementation, like Fortress !
-
diff --git a/content/fortress/user-guide/2-multitenancy.mdtext b/content/fortress/user-guide/2-multitenancy.mdtext
deleted file mode 100644
index 0da7c3c..0000000
--- a/content/fortress/user-guide/2-multitenancy.mdtext
+++ /dev/null
@@ -1,34 +0,0 @@
-Title: 2 - Multitenancy
-Navprev: 1.6-go-for-more.html
-NavPrevText: 1.6 - Where to go for more info
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 2.1-fortress-multitenancy.html
-NavNextText: 2.1 - Fortress Multitenancy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - Multitenancy
-
-To setup and use Fortress in multi-tenant fashion follow these instructions:
-* [README for Apache Fortress Multitenancy Configuration](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md)
-
-More info follows...
-
-* [2.1 - Fortress Multitenancy](2.1-fortress-multitenancy.html)
-* [2.2 - Traditional Multi-Instances architecture](2.2-tradi-multi-instances.html)
-* [2.3 - Multitenancy under the covers](2.3-multitenancy-under-covers.html)
diff --git a/content/fortress/user-guide/2.1-fortress-multitenancy.mdtext b/content/fortress/user-guide/2.1-fortress-multitenancy.mdtext
deleted file mode 100644
index bd9b00f..0000000
--- a/content/fortress/user-guide/2.1-fortress-multitenancy.mdtext
+++ /dev/null
@@ -1,40 +0,0 @@
-Title: 2.1 - Fortress Multitenancy
-Navprev: 2-multitenancy.html
-NavPrevText: 2 - Multitenancy
-NavUp: 2-multitenancy.html
-NavUpText: 2 - Multitenancy
-NavNext: 2.2-tradi-multi-instances.html
-NavNextText: 2.2 - Traditional Multi-Instances architecture
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - Fortress Multitenancy
-
-## Multitenancy Defined
-
-(From Wikipedia)
-
-Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.
-
-Multitenancy is also regarded as one of the essential attributes of cloud computing.[1]
-
-
-## After Fortress
-
-Multi-tenancy allows many clients to share the same ldap infrastructure thus enjoy increased operational efficiency.
-
-![Multitenant Fortress Network Diagram](images/multitenant-fortressnetworkdiagram600.png)
diff --git a/content/fortress/user-guide/2.2-tradi-multi-instances.mdtext b/content/fortress/user-guide/2.2-tradi-multi-instances.mdtext
deleted file mode 100644
index 7e538e8..0000000
--- a/content/fortress/user-guide/2.2-tradi-multi-instances.mdtext
+++ /dev/null
@@ -1,40 +0,0 @@
-Title: 2.2 - Traditional Multi-Instances architecture
-Navprev: 2.1-fortress-multitenancy.html
-NavPrevText: 2.1 - Fortress Multitenancy
-NavUp: 2-multitenancy.html
-NavUpText: 2 - Multitenancy
-NavNext: 2.3-multitenancy-under-covers.html
-NavNextText: 2.3 - Multitenancy under the covers
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - Traditional Multi-Instances architecture
-
-## Multitenancy Defined
-
-(From Wikipedia)
-
-Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.
-
-Multitenancy is also regarded as one of the essential attributes of cloud computing.[1]
-
-
-## Before Fortress
-
-Client data had to be maintained on separate instances of LDAP server.
-
-![Multitenancy](images/MultiInstance-TraditionalNetworkDiagram2.png)
diff --git a/content/fortress/user-guide/2.3-multitenancy-under-covers.mdtext b/content/fortress/user-guide/2.3-multitenancy-under-covers.mdtext
deleted file mode 100644
index 7c590e2..0000000
--- a/content/fortress/user-guide/2.3-multitenancy-under-covers.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 2.3 - Multitenancy under the covers
-Navprev: 2.2-tradi-multi-instances.html
-NavPrevText: 2.2 - Traditional Multi-Instances architecture
-NavUp: 2-multitenancy.html
-NavUpText: 2 - Multitenancy
-NavNext: 3-configuration.html
-NavNextText: 3 - Fortress Configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3 - Multitenancy under the covers
-
-## Under the covers
-
-The Fortress data design allows clients to share a single server instance because each has its own storage area set aside in the back end database. This increases operational efficiency of the hosting service provider’s data center without sacrificing data isolation on behalf of the clients who use it.
-
-<CENTER>
-![](images/fortressmultitenantldapschema600.png)
-</center>
\ No newline at end of file
diff --git a/content/fortress/user-guide/3-configuration.mdtext b/content/fortress/user-guide/3-configuration.mdtext
deleted file mode 100644
index 36c4c7a..0000000
--- a/content/fortress/user-guide/3-configuration.mdtext
+++ /dev/null
@@ -1,29 +0,0 @@
-Title: 3 - Fortress Configuration
-Navprev: 2.3-multitenancy-under-covers.html
-NavPrevText: 2.3 - Multitenancy under the covers
-NavUp: ../user-guide.html
-NavUpText: User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1 - Fortress Configuration
-
-In order to use the API, you must configure it. As it will connect to a remote LDAP server. Follow the installation instructions to learn how it's done.
-
-More info here on how it works:
-* [README for Apache Fortress Configuration Subsystem](https://github.com/apache/directory-fortress-core/blob/master/README-CONFIG.md)
-
diff --git a/content/fortress/vision.mdtext b/content/fortress/vision.mdtext
deleted file mode 100644
index c63fdb2..0000000
--- a/content/fortress/vision.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: Vision
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Architectural Vision
-
-Fortress provides an authorization system that builds on existing open source applications.
-
-<CENTER>
- <IMG src="../../images/Fortress-IAMServer-v2.png" alt="Screenshot"/>
-</CENTER>
diff --git a/content/index.mdtext b/content/index.mdtext
deleted file mode 100644
index b835c50..0000000
--- a/content/index.mdtext
+++ /dev/null
@@ -1,116 +0,0 @@
-Title: Welcome to Apache Directory
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-<center>
- <h1>
- The Apache Directory™ Project
- </h1>
-</center>
-
-## Project Vision
-
-We strive to increase LDAP awareness, comfort and adoption to bring forth what we call the Modern LDAP Renaissance. Learn more about our vision [here](https://directory.apache.org/vision.html)
-
-## Directory Sub-Projects
-
-The Apache Directory Project provides directory solutions entirely written in Java. These include a directory server, which has been certified as LDAP v3 compliant by the Open Group (ApacheDS), and Eclipse-based directory tools (Apache Directory Studio).
-
-<STYLE type="text/css">
-.separator {height: 10px;}
-.header {text-align: center; font-size: 14px; color: #555555;}
-td {font-size: 12px;}
-</STYLE>
-
-<table width="99%" border="0" style="text-align: justify;">
- <tbody>
- <tr>
- <!-- ApacheDS project -->
- <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="apacheds/downloads.html" class="download_badge_apacheds"><b>Download<br>ApacheDS 2.0.0.AM26</b></a>
- </div>
-
- <div class="separator"> </div>
- ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
- </td>
-
- <!-- Apache Studio project -->
- <td witdh="50%" style="border-width: 0; padding-left: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="studio/downloads.html" class="download_badge_studio"><b>Download Apache<br>Directory Studio 2.0.0-M15</b></a>
- </div>
-
- <div class="separator"> </div>
- Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.
- </td>
- </tr>
- <tr>
- <!-- Apache LDAP API project -->
- <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="api/downloads-1.html" class="download_badge_api"><b>Download Apache<br>LDAP API 1.0.3</b></a>
- </div>
-
- <div class="download-link">
- <a href="api/downloads-2.html" class="download_badge_api"><b>Download Apache<br>LDAP API 2.0.1</b></a>
- </div>
-
- <div class="separator"> </div>
- The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
- This is a "schema aware" API with some convenient ways to access all types of LDAP servers, not only ApacheDS but any LDAP server.
- The API is OSGI ready and extensible. New controls, schema elements and network layer could be added or used in the near future.
- </td>
-
- <!-- Apache Mavibot project -->
- <td witdh="50%" style="border-width: 0; padding-left: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="mavibot/downloads.html" class="download_badge_mavibot"><b>Download Apache<br>Mavibot 1.0.0-M8</b></a>
- </div>
-
- <div class="separator"> </div>
- Mavibot™ is a <em>Multi Version Concurrency Control</em> (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the Apache Directory Server), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
- </td>
- </tr>
-
- <tr>
- <!-- Apache Kerby project -->
- <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="kerby/downloads.html" class="download_badge_kerby"><b>Download Apache<br>Kerby 1.1.1</b></a>
- </div>
-
- <div class="separator"> </div>
- Apache Kerby™ is a Java Kerberos binding. It provides a rich, intuitive and interoperable implementation, library, KDC and various facilities that integrates PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.
- </td>
-
- <!-- Apache Fortress project -->
- <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
- <div class="download-link">
- <a href="fortress/downloads.html" class="download_badge_mavibot"><b>Download Apache<br>Fortress 2.0.5</b></a>
- </div>
-
- <div class="separator"> </div>
- Apache Fortress™ is a standards-based authorization system that provides attribute and role-based access control, delegated administration and password policy services using an LDAP backend.
- </td>
-
- </tr>
-
- </tbody>
-</table>
-
-
diff --git a/content/issue-tracking.mdtext b/content/issue-tracking.mdtext
deleted file mode 100644
index 67a8a90..0000000
--- a/content/issue-tracking.mdtext
+++ /dev/null
@@ -1,43 +0,0 @@
-Title: Issue Tracking
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Issue Tracking
-
-Our project uses [JIRA](http://www.atlassian.com/software/jira), a Java EE based issue tracking and project management application.
-
-![JIRA](images/jira-space-logo.gif)
-
-Issues, bugs, and feature requests should be submitted to the following issue tracking system.
-
-<DIV class="note" markdown="1">
- As a general advice, server bugs must be added into DIRSERVER, not DIR.
- The DIR token should be used for general problems like documentation errors, and general problems not related to the server itself.
- Following this advice will help us a lot to improve bug tracking and resolution :-)
-</DIV>
-
-| Directory Sub-Project | JIRA key | Link to issue tracking system |
-|:-:|:-:|---|
-| ApacheDS | DIRSERVER | [http://issues.apache.org/jira/browse/DIRSERVER](http://issues.apache.org/jira/browse/DIRSERVER) |
-| LDAP API | DIRAPI | [http://issues.apache.org/jira/browse/DIRAPI](http://issues.apache.org/jira/browse/DIRAPI) |
-| Shared | DIRSHARED | [http://issues.apache.org/jira/browse/DIRSHARED](http://issues.apache.org/jira/browse/DIRSHARED) |
-| Studio | DIRSTUDIO | [http://issues.apache.org/jira/browse/DIRSTUDIO](http://issues.apache.org/jira/browse/DIRSTUDIO) |
-| Kerberos | DIRKRB | [http://issues.apache.org/jira/browse/DIRKRB](http://issues.apache.org/jira/browse/DIRKRB) |
-| General (documentation, site) | DIR | [http://issues.apache.org/jira/browse/DIR](http://issues.apache.org/jira/browse/DIR) |
-| Triplesec | DIRTSEC | [http://issues.apache.org/jira/browse/DIRTSEC](http://issues.apache.org/jira/browse/DIRTSEC) |
-| Fortress | FC | [http://issues.apache.org/jira/browse/FC](http://issues.apache.org/jira/browse/FC) |
-| SCIMple | SCIMPLE | [http://issues.apache.org/jira/browse/SCIMPLE](http://issues.apache.org/jira/browse/SCIMPLE) |
\ No newline at end of file
diff --git a/content/kerby/developer-guide.mdtext b/content/kerby/developer-guide.mdtext
deleted file mode 100644
index 231a985..0000000
--- a/content/kerby/developer-guide.mdtext
+++ /dev/null
@@ -1,89 +0,0 @@
-Title: Developer's Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Developer's Guide
-
-This is a simple guide to help developers get going.
-
-## Source Repository
-
-To get the source, you will need to have git installed. Just type the following command to get the latest development version:
-
- git clone https://gitbox.apache.org/repos/asf/directory-kerby.git
-
-
-## Git Mirror
-
-The git repository is mirrored to Github: <https://github.com/apache/directory-kerby/>.
-
-## Build Requirements:
-
-* JDK 1.7+
-* Maven 3.0 or later
-* Internet connection for first build (to fetch all Maven and Kerby dependencies)
-
-##Where to run Maven from?
-
-It should be run at the top directory of Kerby.
-
-##Maven build goals:
-
-* Clean : mvn clean
-* Compile : mvn compile
-* Run tests : mvn test
-* Create JAR : mvn package
-* Install JAR in M2 cache : mvn install
-* Deploy JAR to Maven repo : mvn deploy
-* Build distribution : mvn package [-Pdist]
-* Run findbugs : mvn compile findbugs:findbugs
-* Run benchmarks : mvn integration-test -Pbenchmark
-
-##Build options:
-
-* To run findbugs without running tests :
-
- $ mvn clean package -DskipTests findbugs:findbugs [site]
-
-* Building distributions without running tests :
-
- $ mvn package -Pdist -DskipTests
-
-(tar package in /kerby/kerby-dist/kdc-dist/target/ & /kerby/kerby-dist/tool-dist/target/)
-
-* Generate javadoc without running tests:
-
- $ mvn clean package -DskipTests javadoc:javadoc
-
-* Checkstyle plugin & pmd plugin are run by default.
-To prevent them from running, add option [-Pnochecks], such as:
-
- $ mvn package -Pnochecks
-
-## Setup Intellij
-
-1. File -> Import Project...
-2. Choose 'directory-kerby' as root directory
-3. Import project from external model -> Maven
-4. Finish
-
-
-## Issue Tracker
-
-Jira: https://issues.apache.org/jira/browse/DIRKRB
-
-
diff --git a/content/kerby/download-old-versions.mdtext b/content/kerby/download-old-versions.mdtext
deleted file mode 100644
index 1494119..0000000
--- a/content/kerby/download-old-versions.mdtext
+++ /dev/null
@@ -1,53 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-<CENTER>
-
-| Version| Download Link | Javadoc & XRef | Date |
-|:-:|:-:|:-:|:-:|
-| Apache KERBY 1.1.1| [Download](https://archive.apache.org/dist/directory/kerby/dist/1.1.1/)
-| Apache KERBY 1.0.1| [Download](https://archive.apache.org/dist/directory/kerby/dist/1.0.1/)
-
-</CENTER>
-
-We encourage you to verify the integrity of the downloaded file using:
-
-* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-* the checksum file
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-
-Alternatively, you can verify the checksums of the files (see the [How to verify downloaded files](https://www.apache.org/info/verification.html) page).
diff --git a/content/kerby/download/download-archive.mdtext b/content/kerby/download/download-archive.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/kerby/download/download-archive.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/kerby/download/download-sources.mdtext b/content/kerby/download/download-sources.mdtext
deleted file mode 100644
index 3f8ffb5..0000000
--- a/content/kerby/download/download-sources.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/kerby/downloads.mdtext b/content/kerby/downloads.mdtext
deleted file mode 100644
index 73413c3..0000000
--- a/content/kerby/downloads.mdtext
+++ /dev/null
@@ -1,61 +0,0 @@
-Title: Kerby Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads
-
-## Jar Download
-
-###
-
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
-
-## Maven Dependency
-
-The Apache Kerby is also available as a Maven dependency:
-
-### Kerby Client API:
-
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerb-client-api-all</artifactId>
- <version>2.0.1</version>
- </dependency>
-
-### Kerby Server API:
-
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerb-server-api-all</artifactId>
- <version>2.0.1</version>
- </dependency>
-
-### Kerby ASN1:
-
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerby-asn1</artifactId>
- <version>2.0.1</version>
- </dependency>
-
-### Kerby Simple KDC:
-
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerb-simplekdc</artifactId>
- <version>2.0.1</version>
- </dependency>
diff --git a/content/kerby/features.mdtext b/content/kerby/features.mdtext
deleted file mode 100644
index be69494..0000000
--- a/content/kerby/features.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: Features
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Kerby Features
-
-Kerby is an implementation of Kerberos V5 protocol in pure Java. It provides a rich, intuitive and interoperable library, KDC and various facilities that integrate PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.
-Following features are (already) supported:
-
-* Kerberos libraries:
- * Client
- * KDC server
- * Kadmin
- * Credential cache and keytab utilities
-
-* Standalone KDC server
-
-* Support for various backends:
- * In-memory
- * Mavibot (MVCC BTree)
- * LDAP
- * JSON
- * Zookeeper
-
-* Embeddable KDC server allows easy integration into products for unit testing or production deployment.
-
-* FAST/Preauthentication framework, to allow popular and useful authentication mechanisms.
-
-* Token Preauth mechanism, to allow clients to request tickets using JWT tokens.
-
-* Client can request a TGT with:
- * User plain password credential
- * User keyTab
- * User token credential
-
-* Client can request a service ticket with:
- * user TGT credential for a server
- * user AccessToken credential for a server
-
-* Network support including UDP and TCP transport with two implementations:
- * Default implementation based on the JRE without depending on other libraries.
- * Netty based implementation for better throughput, lower latency.
-
-* Tools:
- * kdcinit: Initialize and prepare KDC, like choose storage type, setting up necessary principals (tgs, kadmin) etc.
- * kadmin: Command-line interface to administer Kerby.
- * kinit: Obtains and caches initial ticket-granting tickets for principals.
- * klist: Lists the Kerberos principals and tickets held in a credentials cache, or the keys held in a keytab file.
-
-* Support for JAAS, GSSAPI and SASL frameworks, allowing applications to leverage the authentication mechanisms provided by Kerby.
-
diff --git a/content/kerby/index.mdtext b/content/kerby/index.mdtext
deleted file mode 100644
index 92f0dae..0000000
--- a/content/kerby/index.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Welcome to Apache Kerby
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/kerby/issues.mdtext b/content/kerby/issues.mdtext
deleted file mode 100644
index 5bc76fa..0000000
--- a/content/kerby/issues.mdtext
+++ /dev/null
@@ -1,32 +0,0 @@
-Title: Kerby Issues
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Kerby Issue tracking
-
-Our project uses [JIRA](https://issues.apache.org/jira/browse/DIRKRB/), a Java EE based issue tracking and project management application.
-
-![JIRA](../images/jira-space-logo.gif)
-
-Issues, bugs, and feature requests should be submitted to the following issue tracking system :
-
-
-| Directory Sub-Project | JIRA key | Link to issue tracking system |
-|:-:|:-:|---|
-| Kerby | DIRKRB | [http://issues.apache.org/jira/browse/DIRKRB](http://issues.apache.org/jira/browse/DIRKRB) |
-
-Umbrella JIRA: it's tracked in the master JIRA DIRKRB-102(issues.apache.org/jira/browse/DIRKRB-102), and find tasks there.
\ No newline at end of file
diff --git a/content/kerby/kerby-asn1.mdtext b/content/kerby/kerby-asn1.mdtext
deleted file mode 100644
index 8bbb47f..0000000
--- a/content/kerby/kerby-asn1.mdtext
+++ /dev/null
@@ -1,387 +0,0 @@
-Title: Kerby ASN1
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Kerby ASN1
-
-### ASN1 hierarcy
-
-![](hierarchy.png)
-
-### A ASN1 parser with easy and simple API
-
- // encoding
- Asn1Integer aValue = new Asn1Integer(8899);
- byte[] encoded = aValue.encode();
-
- // decoding
- byte[] contentToDecode = ...
- Asn1Integer decodedValue = new Asn1Integer();
- decodedValue.decode(contentToDecode);
- Integer value = decodedValue.getValue();
-
-
-### Data-driven ASN1 encoding/decoding framework and parser
-
-With the following definition from Kerberos protocol
-
- AuthorizationData ::= SEQUENCE OF SEQUENCE {
- ad-type [0] Int32,
- ad-data [1] OCTET STRING
- }
-
-
-You can model AuthzDataEntry as follows
-
- public class AuthorizationDataEntry extends KrbSequenceType {
- /**
- * The possible fields
- */
- protected enum AuthorizationDataEntryField implements EnumType {
- AD_TYPE,
- AD_DATA;
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int getValue() {
- return ordinal();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getName() {
- return name();
- }
- }
-
- /** The AuthorizationDataEntry's fields */
- private static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
- new ExplicitField(AuthorizationDataEntryField.AD_TYPE, Asn1Integer.class),
- new ExplicitField(AuthorizationDataEntryField.AD_DATA, Asn1OctetString.class)
- };
-
- /**
- * Creates an AuthorizationDataEntry instance
- */
- public AuthorizationDataEntry() {
- super(fieldInfos);
- }
-
- /**
- * @return The AuthorizationType (AD_TYPE) field
- */
- public AuthorizationType getAuthzType() {
- Integer value = getFieldAsInteger(AuthorizationDataEntryField.AD_TYPE);
- return AuthorizationType.fromValue(value);
- }
-
- /**
- * Sets the AuthorizationType (AD_TYPE) field
- * @param authzType The AuthorizationType to set
- */
- public void setAuthzType(AuthorizationType authzType) {
- setFieldAsInt(AuthorizationDataEntryField.AD_TYPE, authzType.getValue());
- }
-
- /**
- * @return The AuthorizationType (AD_DATA) field
- */
- public byte[] getAuthzData() {
- return getFieldAsOctets(AuthorizationDataEntryField.AD_DATA);
- }
-
- /**
- * Sets the AuthorizationData (AD_DATA) field
- * @param authzData The AuthorizationData to set
- */
- public void setAuthzData(byte[] authzData) {
- setFieldAsOctets(AuthorizationDataEntryField.AD_DATA, authzData);
- }
- }
-
-And then define AuthorizationData simply
-
- public class AuthorizationData extends KrbSequenceOfType<AuthorizationDataEntry> {
-
- }
-
-
-Then you can process with above definitions, encode and decode, without caring about the details.
-
-Think about how to implement the following more complex and pratical sample from [ITU-T Rec. X.680 ISO/IEC 8824-1](http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf):
-
- A.1 ASN.1 description of the record structure
- The structure of the hypothetical personnel record is formally described below using ASN.1 specified in
- ITU-T Rec. X.680 | ISO/IEC 8824-1 for defining types.
-
- PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET {
- Name Name,
- title [0] VisibleString,
- number EmployeeNumber,
- dateOfHire [1] Date,
- nameOfSpouse [2] Name,
- children [3] IMPLICIT
- SEQUENCE OF ChildInformation DEFAULT {}
- }
-
- ChildInformation ::= SET {
- name Name,
- dateOfBirth [0] Date
- }
-
- Name ::= [APPLICATION 1] IMPLICIT SEQUENCE {
- givenName VisibleString,
- initial VisibleString,
- familyName VisibleString
- }
-
-EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER
-Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD
-```
-Similarly as above, we can have (from the unit test codes):
-
- public class PersonnelRecord extends Asn1TaggingSet {
- protected enum PersonnelRecordField implements EnumType {
- NAME,
- TITLE,
- NUMBER,
- DATE_OF_HIRE,
- NAME_OF_SPOUSE,
- CHILDREN;
-
- @Override
- public int getValue() {
- return ordinal();
- }
-
- @Override
- public String getName() {
- return name();
- }
- }
-
- static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
- new ExplicitField(PersonnelRecordField.NAME, -1, Name.class),
- new ExplicitField(PersonnelRecordField.TITLE, 0, Asn1VisibleString.class),
- new ExplicitField(PersonnelRecordField.NUMBER, -1, EmployeeNumber.class),
- new ExplicitField(PersonnelRecordField.DATE_OF_HIRE, 1, Date.class),
- new ExplicitField(PersonnelRecordField.NAME_OF_SPOUSE, 2, Name.class),
- new ImplicitField(PersonnelRecordField.CHILDREN, 3, Children.class)
- };
-
- public PersonnelRecord() {
- super(0, fieldInfos, true, true);
- }
-
- public void setName(Name name) {
- setFieldAs(PersonnelRecordField.NAME, name);
- }
-
- public Name getName() {
- return getFieldAs(PersonnelRecordField.NAME, Name.class);
- }
-
- public void setTitle(String title) {
- setFieldAs(PersonnelRecordField.TITLE, new Asn1VisibleString(title));
- }
-
- public String getTitle() {
- return getFieldAsString(PersonnelRecordField.TITLE);
- }
-
- public void setEmployeeNumber(EmployeeNumber employeeNumber) {
- setFieldAs(PersonnelRecordField.NUMBER, employeeNumber);
- }
-
- public EmployeeNumber getEmployeeNumber() {
- return getFieldAs(PersonnelRecordField.NUMBER, EmployeeNumber.class);
- }
-
- public void setDateOfHire(Date dateOfHire) {
- setFieldAs(PersonnelRecordField.DATE_OF_HIRE, dateOfHire);
- }
-
- public Date getDateOfHire() {
- return getFieldAs(PersonnelRecordField.DATE_OF_HIRE, Date.class);
- }
-
- public void setNameOfSpouse(Name spouse) {
- setFieldAs(PersonnelRecordField.NAME_OF_SPOUSE, spouse);
- }
-
- public Name getNameOfSpouse() {
- return getFieldAs(PersonnelRecordField.NAME_OF_SPOUSE, Name.class);
- }
-
- public void setChildren(Children children) {
- setFieldAs(PersonnelRecordField.CHILDREN, children);
- }
-
- public Children getChildren() {
- return getFieldAs(PersonnelRecordField.CHILDREN, Children.class);
- }
-
- public static class Children extends Asn1SequenceOf<ChildInformation> {
- public Children(ChildInformation ... children) {
- super();
- for (ChildInformation child : children) {
- addElement(child);
- }
- }
-
- public Children() {
- super();
- }
- }
-
- public static class ChildInformation extends Asn1SetType {
- protected enum ChildInformationField implements EnumType {
- CHILD_NAME,
- DATE_OF_BIRTH;
-
- @Override
- public int getValue() {
- return ordinal();
- }
-
- @Override
- public String getName() {
- return name();
- }
- }
-
- static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
- new ExplicitField(ChildInformationField.CHILD_NAME, -1, Name.class),
- new ExplicitField(ChildInformationField.DATE_OF_BIRTH, 0, Date.class)
- };
-
- public ChildInformation() {
- super(tags);
- }
-
- public void setName(Name name) {
- setFieldAs(ChildInformationField.CHILD_NAME, name);
- }
-
- public Name getName() {
- return getFieldAs(ChildInformationField.CHILD_NAME, Name.class);
- }
-
- public void setDateOfBirth(Date date) {
- setFieldAs(ChildInformationField.DATE_OF_BIRTH, date);
- }
-
- public Date getDateOfBirth() {
- return getFieldAs(ChildInformationField.DATE_OF_BIRTH, Date.class);
- }
- }
-
- public static class Name extends Asn1TaggingSequence {
-
- protected enum NameField implements EnumType {
- GIVENNAME,
- INITIAL,
- FAMILYNAME;
-
- @Override
- public int getValue() {
- return ordinal();
- }
-
- @Override
- public String getName() {
- return name();
- }
- }
-
- static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
- new ExplicitField(NameField.GIVENNAME, -1, Asn1VisibleString.class),
- new ExplicitField(NameField.INITIAL, -1, Asn1VisibleString.class),
- new ExplicitField(NameField.FAMILYNAME, -1, Asn1VisibleString.class)
- };
-
- public Name() {
- super(1, tags, true, true);
- }
-
- public Name(String givenName, String initial, String familyName) {
- this();
- setGivenName(givenName);
- setInitial(initial);
- setFamilyName(familyName);
- }
-
- public void setGivenName(String givenName) {
- setFieldAs(NameField.GIVENNAME, new Asn1VisibleString(givenName));
- }
-
- public String getGivenName() {
- return getFieldAsString(NameField.GIVENNAME);
- }
-
- public void setInitial(String initial) {
- setFieldAs(NameField.INITIAL, new Asn1VisibleString(initial));
- }
-
- public String getInitial() {
- return getFieldAsString(NameField.INITIAL);
- }
-
- public void setFamilyName(String familyName) {
- setFieldAs(NameField.FAMILYNAME, new Asn1VisibleString(familyName));
- }
-
- public String getFamilyName() {
- return getFieldAsString(NameField.FAMILYNAME);
- }
- }
-
- public static class EmployeeNumber extends Asn1Tagging<Asn1Integer> {
- public EmployeeNumber(Integer value) {
- super(2, new Asn1Integer(value), true, true);
- }
-
- public EmployeeNumber() {
- super(2, new Asn1Integer(), true, true);
- }
- }
-
- public static class Date extends Asn1Tagging<Asn1VisibleString> {
- public Date(String value) {
- super(3, new Asn1VisibleString(value), true, true);
- }
- public Date() {
- this(null);
- }
- }
- }
-
-### Asn1 API and parsing/dumping facilities
-* ASN1 dumping tool to help analyze ASN1 encoding stream or packet. It can be used to exercise the framework with all kinds of testing binary inputs.
-* The shortcut API for ASN1 parser, encoding, decoding.
-
-### Notes
-* Extensive tests coverage for BER & DER encoding and decoding
-* Fully self-contained, no extra dependency
-
-### License
-Apache V2 License
-
diff --git a/content/kerby/news.mdtext b/content/kerby/news.mdtext
deleted file mode 100644
index b1b700d..0000000
--- a/content/kerby/news.mdtext
+++ /dev/null
@@ -1,134 +0,0 @@
-# News
-<h2 class="news">Apache Kerby 2.0.1 released <em>posted on June 3, 2020</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-2.0.1.
-
-The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12344836).
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Kerby 2.0.0 released <em>posted on Jan 14, 2019</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-2.0.0.
-
-The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12342433).
-
-Downloads are available [here](downloads.html)
-<h2 class="news">Apache Kerby 1.1.1 released <em>posted on May 25th, 2018</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-1.1.1.
-
-The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12342211).
-
-Downloads are available [here](downloads.html)
-<h2 class="news">Apache Kerby 1.1.0 released <em>posted on November 27th, 2017</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-1.1.0. This is a new major release of Apache Kerby, which implements
-cross-realm support, and also includes a GSSAPI module.
-
-The issues fixed are available [here](https://issues.apache.org/jira/projects/DIRKRB/versions/12341144).
-
-Downloads are available [here](downloads.html)
-<h2 class="news">Apache Kerby 1.0.1 released <em>posted on September 4th, 2017</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-1.0.1. The issues fixed are available [here](https://issues.apache.org/jira/projects/DIRKRB/versions/12340574).
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Kerby 1.0.0 released <em>posted on May 13th, 2017</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby
-1.0.0. The issues fixed are available [here](https://issues.apache.org/jira/browse/DIRKRB/fixforversion/12332775).
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Kerby 1.0.0-RC2 released <em>posted on March 14th, 2016</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby 1.0.0-RC2.
-
-105 JIRA issues were resolved and with the following Features and important changes since 1.0.0-RC1:
-
-1. Anonymous PKINIT support(BETA): allows a client to obtain anonymous credentials without authenticating as any particular principal.
-
-2. Finished token support:
- * Add ability to encrypt and sign using non-RSA keys;
- * Get the verify key for signed JWT token from kdc config;
- * Token issuer must be trusted as one of preconfigured issuers;
- * Add support for decrypting JWT tokens in the KDC.
-
-3. PKIX CMS/X509 support.
-
-4. BER encoding support.
-
-5. Improved the ASN1 framework:
- * Separate Asn1 parser;
- * Support decoding of primitive but constructed encoded types;
- * Allow to define explicit and implicit fields more easily for collection types;
- * Providing an API to use some useful ASN1 functions by consolidating existing utilities
-
-6. Dump support for Asn1.
- * provide an ASN1 dumping tool for troubleshooting
-
-7. Separate KrbClient, KrbTokenClient, and KrbPkinitClient APIs.
-
-<h2 class="news">Apache Kerby 1.0.0-RC1 released <em>posted on September 16th, 2015</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Kerby 1.0.0-RC1, the
-first release candidate towards a 1.0 version.
-
-Downloads are available [here](downloads.html)
-
-Apache Kerby 1.0.0-RC1 Release Notes
-====================================
-
-In this release 236 JIRA issues were resolved and the following features are supported:
-
-1. Kerberos libraries:
- * Client
- * KDC server
- * Kadmin
- * Credential cache and keytab utilities
-
-2. Standalone KDC server .
-
-3. Support for various identity backends:
- * In-memory
- * JSON
- * LDAP
- * Mavibot(MVCC BTree)
- * Zookeeper
-
-4. Embedded KDC server allows easy integration into products for unit tests or production deployment.
-
-5. FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
-
-6. Token Preauth mechanism to allow clients to request tickets using JWT tokens.
-
-7. Client can request a TGT with:
- * User plain password credential
- * User keyTab
- * User token credential
-
-8. Client can request a service ticket with:
- * user TGT credential for a server
- * user AccessToken credential for a server
-
-9. Network support including UDP and TCP transport with two implementations:
- * Default implementation based on the JRE without depending on other libraries.
- * Netty based implementation for better throughput, lower latency.
-
-10. Tools:
- * kdcinit: Initialize and prepare KDC, like choose storage type, setting up necessary principals (tgs, kadmin) etc.
- * kadmin: Command-line interfaces to administration system.
- * kinit: Obtains and caches an initial ticket-granting ticket for principal.
- * klist: Lists the Kerby principal and tickets held in a credentials cache, or the keys held in a keytab file.
-
-11. Support for JAAS, GSSAPI and SASL frameworks that applications can leverage the authentication mechanisms provided by Kerby.
-
-12. Building support: checking style and find bugs.
-
diff --git a/content/kerby/overview.mdtext b/content/kerby/overview.mdtext
deleted file mode 100644
index bfeebb4..0000000
--- a/content/kerby/overview.mdtext
+++ /dev/null
@@ -1,13 +0,0 @@
-## The Initiatives/Goals
-
-* Aims to become the preferred Kerberos server implementation in java, with rich facilities that integrate Kerberos, PKI and token (OAuth2) on both client and server sides.
-* Provides client API to interact with any KDC server.
-* Provides an embeddable and standalone KDC server that supports various backends for storing principals and keys.
-* Comes with in-memory, Mavibot(MVCC BTree), JSON, LDAP and Zookeeper backends to store data.
-* Embedded KDC server allows easy integration into products for unit testing or production deployment.
-* Supports FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
-* Supports PKINIT mechanism to allow clients to request tickets using x509 certificate credentials.
-* Supports Token Preauth mechanism to allow clients to request tickets using JWT tokens.
-* Supports OTP mechanism to allow clients to request tickets using One Time Password.
-* Provides support for JAAS, GSSAPI and SASL frameworks that applications can leverage.
-* Minimal dependencies, SLF4J is the only external dependency in the core part.
diff --git a/content/kerby/tutorials.mdtext b/content/kerby/tutorials.mdtext
deleted file mode 100644
index 1ff96d4..0000000
--- a/content/kerby/tutorials.mdtext
+++ /dev/null
@@ -1,4 +0,0 @@
-## Apache Kerby Tutorials
-
-* [Testing Kerberos with Web Services using Apache Kerby](http://coheigea.blogspot.ie/2015/11/testing-kerberos-with-web-services.html)
-* [Integrating JSON Web Tokens with Kerberos using Apache Kerby](http://coheigea.blogspot.ie/2017/09/integrating-json-web-tokens-with.html)
diff --git a/content/kerby/user-guide.mdtext b/content/kerby/user-guide.mdtext
deleted file mode 100644
index ccd23f9..0000000
--- a/content/kerby/user-guide.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: Kerby User's Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Kerby User's Guide
-
-This is a simple guide to help users and developers to go through the concepts.
-
-## Table of contents
-
-* [1 - How to begin](user-guide/1-how-to-begin.html)
-* [2 - APIs](user-guide/2-kerberos-library.html)
- * [2.1 - KrbClient APIs](user-guide/2.1-krbclient-apis.html)
- * [2.2 - Kadmin](user-guide/2.2-kadmin.html)
- * [2.3 - KdcServer](user-guide/2.3-kdcserver.html)
- * [2.4 - SimpleKdcServer](user-guide/2.4-simplekdcserver.html)
-* [3 - Tools](user-guide/3-tools.html)
- * [3.1 - kdcinit](user-guide/3.1-kdcinit.html)
- * [3.2 - kadmin](user-guide/3.2-kadmin.html)
- * [3.3 - kinit](user-guide/3.3-kinit.html)
- * [3.4 - klist](user-guide/3.4-klist.html)
-* [4 - Identity Backend](user-guide/4-identity-backend.html)
-* [5 - Kerberos Crypto and Encryption Types](user-guide/5-crypto-and-encryption-types.html)
-* [6 - Network Support](user-guide/6-network-support.html)
-* [7 - Dependency](user-guide/7-dependency.html)
diff --git a/content/kerby/user-guide/1-how-to-begin.mdtext b/content/kerby/user-guide/1-how-to-begin.mdtext
deleted file mode 100644
index b7f9963..0000000
--- a/content/kerby/user-guide/1-how-to-begin.mdtext
+++ /dev/null
@@ -1,92 +0,0 @@
-Title: 1 - How To Begin
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 2-kerberos-library.html
-NavNextText: 2 - Kerberos library
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - How to begin
-This chapter helps you to set up a Apache Kerby kdc server, with the minimal configuration options being explained. That should be enough to get a running server.
-
-## How to play with the standalone KDC:
-
-The distribution of Kerby.
-
-### To run with a standalone kdc server, kinit and kadmin
-
-* Generate libraries for distribution:
-
- $ mvn package -Pdist
-
-* Run kdcinit:
-
- $ cd kerby-dist/kdc-dist
- $ sh bin/kdcinit.sh [server-conf-dir] [keytab]
-
- The admin principal will be exported into [keytab], it will be used by kadmin tool for the authentication.
-
-* Start kerby-kdc-server:
-
- $ cd kerby-dist/kdc-dist
- $ sh bin/start-kdc.sh [server-conf-dir] [work-dir]
-
-* Run kadmin to add principals:
-
- $ cd kerby-dist/kdc-dist
- $ sh bin/kadmin.sh [server-conf-dir] [-k keytab]
-
- The keytab file is created by the kdcinit.
- In kadmin, you can type "?" for help.
-
-* Run kinit:
-
- $ cd kerby-dist/tool-dist
- $ sh bin/kinit.sh [-conf client-conf-dir] [principal-name]
-
-* Run klist:
-
- $ cd kerby-dist/tool-dist
- $ sh bin/klist.sh -c [credentials-cache]
-
- If you don't specify [server-conf-dir], it will be set as /etc/kerby. In [server-conf-dir], there should be kdc.conf, backend.conf.
- And if you don't specify [client -conf-dir], it will be set as /etc/, there should be krb5.conf.
-
-An example of kdc.conf:
-
- [kdcdefaults]
- kdc_host = localhost
- kdc_tcp_port = 8015
- kdc_realm = EXAMPLE.COM
-
-An example of json backend backend.conf:
-
- kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.JsonIdentityBackend
- backend.json.dir = /tmp/kerby/jsonbackend
-
-An example of zookeeper backend backend.conf:
-
- kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.ZookeeperIdentityBackend
- data_dir = /tmp/kerby/zookeeper/data
- data_log_dir = /tmp/kerby/zookeeper/datalog
-
-An example of krb5.conf:
-
- [libdefaults]
- kdc_realm = EXAMPLE.COM
- kdc_tcp_port = 8015
-
diff --git a/content/kerby/user-guide/2-kerberos-library.mdtext b/content/kerby/user-guide/2-kerberos-library.mdtext
deleted file mode 100644
index 7a7bd3c..0000000
--- a/content/kerby/user-guide/2-kerberos-library.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: 2 - Kerberos library
-NavPrev: 1-how-to-begin.html
-NavPrevtext: 1 - How To Begin
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 2.1-krbclient-apis.html
-NavNextText: 2.1 - KrbClient APIs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - Kerberos library
-Kerby provides the KrbClient API, Kadmin API, Kerberos Server API and the simplified kdc server APIs.
-
-## Table of content
-
-* [2.1 - KrbClient API](2.1-krbclient-apis.html)
-* [2.2 - Kadmin](2.2-kadmin.html)
-* [2.3 - KdcServer](2.3-kdcserver.html)
-* [2.4 - SimpleKdcServer](2.4-simplekdcserver.html)
-
-
-Please look at [github](https://github.com/apache/directory-kerby) for details.
diff --git a/content/kerby/user-guide/2.1-krbclient-apis.mdtext b/content/kerby/user-guide/2.1-krbclient-apis.mdtext
deleted file mode 100644
index 9d70681..0000000
--- a/content/kerby/user-guide/2.1-krbclient-apis.mdtext
+++ /dev/null
@@ -1,56 +0,0 @@
-Title: 2.1 - KrbClient APIs
-NavPrev: 2-kerberos-library.html
-NavPrevText: 2 - Kerberos library
-NavUp: 2-kerberos-library.html
-NavUpText: 2 - Kerberos library
-NavNext: 2.2-kadmin.html
-NavNextText: 2.2 - Kadmin
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - KrbClient APIs
-A Krb client API for applications to interact with KDC.
-
-### Initiate a KrbClient
-* Initiate a KrbClient with prepared KrbConfig.
-<pre>
-KrbClient krbClient = new KrbClient(krbConfig);
-</pre>
-* Initiate a KrbClient with with conf dir.
-<pre>
-KrbClient krbClient = new KrbClient(confDir);
-</pre>
-
-### Request a TGT
-* Request a TGT with user plain password credential
-<pre>
-requestTgtWithPassword(principal, password);
-</pre>
-* Request a TGT with user token credential
-<pre>
-requestTgtWithToken(token, armorCache);
-</pre>
-
-### Request a service ticket
-* Request a service ticket with user TGT credential for a server
-<pre>
-requestServiceTicketWithTgt(tgt, serverPrincipal);
-</pre>
-* Request a service ticket with user AccessToken credential for a server
-<pre>
-requestServiceTicketWithAccessToken(accessToken, serverPrincipal, armorCache);
-</pre>
diff --git a/content/kerby/user-guide/2.2-kadmin.mdtext b/content/kerby/user-guide/2.2-kadmin.mdtext
deleted file mode 100644
index 28017f1..0000000
--- a/content/kerby/user-guide/2.2-kadmin.mdtext
+++ /dev/null
@@ -1,91 +0,0 @@
-Title: 2.2 - Kadmin
-NavPrev: 2.1-krbclient-apis.html
-NavPrevText: 2.1 - KrbClient APIs
-NavUp: 2-kerberos-library.html
-NavUpText: 2 - Kerberos library
-NavNext: 2.3-kdcserver.html
-NavNextText: 2.3 - KdcServer
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.2 - Kadmin
-Server side admin facilities.
-
-
-
-## Local mode
-### Initiate a LocalKadminImpl
-* Initiate a LocalKadminImpl with prepared KdcConfig and BackendConfig.
-<pre>
-LocalKadmin kadmin = new LocalKadminImpl(kdcConfig, backendConfig);
-</pre>
-* Initiate a LocalKadmin with confDir.
-<pre>
-LocalKadmin kadmin = new LocalKadminImpl(confDir);
-</pre>
-* Initiate a LocalKadmin with kdcSetting and backend.
-<pre>
-LocalKadmin kadmin = new LocalKadminImpl(kdcSetting, backend);
-</pre>
-
-### Principal operating
-* Add principle with principal name.
-<pre>
-addPrincipal(principal);
-</pre>
-* Add principle with principal name and password.
-<pre>
-addPrincipal(principal, password);
-</pre>
-* Add principle with principal name and kOptions.
-<pre>
-addPrincipal(principal, kOptions);
-</pre>
-* Add principle with principal name, password and kOptions.
-<pre>
-addPrincipal(principal, password kOptions);
-</pre>
-* Delete principle with principal name.
-<pre>
-deletePrincipal(principal);
-</pre>
-* Modify principle with principal name and kOptions.
-<pre>
-modifyPrincipal(principal, kOptions);
-</pre>
-* Rename principle.
-<pre>
-renamePrincipal(oldPrincipalName, newPrincipalName);
-</pre>
-* Get principle with principal name.
-<pre>
-getPrincipal(principalName);
-</pre>
-* Get all the principles.
-<pre>
-getPrincipals();
-</pre>
-* Update password with principal name and new password.
-<pre>
-updatePassword(principal, newPassword);
-</pre>
-* Export all identity keys to the specified keytab file.
-<pre>
-exportKeyTab(keyTabFile);
-</pre>
-
-
diff --git a/content/kerby/user-guide/2.3-kdcserver.mdtext b/content/kerby/user-guide/2.3-kdcserver.mdtext
deleted file mode 100644
index 1f0c1d4..0000000
--- a/content/kerby/user-guide/2.3-kdcserver.mdtext
+++ /dev/null
@@ -1,78 +0,0 @@
-Title: 2.3 - KdcServer
-NavPrev: 2.2-kadmin.html
-NavPrevText: 2.2 - Kadmin
-NavUp: 2-kerberos-library.html
-NavUpText: 2 - Kerberos library
-NavNext: 2.4-simplekdcserver.html
-NavNextText: 2.4 - SimpleKdcServer
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.3 - KdcServer
-Kerberos Server API.
-
-
-
-### Initiate kdc server
-* Initiate a kdc server with prepared confDir.
-<pre>
-KdcServer server = new KdcServer(confDir);
-</pre>
-
-### Start and set kdc server
-* Start kdc server.
-<pre>
-start();
-</pre>
-* Set KDC realm for ticket request
-<pre>
-setKdcRealm(realm);
-</pre>
-* Set KDC host.
-<pre>
-setKdcHost(kdcHost);
-</pre>
-* Set KDC tcp port.
-<pre>
-setKdcTcpPort(kdcTcpPort);
-</pre>
-* Set KDC udp port. Only makes sense when allowUdp is set.
-<pre>
-setKdcUdpPort(kdcUdpPort);
-</pre>
-* Set to allow TCP or not.
-<pre>
-setAllowTcp(allowTcp);
-</pre>
-* Set to allow UDP or not.
-<pre>
-setAllowUdp(allowUdp);
-</pre>
-* Allow to debug so have more logs.
-<pre>
-enableDebug();
-</pre>
-* Allow to hook customized kdc implementation.
-<pre>
-setInnerKdcImpl(innerKdcImpl);
-</pre>
-
-### Stop kdc server
-* Start kdc server.
-<pre>
-stop();
-</pre>
diff --git a/content/kerby/user-guide/2.4-simplekdcserver.mdtext b/content/kerby/user-guide/2.4-simplekdcserver.mdtext
deleted file mode 100644
index d835ef1..0000000
--- a/content/kerby/user-guide/2.4-simplekdcserver.mdtext
+++ /dev/null
@@ -1,91 +0,0 @@
-Title: 2.4 - SimpleKdcServer
-NavPrev: 2.3-kdcserver.html
-NavPrevText: 2.3 - KdcServer
-NavUp: 2-kerberos-library.html
-NavUpText: 2 - Kerberos library
-NavNext: 3-tools.html
-NavNextText: 3 - tools
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.4 - SimpleKdcServer
-A simplified Kdc server. It can be imported by other project to work as a kdc server.
-
-### Kdc server
-</pre>
-* Start simple kdc server.
-<pre>
-start();
-</pre>
-* Set KDC realm for ticket request
-<pre>
-setKdcRealm(realm);
-</pre>
-* Set KDC host.
-<pre>
-setKdcHost(kdcHost);
-</pre>
-* Set KDC tcp port.
-<pre>
-setKdcTcpPort(kdcTcpPort);
-</pre>
-* Set KDC udp port. Only makes sense when allowUdp is set.
-<pre>
-setKdcUdpPort(kdcUdpPort);
-</pre>
-* Set to allow TCP or not.
-<pre>
-setAllowTcp(allowTcp);
-</pre>
-* Set to allow UDP or not.
-<pre>
-setAllowUdp(allowUdp);
-
-### Kadmin
-</pre>
-* Create principle with principal name.
-<pre>
-createPrincipal(principal);
-</pre>
-* Add principle with principal name and password.
-<pre>
-createPrincipal(principal, password);
-</pre>
-* Create principles with principal names.
-<pre>
-createPrincipals(principals);
-</pre>
-* Creates principals and export their keys to the specified keytab file.
-<pre>
-createAndExportPrincipals(keytabFile principals);
-</pre>
-* Delete principle with principal name.
-<pre>
-deletePrincipal(principal);
-</pre>
-</pre>
-* Delete principles with principal names.
-<pre>
-deletePrincipals(principals);
-</pre>
-</pre>
-* Export principles to keytab file.
-<pre>
-exportPrincipals(keytabFile);
-</pre>
-
-
diff --git a/content/kerby/user-guide/3-tools.mdtext b/content/kerby/user-guide/3-tools.mdtext
deleted file mode 100644
index d2e2c0f..0000000
--- a/content/kerby/user-guide/3-tools.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 3 - Tools
-NavPrev: 2.4-simplekdcserver.html
-NavPrevtext: 2.4 - SimpleKdcServer
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 3.1-kdcinit.html
-NavNextText: 3.1 - kdcinit
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3 - Tools
-Kerby provides tools including both client side and server side.
-
-## Table of content
-
-* [3.1 - kdcinit](3.1-kdcinit.html)
-* [3.2 - kadmin](3.2-kadmin.html)
-* [3.3 - kinit](3.3-kinit.html)
-* [3.4 - klist](3.4-klist.html)
\ No newline at end of file
diff --git a/content/kerby/user-guide/3.1-kdcinit.mdtext b/content/kerby/user-guide/3.1-kdcinit.mdtext
deleted file mode 100644
index 73e3f99..0000000
--- a/content/kerby/user-guide/3.1-kdcinit.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 3.1 - kdcinit
-NavPrev: 3-tools.html
-NavPrevText: 3 - tools
-NavUp: 3-tools.html
-NavUpText: 3 - tools
-NavNext: 3.2-kadmin.html
-NavNextText: 3.2 - kadmin
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.1 - kdcinit
-
-### SYNOPSIS
-
-kdcinit [conf_dir] [keytab]
-
-### DESCRIPTION
-
-kdcinit is used by admin to initialize and prepare all kinds of KDC side materials, like initializing concrete back end, setting necessary principals (tgs, kadmin) and etc.
\ No newline at end of file
diff --git a/content/kerby/user-guide/3.2-kadmin.mdtext b/content/kerby/user-guide/3.2-kadmin.mdtext
deleted file mode 100644
index 12b605c..0000000
--- a/content/kerby/user-guide/3.2-kadmin.mdtext
+++ /dev/null
@@ -1,51 +0,0 @@
-Title: 3.2 - kadmin
-NavPrev: 3.1-kdcinit.html
-NavPrevText: 3.1 - kdcinit
-NavUp: 3-tools.html
-NavUpText: 3 - tools
-NavNext: 3.3-kinit.html
-NavNextText: 3.3 - kinit
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.2 - kadmin
-
-### SYNOPSIS
-
-kadmin [conf-dir] [-c cache_name] | [-k keytab_name]
-
-### DESCRIPTION
-
-kadmin is command-line interfaces to the Kerberos V5 administration system. kadmin provides for the maintenance of Kerberos principals, password policies, and service key tables (keytabs).
-
-### Commands
-
-* add_principal
-
-* modify_principal
-
-* rename_principal
-
-* delete_principal
-
-* change_password
-
-* get_principal
-
-* ktadd
-
-* ktremove
\ No newline at end of file
diff --git a/content/kerby/user-guide/3.3-kinit.mdtext b/content/kerby/user-guide/3.3-kinit.mdtext
deleted file mode 100644
index e322311..0000000
--- a/content/kerby/user-guide/3.3-kinit.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 3.3 - kinit
-NavPrev: 3.2-kadmin.html
-NavPrevText: 3.2 - kadmin
-NavUp: 3-tools.html
-NavUpText: 3 - tools
-NavNext: 3.4-klist.html
-NavNextText: 3.4 - klist
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.3 - kinit
-
-### SYNOPSIS
-
-kinit [-conf conf_dir] [principal]
-
-### DESCRIPTION
-
-kinit obtains and caches an initial ticket-granting ticket for principal.
\ No newline at end of file
diff --git a/content/kerby/user-guide/3.4-klist.mdtext b/content/kerby/user-guide/3.4-klist.mdtext
deleted file mode 100644
index e36e043..0000000
--- a/content/kerby/user-guide/3.4-klist.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: 3.4 - klist
-NavPrev: 3.3-kinit.html
-NavPrevText: 3.3 - kinit
-NavUp: 3-tools.html
-NavUpText: 3 - tools
-NavNext: 4-identity-backend.html
-NavNextText: 4 - Identity Backend
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3.4 - klist
-
-### SYNOPSIS
-
-klist [-c cache_name] | [-k keytab_name]
-
-### DESCRIPTION
-
-klist lists the Kerberos principal and Kerberos tickets held in a credentials cache, or the keys held in a keytab file.
\ No newline at end of file
diff --git a/content/kerby/user-guide/4-identity-backend.mdtext b/content/kerby/user-guide/4-identity-backend.mdtext
deleted file mode 100644
index b27744c..0000000
--- a/content/kerby/user-guide/4-identity-backend.mdtext
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: 4 - Identity Backend
-NavPrev: 3.4-klist.html
-NavPrevtext: 3.4 - klist
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 5-crypto-and-encryption-types.html
-NavNextText: 5 - Kerberos Crypto and Encryption Types
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - Identity Backend
-A standalone KDC server that can integrate various identity back ends including:
-
-* MemoryIdentityBackend.
- * It is default Identity Backend, and no cofiguration is needed. This backend is for no permanent storage requirements.
-
-* JsonIdentityBackend.
- * It implemented by Gson which is used to convert Java Objects into their JSON representation and convert a JSON string to an equivalent Java object. A json file will be created in "backend.json.file". This backend is for small, easy, development and test environment.
-
-* ZookeeperIdentityBackend.
- * Currently it uses an embedded Zookeeper. In follow up it will be enhanced to support standalone Zookeeper cluster for replication and reliability. Zookeeper backend would be a good choice for high reliability, high performance and high scalability requirement and scenarios.
-
-* LdapIdentityBackend.
- * The Ldap server can be standalone or embedded using ApacheDS server as the backend. It is used when there is exist ldap server.
-
-* MavibotBackend.
- * A backend based on Apache Mavibot(an MVCC BTree library).
\ No newline at end of file
diff --git a/content/kerby/user-guide/5-crypto-and-encryption-types.mdtext b/content/kerby/user-guide/5-crypto-and-encryption-types.mdtext
deleted file mode 100644
index 95edf08..0000000
--- a/content/kerby/user-guide/5-crypto-and-encryption-types.mdtext
+++ /dev/null
@@ -1,48 +0,0 @@
-Title: 5 - Kerberos Crypto and Encryption Types
-NavPrev: 4-identity-backend.html
-NavPrevtext: 4 - Identity Backend
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 6-network-support.html
-NavNextText: 6 - Network Support
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5 - Kerberos Crypto and Encryption Types
-
-Supported des, des3, rc4, aes, camellia encryption and corresponding checksum types
-Interoperates with MIT Kerberos and Microsoft AD
-Independent of Kerberos code in JRE, but rely on JCE
-
-| Encryption Type | Description |
-| --------------- | ----------- |
-| des-cbc-crc | DES cbc mode with CRC-32 (weak) |
-| des-cbc-md4 | DES cbc mode with RSA-MD4 (weak) |
-| des-cbc-md5 | DES cbc mode with RSA-MD5 (weak) |
-| des3-cbc-sha1 des3-hmac-sha1 des3-cbc-sha1-kd | Triple DES cbc mode with HMAC/sha1 |
-| des-hmac-sha1 | DES with HMAC/sha1 (weak) |
-| aes256-cts-hmac-sha1-96 aes256-cts AES-256 | CTS mode with 96-bit SHA-1 HMAC |
-| aes128-cts-hmac-sha1-96 aes128-cts AES-128 | CTS mode with 96-bit SHA-1 HMAC |
-| arcfour-hmac rc4-hmac arcfour-hmac-md5 | RC4 with HMAC/MD5 |
-| arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp | Exportable RC4 with HMAC/MD5 (weak) |
-| camellia256-cts-cmac camellia256-cts | Camellia-256 CTS mode with CMAC |
-| camellia128-cts-cmac camellia128-cts | Camellia-128 CTS mode with CMAC |
-| des | The DES family: des-cbc-crc, des-cbc-md5, and des-cbc-md4 (weak) |
-| des3 | The triple DES family: des3-cbc-sha1 |
-| aes | The AES family: aes256-cts-hmac-sha1-96 and aes128-cts-hmac-sha1-96 |
-| rc4 | The RC4 family: arcfour-hmac |
-| camellia | The Camellia family: camellia256-cts-cmac and camellia128-cts-cmac |
\ No newline at end of file
diff --git a/content/kerby/user-guide/6-network-support.mdtext b/content/kerby/user-guide/6-network-support.mdtext
deleted file mode 100644
index 57c0029..0000000
--- a/content/kerby/user-guide/6-network-support.mdtext
+++ /dev/null
@@ -1,32 +0,0 @@
-Title: 6 - Network Support
-NavPrev: 5-crypto-and-encryption-types.html
-NavPrevtext: 5 - Kerberos Crypto and Encryption Types
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 7-dependency.html
-NavNextText: 7 - Dependency
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6 - Network Support
-
-* Include UDP and TCP transport.
-* Default KDC server implementation.
- * The Networking Classes in the JDK is used.
-* Netty based KDC server implementation.
- * Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
- * With better throughput, lower latency.
\ No newline at end of file
diff --git a/content/kerby/user-guide/7-dependency.mdtext b/content/kerby/user-guide/7-dependency.mdtext
deleted file mode 100644
index 86866da..0000000
--- a/content/kerby/user-guide/7-dependency.mdtext
+++ /dev/null
@@ -1,28 +0,0 @@
-Title: 7 - Dependency
-NavPrev: 6-network-support.html
-NavPrevtext: 6 - Network Support
-NavUp: ../user-guide.html
-NavUpText: User Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7 - Dependency
-
-* The core part is ensured to only depend on the JRE and SLF4J. Every external dependency is taken carefully and maintained separately.
-* [Nimbus JOSE + JWT](http://connect2id.com/products/nimbus-jose-jwt), needed by token-provider and TokenPreauth mechanism.
-* [Netty](http://netty.io/), needed by netty based KDC server.
-* [Zookeeper](https://zookeeper.apache.org/), needed by zookeeper identity backend.
\ No newline at end of file
diff --git a/content/kerby/vision.mdtext b/content/kerby/vision.mdtext
deleted file mode 100644
index ce6e31e..0000000
--- a/content/kerby/vision.mdtext
+++ /dev/null
@@ -1,21 +0,0 @@
-Title: Kerby - Vision
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Vision
-
-Kerby is an implementation of Kerberos V5 protocol in pure Java.
\ No newline at end of file
diff --git a/content/mailing-lists-and-irc.mdtext b/content/mailing-lists-and-irc.mdtext
deleted file mode 100644
index fbeaa99..0000000
--- a/content/mailing-lists-and-irc.mdtext
+++ /dev/null
@@ -1,73 +0,0 @@
-Title: Mailing lists and IRC
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Mailing lists and IRC
-
-## Mailing list etiquette
-
-Please consider the following before posting Emails to the lists:
-
-* No posts with html.
-* No cross posting.
-* Change the subject when appropriate (meaning when the conversation topic has shifted to something other than the old subject line).
-* Start threads with tags for tracking different kinds of subjects. So far we have the following for the dev list:
- * [ApacheDS]
- * [Studio]
- * [Site]
- * [Fortress]
- * [Kerby]
- * [SCIMple]
- * [Community]
- * [Release]
- * [VOTE]
- * [OT]
-
-An article by Eric Steven Raymond very worth reading is found here: [How To Ask Questions The Smart Way](http://www.catb.org/esr/faqs/smart-questions.html).
-
-
-## Project mailing lists
-
-These are the mailing lists that have been established for this project. We haven't a distinguished mailing list for each of the sub-projects : if you have questions about Escimo, Mavibot or ApacheDS, for instance, you have to use the Directory Users or Developpers mailing list.
-
-### Subscribing
-
-Subscribing to one of the existing mailing lists is only a matter of sending an empty mail (no subject, no content) to **(mailing list name)**-subscribe@directory.apache.org. You can find the list of mailing list names in the table below. For instance, to subscribe to the **dev** mailing list, send a mail to **dev-subscribe@directory.apache.org**.
-
-### Unsubscribing
-
-Unsubscribing from one of the existing mailing lists is only a matter of sending an empty mail (no subject, no content) to **(mailing list name)**-unsubscribe@directory.apache.org. You can find the list of mailing list names in the table below. For instance, to unsubscribe from the **dev** mailing list, send a mail to **dev-unsubscribe@directory.apache.org**.
-
-### Existing Mailing lists
-
-For each list, there is a subscribe, unsubscribe, and an archive link:
-
-| Name | Description | Subscribe | Unsubscribe | Post | Archive |
-|---|---|:-:|:-:|:-:|:-:|
-| **dev** | The Directory Developers List | [Subscribe](mailto:dev-subscribe@directory.apache.org) | [Unsubscribe](mailto:dev-unsubscribe@directory.apache.org) | [Post](mailto:dev@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-dev) |
-| **users** | The Directory Users List| [Subscribe](mailto:users-subscribe@directory.apache.org) | [Unsubscribe](mailto:users-unsubscribe@directory.apache.org) | [Post](mailto:users@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-users) |
-| **commits** | The Directory Commits List | [Subscribe](mailto:commits-subscribe@directory.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@directory.apache.org) | — | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-commits) |
-| **api** | The LDAP API List | [Subscribe](mailto:api-subscribe@directory.apache.org) | [Unsubscribe](mailto:api-unsubscribe@directory.apache.org) | [Post](mailto:api@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-api) |
-| **fortress** | The Fortress List | [Subscribe](mailto:fortress-subscribe@directory.apache.org) | [Unsubscribe](mailto:fortress-unsubscribe@directory.apache.org) | [Post](mailto:fortress@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-fortress) |
-| **kerby** | The Kerby List | [Subscribe](mailto:kerby-subscribe@directory.apache.org) | [Unsubscribe](mailto:kerby-unsubscribe@directory.apache.org) | [Post](mailto:kerby@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-kerby) |
-| **scimple** | The SCIMple List | [Subscribe](mailto:scimple-subscribe@directory.apache.org) | [Unsubscribe](mailto:scimple-unsubscribe@directory.apache.org) | [Post](mailto:scimple@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-scimple) |
-
-## IRC channels
-
-* Users IRC channel: [#apache-directory @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory)
-* Developers IRC channel: [#apache-directory-dev @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory-dev)
-* Fortress IRC channel: [#apache-fortress @ irc://irc.freenode.net](irc://irc.freenode.net/apache-fortress)
diff --git a/content/mavibot/coding-standards.mdtext b/content/mavibot/coding-standards.mdtext
deleted file mode 100644
index e979205..0000000
--- a/content/mavibot/coding-standards.mdtext
+++ /dev/null
@@ -1,167 +0,0 @@
-Title: Mavibot Coding Standards
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Mavibot Coding Standards
-
-Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
-
-Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
-
-**eclipse IDE**
-
-Eclipse users can import those two files to enforce the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
-
-**IDEA IDE**
-
-IDEA users can import [this file](settings.jar) to enforce the code formating.
-
-
-## Headers
-
-First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
-
-
- :::java
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-### Class/Interface headers
-
-Each **Class** or *Interface* should have an header which must contains :
-
-* A description of this class/interface
-* an *author* tag which should be :
-
- :::java
- @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
-
-<DIV class="note" markdown="1">
-Thanks to avoid to put your name. The code is not yours, and much more important, but putting your name and e-mail, you will intimidate other developer ("Oh, no, I won't mess with this code, it has been developed by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's member are not responsive...)
-</DIV>
-
-If you use **html** tags, remember to escape '<' and '>' characters...
-
-### Static members and other members
-
-Just add a single line javadoc comment like : _/** blah ... */_ before each member
-
-### Methods
-
-Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
-
-Escape **html** characters
-
-## Comments
-
-No special rules, except that you should avoid :
-
-* Useless comments like : i++; /\* Increment i \*/
-* Overusing comments : if you have to heavily comment a piece of code, then this piece of code might be too complex ...
-* Spreading little comments all over a method : if possible, write blocs of comments. The method header generally contains a full description of the code, and if it's not the case, just consider your method might be too long !
-* Dead code commented. If it's dead, then put it in a coffin. We use SVN, the Ressuscitator !
-
-Basically, use your common sense :-)
-
-## Naming
-
-Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
-
-* Constants are in UPPER CASE with accepted '_'
-* Class starts with an uppercase and each starting word is upper cased. No '_', please !
-* Methods starts with lower case and then follow the same rule than classes. No '_', please !
-* Interfaces should not start with an 'I'
-* Classes which implements an Interface must be followed by the postfix 'impl'
-* Variables follow the method naming convention. No '_', please !
-* Use meaningful names.
-* No double letter variables like ii, jj etc...
-
-If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
-
-Naming is really important for **APIs**. Be smart. If you are not sure, ask.
-
-## Spaces vs tabs
-
-<DIV class="warning" markdown="1">
-**FOUR SPACES, NO TAB. Final.**
-</DIV>
-
-No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
-
-## Formatting
-
-Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
-
-Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
-
-Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
-
-<DIV class="warning" markdown="1">
-**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
-</DIV>
-
-People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
-
-Some general rules :
-
-* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
-* No more than one instruction on a single line, the only exception is the '?' ':' operation
-* Use *this* to address the class variable if there is a risk of confusion (for instance if you have a parameter with the same name.
-* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
-* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
-* Add spaces in method calls after '(' and before ')'
-* '{' and '}' must be on the same column
-
-This is a code example :
-
- :::java
- ...
- int result = myMethod( param1, param2 )
-
- if ( result > 0 )
- {
- // do something
- }
- ...
-
-
-## Imports
-
-Always declare all the classes you import, do not use **x.y.\***
-
-## What else ?
-
-Well, this was a very short introduction about coding rules. Use common sense, look at what you see around you when adding some code, ask people about format, if you have a question.
-
-That's it ! (I wait your comments, guys :-)
diff --git a/content/mavibot/developer-guide.mdtext b/content/mavibot/developer-guide.mdtext
deleted file mode 100644
index 6ab0d63..0000000
--- a/content/mavibot/developer-guide.mdtext
+++ /dev/null
@@ -1,425 +0,0 @@
-Title: Mavibot Developers Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Mavibot Developers Guide
-
-We will describe how to get the code, build it, and release it.
-
-[TOC]
-
-## Getting the source, Building the trunks
-
-### Prerequisites for building
-
-You must have installed **Maven 3.0.4** and have a **JDK 7** installed on your computer. A working internet connection is also mandatory, unless you have all the needed dependences and plugins loaded locally.
-
-<DIV class="note" markdown="1">
-If the build hangs or you get an out of memory exception please increase the heap space:
-
-* For Linux:
-
- MAVEN_OPTS="-Xmx1024m" mvn clean install
-
-* For Windows:
-
- SET MAVEN_OPTS="-Xmx1024m"
- mvn clean install
-</DIV>
-
-### Maven
-
-[Download](http://maven.apache.org/download.html) and install Maven 3.0.4.
-
-Add a MAVEN_HOME environment variable and add MAVEN_HOME/bin to your system path:
-
-On a Linux box you could add the following to the .bashrc file (.bashrc is a file you'll find in your home directory)
-
-
- ...
- export MAVEN_HOME=/opt/maven-3.0.4
- export PATH=$JAVA_HOME:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
- ...
-
-Windows users, use Control Panel -> System -> Advanced -> Environment Variables
-
-### JDK 7
-
-<DIV class="note" markdown="1">
-We recommend using a version >= 1.7
-</DIV>
-
-Any newer version should also work.
-
-## Getting the code
-
-To download the sources from trunk, you must have installed a **Subversion** client.
-
-With readonly access :
-
- svn co http://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
-
-With read/write access (for committers only) :
-
- svn co https://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
-
-## Building the trunk
-
-You may either specify the profile at the command-line, each time you use 'mvn', or you may configure the profile to always be active.
-
-To use a profile at the command-line:
-
- # mvn [-P<profile>] [options] [<goal(s)>] [<phase(s)>]
-
-
-### Building the trunk, for real
-
-Now, we can compile the projects.
-
-The command is simple :
-
- cd mavibot-trunk
- mvn clean install
-
-A lot of plugins will be downloaded. If you are curious, you can then look at .m2/repository to see what has been downloaded on this step.
-
-Building should finish with these lines:
-
- :::text
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESSFUL
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 8 minutes 30 seconds
- [INFO] Finished at: Mon Oct 30 23:32:41 CET 2006
- [INFO] Final Memory: 18M/32M
- [INFO] ------------------------------------------------------------------------
-
-
-That's it, the jars will be find in target/mavibot-1.0.0-M?-<XXXXXX>-setup.jar where XXXXXX is your local system and M? is the milestone release number for the 1.0 branch.
-
-## Eclipse
-
-We use Eclipse extensively, so these chapters, byt any other idea would be ok too.
-
-### Building eclipse files
-
-To build the .project and .classpath files for eclipse, type the following commands :
-
- cd mavibot-trunk
- mvn eclipse:eclipse
-
-### Maven settings
-
-Don't forget to declare a classpath variable named M2_REPO, pointing to ~/.m2/repository, otherwise many links to existing jars will be broken.
-
-You can declare new variables in Eclipse in _Windows -> Preferences..._ and selecting _Java -> Build Path -> Classpath Variables_
-
-## Coding standards
-
-The applicable coding standards for Mavibot are described in [Coding Standards](coding-standards.html)
-
-There are some more rules, as we are using **Java 7** now :
-
-* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
-* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
-* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
-* Use the new *Enum* type !
-
-# Releasing Mavibot
-
-Since we are using Nexus for releases the release process is as follows (see also [http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven](publishing-maven-artifacts.html)).
-
-## Test the Project
-
- :::text
- $ mvn release:prepare -DdryRun=true
-
-Be aware that this phase will ask you about the next version, and most important, for the next SCM tag :
-
- :::text
- ...
- [INFO] Checking dependencies and plugins for snapshots ...
- What is the release version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: :
- What is the release version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M1: :
- What is the release version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M1: :
- What is SCM release tag or label for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: :
- What is the new development version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M2-SNAPSHOT: :
- What is the new development version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M2-SNAPSHOT: :
- What is the new development version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M2-SNAPSHOT: :
-
-Here, we just validated the proposed versions.
-
-## Deploy a Snapshot
-
- :::text
- $ mvn deploy
-
-This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
-
-## Prepare the Release
-
- :::text
- $ mvn release:clean
- $ mvn release:prepare
-
-This creates a tag here: http://svn.apache.org/viewvc/directory/mavibot/tags/
-
-## Stage the Release
-
- :::text
- $ mvn release:perform
-
-This deploys the release to a staging repository.
-
-Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
-
-## Build the Site
-
- :::text
- $ cd target/checkout
- $ mvn site
-
-This creates the javadocs and the cross-references.
-
-Now, you have to sign the binary packages which are in target/checkout/distribution/target.
-
-Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
-
-You can get the keys by typing :
-
- gpg --list-keys
-
-## Publish Source and Binary Distribution Packages
-
-First of all, create a new directory on people.apache.org/public_html to store the pacckages :
-
- :::text
- $ ssh people.apache.org
- $ mkdir public_html/mavibot-<version>
- $ exit
-
-Then copy the packages :
-
- :::text
- $ cd distributions/target
- $ scp mavibot-<version>-* people.apache.org:public_html/mavibot-<version>/
-
-Update your index.html file on people.apache.org/public_html to make the packages visible. Here is an example of possible content :
-
- :::html
- <h2>Mavibot 1.0.0-M1 tarballs</h2>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz">mavibot-1.0.0-M1-bin.tar.gz</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.asc">mavibot-1.0.0-M1-bin.tar.gz.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.md5">mavibot-1.0.0-M1-bin.tar.gz.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.sha1">mavibot-1.0.0-M1-bin.tar.gz.sha1</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip">mavibot-1.0.0-M1-bin.zip</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.asc">mavibot-1.0.0-M1-bin.zip.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.md5">mavibot-1.0.0-M1-bin.zip.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.sha1">mavibot-1.0.0-M1-bin.zip.sha1</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2">mavibot-1.0.0-M1-src.tar.bz2</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.asc">mavibot-1.0.0-M1-src.tar.bz2.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.md5">mavibot-1.0.0-M1-src.tar.bz2.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.sha1">mavibot-1.0.0-M1-src.tar.bz2.sha1</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz">mavibot-1.0.0-M1-src.tar.gz</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.asc">mavibot-1.0.0-M1-src.tar.gz.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.md5">mavibot-1.0.0-M1-src.tar.gz.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.sha1">mavibot-1.0.0-M1-src.tar.gz.sha1</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip">mavibot-1.0.0-M1-src.zip</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.asc">mavibot-1.0.0-M1-src.zip.asc</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.md5">mavibot-1.0.0-M1-src.zip.md5</a><br/>
- <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.sha1">mavibot-1.0.0-M1-src.zip.sha1</a><br/>
-
-## Vote
-
-Start a 72h vote at the dev mailing list.
-
-Here is an exemple of a mote mail :
-
- :::text
- Hi !
-
- This is the first release of Apache Mavibot, the MVCC BTree in Java !
-
- This milestone is the first step toward a complete MVCC implementation,
- it currently does not handle versions at all. Anyway, it's already a in
- memory/On disk full BTree implementation, which is 2 to 3 times faster
- than JDBM.
-
- The next milestones will add the missing features :
- - bulk load support
- - multi-version support with free pages management
- - transaction support
-
- ApacheDS has already been tested with Mavibot 1.0.-M1-SNAPSHOT, and it
- offers pretty good performances compared to JDBM, except when we inject
- a lot of entries in the server.
-
- So let's vote now !
-
-
- The revision :
-
- http://svn.apache.org/r1511750
-
-
- The SVN tag:
- https://svn.apache.org/repos/asf/directory/mavibot/tags/1.0.0-M1/
-
- The source and binary distribution packages:
- http://people.apache.org/~elecharny/
-
- The staging repository:
- https://repository.apache.org/content/repositories/orgapachedirectory-073/
-
-
- Please cast your votes:
- [ ] +1 Release Mavibot 1.0.0-M1
- [ ] 0 abstain
- [ ] -1 Do not release Mavibot 1.0.0-M1
-
- Emmanuel
-
-## Release
-
-If the vote succeeds the Mavibot project can be released.
-
-Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
-
-Move the distribution packages (sources and binaries) to the dist SVN repository:
-
- **https://dist.apache.org/repos/dist/release/directory/mavibot/dist/$(version)**
-
-The best solution would be to checkout the directory in people.apache.org, to copy the packages in the right place, and to check in the changes :
-
- :::text
- $ ssh people.apache.org
- # svn co https://dist.apache.org/repos/dist/release/directory/mavibot/dist/ mavibot-dist
- # cd mavibot-dist
- # mkdir <version>
- # cp ../public_html/mavibot-<version>/* <version>
- # svn add <version>
- # svn ci <version> -m "Releasing Mavibor <version>"
- Authentication realm: <https://dist.apache.org:443> ASF Committers
- Password for '<committer>': xyz
- ...
- # exit
- $
-
-The packages should now be available on **http://www.us.apache.org/dist/directory/mavibot/dist/<version>**
-
-## Deploy the Javadocs and XRef
-
-We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
-
- :::text
- target/checkout/target/site
-
-We will copy two directories :
-
- :::text
- apidocs
- xref
-
-*Staging or Production?*
-
-Those files will be stored on the production server only !!! And some extra caution must be taken not to delete them when we will publish the staging site too...
-
-First of all, you must checkout the two CMS store for the site : staging and revision.
-
- :::text
- $ cd ~/apacheds
- $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
- ...
- $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
- ...
-
-Now, you will first add the directory for the newly generated version :
-
- :::text
- $ cd ~/apacheds/production/content/mavibot/gen-docs
- $ mkdir <version>
- $ svn add <version>
-
-Then copy the generated docs :
-
- :::text
- $ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/apidocs ~/apacheds/production/content/mavibot/gen-docs/<version>
- $ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/xref ~/apacheds/production/content/mavibot/gen-docs/<version>
- $
-
-You have to check in those directories :
-
- :::text
- $ svn add <version>/*
- $ svn ci <version> -m "Injected <version> javadocs"
-
-Now, you have to update the staging site :
-
- :::text
- extpaths.txt
-
-This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
-
- :::text
- $ cd ~/apacheds/staging/content/
- $ vi extpaths.txt
-
-Add the following line :
-
- :::text
- ...
- # Mavibot
- mavibot/gen-docs/<version>
- ...
-
-then save and check in the file
-
-**.htaccess**
-
-We also have to update this file :
-
- :::text
- $ cd ~/apacheds/staging/content/mavibot/gen-docs
- $ vi .htaccess
-
-And update the two last lines to refer to the version you've just released :
-
- :::text
- RewriteRule ^latest$ <version>/
- RewriteRule ^latest/(.*)$ <version>/$1
-
-Save and commit the file.
-
-## Update the web site
-
-You can now update the site, add a news on the front page, and publish the site.
-
-There are a few places to modify :
-- /lib/path.pm : update the $version_mavibot variable with the new version.
-- /content/index.mdtext : same here, update the <!-- MAVIBOT project --> section, which contains the version.
-- /content/mavibot/news.mdtext : add the news on top of thise page
-- /content/mavibot/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
-
-Commit the changes, and publish the web site, you are done !
-
-## Inform the world !
-
-After 24h, you can now inform the world about the release.
-
-Send a mail to the users and dev mailing list, and one to the announce@apache.org list.
-
-You are done !
diff --git a/content/mavibot/download-old-versions.mdtext b/content/mavibot/download-old-versions.mdtext
deleted file mode 100644
index b9676e8..0000000
--- a/content/mavibot/download-old-versions.mdtext
+++ /dev/null
@@ -1,61 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-<CENTER>
-
-| Version| Download Link | Javadoc & XRef | Date |
-|:-:|:-:|:-:|:-:|
-| Apache MAVIBOT 1.0.0-M7 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M7) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M7/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M7/xref/) | 27/mar/2015 |
-| Apache MAVIBOT 1.0.0-M6 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M6) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M6/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M6/xref/) | 16/nov/2014 |
-| Apache MAVIBOT 1.0.0-M5 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M5) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M5/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M5/xref/) | 04/jul/2014 |
-| Apache MAVIBOT 1.0.0-M4 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M4) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M4/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M4/xref/) | 13/mar/2014 |
-| Apache MAVIBOT 1.0.0-M3 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M3) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M3/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M3/xref/) | 16/Dec/2013 |
-| Apache MAVIBOT 1.0.0-M2 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M2) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M2/apidocs/), [Xref](http://directory.apache.org/mavibot/gen-docs/1.0.0-M2/xref/) | 06/Nov/2013 |
-| Apache MAVIBOT 1.0.0-M1 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M1) | N/A | 06/Jun/2013 |
-
-</CENTER>
-
-<DIV class="note" markdown="1">
-We encourage you to verify the integrity of the downloaded file using:
-
-* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-* the MD5 file (checksum).
-</DIV>
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-
-
-Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/content/mavibot/download/download-archive.mdtext b/content/mavibot/download/download-archive.mdtext
deleted file mode 100644
index 98b549e..0000000
--- a/content/mavibot/download/download-archive.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Archive
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/mavibot/download/download-sources.mdtext b/content/mavibot/download/download-sources.mdtext
deleted file mode 100644
index 3f8ffb5..0000000
--- a/content/mavibot/download/download-sources.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/mavibot/downloads.mdtext b/content/mavibot/downloads.mdtext
deleted file mode 100644
index 77071bd..0000000
--- a/content/mavibot/downloads.mdtext
+++ /dev/null
@@ -1,36 +0,0 @@
-Title: Mavibot Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads
-
-## Jar Download
-
-The Apache Mavibot package is distributed as a jar.
-
-* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive.html)
-* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
-
-## Maven Dependency
-
-The Apache Mavibot package is also available as a Maven dependency:
-
- <dependency>
- <groupId>org.apache.directory.mavibot</groupId>
- <artifactId>mavibot</artifactId>
- <version>${mavibot-version}</version>
- </dependency>
\ No newline at end of file
diff --git a/content/mavibot/five-minutes-tutorial.mdtext b/content/mavibot/five-minutes-tutorial.mdtext
deleted file mode 100644
index 7a3499b..0000000
--- a/content/mavibot/five-minutes-tutorial.mdtext
+++ /dev/null
@@ -1,111 +0,0 @@
-Title: Five Minutes Tutorial
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Five Minutes Tutorial
-
-Let's drop a quick sample first :
-
- :::Java
- // Create a BTree that stores String indexed by a Long
- BTree<Long, String> btree = new BTree<Long, String>( "test", new LongSerializer(), new StringSerializer() );
-
- // Inject some random data in it
- for ( long i = 0L; i < 10000L; i++ )
- {
- Long key = ( long ) random.nextLong();
- String value = Long.toString( key );
-
- btree.insert( key, value );
- }
-
- // Check that the tree contains all the values
- try
- {
- for ( long i = 0L; i < 100000L; i++ )
- {
- assertEquals( Long.toString( i ), btree.get( i ) );
- }
- }
- catch ( KeyNotFoundException knfe )
- {
- fail();
- }
-
- // Let's close the BTree now
- btree.close();
-
-So what do we have here ?
-
-* we have created a BTree
-* we have fed it with 10 000 keys and values
-* we have read all of them
-
-That's pretty simple ! All you have to do is to carefully create your BTree, and to provide the Key and Value serializers.
-
-We will now look a little more in detail what you can do.
-
-## BTrees and storage
-
-A BTree knows pretty much nothing about the way the data it contains are stored. The default is to store data in memory, with a backup being done on disk regularly, so that you don't lose anything in case of a crash. This is what we have done in the previous example.
-
-But you can also associate a _BTree_ to a _RecordManager_, which will manage the storage on disk on any modification. In this case, the RecordManager will encapsulate the _BTree_ (in fact, a _RecordManager_ can handle more than one _BTree_). Here is how you use this feature :
-
- :::Java
- // Create the RecordManager
- RecordManager recordManager = new RecordManager( "MyData.db" );
-
- // Delegate the creation of the BTree to the recordManager
- BTree<Long, String> btree = recordManager1.addBTree( "test", new LongSerializer(), new StringSerializer(), false );
-
- // Do whatever you want with the BTree now...
-
- // Close the RecordManager. It will close all the associated BTrees
- recordManager.close();
-
-Here, all the modifications will be stored on disk, and in an efficient way.
-
-## Operations on a BTree
-
-The type of operations you can conduct on a _Btree_ are listed below (for the most useful ones )
-
-* browse : allow a user to browse the full _BTree_ up and down
-* contains : tells if a _BTree_ contains a specific key and value
-* delete : delete from a _BTree_
-* get : return a value from a key
-* hasKey : tells if the _BTree_ contains a specific key
-* insert : inject a new key and values in a _BTree_
-
-You will find a detailed description of all the associated methods in the Mavibot javadoc.
-
-## Values
-
-A _BTree_ can store single value or multiple values, associated to a key. The _AllowDuplicates_ flags is set to true if you want to store multiple values associated with one key.
-
-The default _BTree_ will only accept single value.
-
-## Revisions
-
-Your _BTree_ can store a new revision for each new modification done on it. Those revisions are kept until no operation are holding them. The _BTree_ operations can all be done using a specific revision number.
-
-Once the revision is not longer in use, the associated pages are likely to be reclaimed.
-
-## Cache
-
-We don't implement a cache : we depends on Java for that. The _BTree_ is stored in memory, using class instances, and are eventually loaded from disk if they are not present in memory. We use [_WeakReference_](http://docs.oracle.com/javase/7/docs/api/java/lang/ref/WeakReference.html) to hold all the pages.
-
-As the _Java_ garbage collector already keeps in memory the most frequently used data, it's likely that the important pages - ie, the top of each _BTree_ - will be kept in memory.
\ No newline at end of file
diff --git a/content/mavibot/gen-docs/.htaccess b/content/mavibot/gen-docs/.htaccess
deleted file mode 100644
index fad5ec5..0000000
--- a/content/mavibot/gen-docs/.htaccess
+++ /dev/null
@@ -1,6 +0,0 @@
-RewriteEngine on
-
-RewriteBase /mavibot/gen-docs
-
-RewriteRule ^latest$ 1.0.0-M6/
-RewriteRule ^latest/(.*)$ 1.0.0-M6/$1
diff --git a/content/mavibot/index.mdtext b/content/mavibot/index.mdtext
deleted file mode 100644
index d42e6b9..0000000
--- a/content/mavibot/index.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Welcome to Apache Mavibot
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/mavibot/news.mdtext b/content/mavibot/news.mdtext
deleted file mode 100644
index b6965db..0000000
--- a/content/mavibot/news.mdtext
+++ /dev/null
@@ -1,173 +0,0 @@
-# News
-<h2 class="news">Apache Mavibot 1.0.0-M8 released <em>posted on August 16th, 2015</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M8 the
-eighth milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a
-replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a
-good fit for any other project in need of a Java MVCC BTree implementation.
-
-This version contains support for free-page management. It is not yet production ready, support
-for cross-B-tree transaction system is not present yet, and this will be our target for the next
-release.
-
-Downloads are available [here](downloads.html)
-
-# News
-<h2 class="news">Apache Mavibot 1.0.0-M7 released <em>posted on March 27th, 2015</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M7 the seventh milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-This version fixes some serious issues in the way we browse a B-tree, and in the transaction support. It's not yet
-production ready, we still are missing the free-page management and a cross-B-tree transaction system, which will
-be our target for the next release.
-
-Downloads are available [here](downloads.html)
-
-# News
-<h2 class="news">Apache Mavibot 1.0.0-M6 released <em>posted on November 16th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M6, the sixth milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-This version brings a complete support for Bulk-Loading of persistent btrees, and fixes a few bugs :
-
-* MAVIBOT-32 Add Bulk Load
-* MAVIBOT-34 Support revisions
-* MAVIBOT-36 Runtime dependencies on slf4j-log4j and log4j cause conflicts
-* MAVIBOT-42 The TupleCursor always reuse the same internal tuple instance...
-
-
-This is by far not the latest milestone
-
-**ApacheDS** has already been tested with **Mavibot 1.0.0-M6-SNAPSHOT**
-
-Downloads are available [here](downloads.html)
-
-# News
-<h2 class="news">Apache Mavibot 1.0.0-M5 released <em>posted on July 4th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M5, the fifth milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-This version brings some new improvements in the API and the performances. The In-memory and Persisted B-trees classes have
-been moved into the same package, to avoid exposing the methods to the external world. We also have shared the common methods.
-
-We have added a partial support for the bulk-load feature, and a few speed improvements.
-
-This is by far not the latest milestone, the next one will bring major changes : revisions support, transaction support.
-
-**ApacheDS** has already been tested with **Mavibot 1.0.0-M5-SNAPSHOT**
-
-Downloads are available [here](downloads.html)
-
-# News
-<h2 class="news">Apache Mavibot 1.0.0-M4 released <em>posted on March 13th, 2014</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M4, the forth milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-This version brings some new improvements in the API and the performances. The In-memory and Persisted B-trees classes have
-been moved into the same package, to avoid exposing the methods to the external world. We also have shared the common methods.
-
-Some specific exceptions have been created.
-
-Here is the list of fixed issues :
-
-<b>Bug</b>
-
- * MAVIBOT-20 - Btree created with the duplicateValues flag to false still accept duplicate values
-
-</b>Improvements</b>
-
- * MAVIBOT-25 - Don't update the RMHeader for each free page we get
- * MAVIBOT-27 - Aggregate the Persisted and InMemory common methods
- * MAVIBOT-28 - Move the Persited and InMemory classes into the same package
- * MAVIBOT-29 - Use a BtreeFactory to create BTrees
- * MAVIBOT-30 - Replace the RuntimeException by specific exceptions
- * MAVIBOT-33 - Serializer and comparator should be static instances
-
-
-This is by far not the latest milestone, the next one will bring major changes : revisions support, transaction support.
-
-**ApacheDS** has already been tested with **Mavibot 1.0.-M4-SNAPSHOT**
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Mavibot 1.0.0-M3 released <em>posted on December 16th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M3, the third milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-Some big refactoring in this milestone, as many of the classes and
-interfaces are now comon to both the managed and in-memory btrees.
-A replace method has been added, the cache is now shared with the
-btree subtrees, and we don't create a subtrees for each values when
-the BTree allows duplicate values, which leads to better performance.
-
-Most important, we don't anymore deserialize the whole page when it
-is read from disk, we just deserialize the needed keys and values.
-This single change boost the performance by an order of magnitude.
-
-The cursors have been refactored, and some tests have been added.
-
-Many other bugs have been fixed.
-
-**ApacheDS** has already been tested with **Mavibot 1.0.-M3-SNAPSHOT**
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Mavibot 1.0.0-M2 released <em>posted on November 6th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M2, the second milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-This milestone contains two different BTrees :
-* one for in-memory BTrees
-* one for managed BTrees
-
-The rational for this big modification is that we can't easily have one BTree to gather all the characteristics of both the in-memory and the managed BTrees with oe single class.
-
-We also have rewrote the way we handle added elements when we reach the end of the memory : we now use a cache instead of depending on wekReferences, which proved to be just way too slow.
-
-The next milestones will add the missing features :
-
-* bulk load support
-* multi-version support with free pages management
-* transaction support
-
-**ApacheDS** has already been tested with **Mavibot 1.0.-M2-SNAPSHOT**, and it offers performances twice better than JDBM.
-
-Downloads are available [here](downloads.html)
-
-<h2 class="news">Apache Mavibot 1.0.0-M1 released <em>posted on August 6th, 2013</em></h2>
-
-The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M1, the first milestone towards a 1.0 version.
-
-**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
-
-This milestone is the first step toward a complete MVCC implementation, it currently does not handle versions at all. Anyway, it's already a in memory/On disk full BTree implementation, which is 2 to 3 times faster than JDBM.
-
-The next milestones will add the missing features :
-
-* bulk load support
-* multi-version support with free pages management
-* transaction support
-
-**ApacheDS** has already been tested with **Mavibot 1.0.-M1-SNAPSHOT**, and it offers pretty good performances compared to JDBM, except when we inject a lot of entries in the server.
-
-Downloads are available [here](downloads.html)
-
-
-<h2 class="news">Apache Mavibot added to Apache Directory project <em>posted on August 6th, 2013</em></h2>
-
-We are proud to announce that after less than one year of development in Apache Directory Labs, the Mavibot project has been accepted as a Apache Directory subproject.
-
-The project is still in its infancy, and anyone willing to participate in the effort is very welcome !
diff --git a/content/mavibot/user-guide.mdtext b/content/mavibot/user-guide.mdtext
deleted file mode 100644
index 8688711..0000000
--- a/content/mavibot/user-guide.mdtext
+++ /dev/null
@@ -1,90 +0,0 @@
-Title: Users Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Users guide
-
-<DIV class="note" markdown="1">
-**Work in progress**
-</DIV>
-
-This user guide is about the Mavibot project developed at the Apache Software Foundation. We expect this project to be a replacement for **JDBM** that is currently used in Apache Directory Server, and also to be a reliable **MVCC B-tree** implementation that can be used by any other project.
-
-## About this guide
-
-Getting started. Learn how to use Mavibot.
-
-### Audience
-
-This guide is primarily for people new to Mavibot. Only basic features are covered. Learn more about the options you have (and many other things) in the [Advanced User's Guide].
-
-### Feedback welcome!
-
-We are quite interested to improve the content of this guide. Feel free to provide us feedback:
-!email.png! [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
-
-### Table of contents
-
-* [1 - Introduction](user-guide/1-introduction.html)
- * [1.1 - B-tree basics](user-guide/1.1-btree-basics.html)
-* [2 - B-tree Flavors](user-guide/2-btree-types.html)
- * [2.1 - MVCC B-tree](user-guide/2.1-mvcc-btree.html)
-* [3 - Mavibot B-tree management](user-guide/3-btree-management.html)
- * creation
- * close
- * flush
- * load
-* [4 - Mavibot B-tree operations](user-guide/4-btree-operations.html)
- * Cursor informations
- * browse
- * contains
- * has
- * get
- * insert
- * delete
- * other operations
-
-* [5 - Mavibot B-tree information](user-guide/5-btree-informations.html)
- * getComparator
- * getFile
- * getJournal
- * getNbElems
- * isAllowDuplicates
- * isInMemory
- * isPersistent
-
-* [6 - Mavibot B-tree configuration](user-guide/6-btree-configuration.html)
- * getKeySerializer
- * getKeySerializerFQCN
- * setKeySerializer
- * getName
- * setName
- * getPageSize
- * setPageSize
- * getReadTimeOut
- * setReadTimeOut
- * getValueSerializer
- * getValueSerializerFQCN
- * setValueSerializer
- * getWriteBufferSize
- * setWriteBufferSize
-
-* [7 - Mavibot internals](user-guide/7-btree-internals.html)
- * [7.1 - Logical Structure](user-guide/7.1-logical-structure.html)
- * [7.2 - Physical Storage](user-guide/7.2-physical-storage.html)
- * [7.3 - Serializations](user-guide/7.3-serializations.html)
- * [7.4 - Updates](user-guide/7.4-updates.html)
diff --git a/content/mavibot/user-guide/1-introduction.mdtext b/content/mavibot/user-guide/1-introduction.mdtext
deleted file mode 100644
index 2b6319d..0000000
--- a/content/mavibot/user-guide/1-introduction.mdtext
+++ /dev/null
@@ -1,30 +0,0 @@
-Title: 1 - Introduction
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 1.1-btree-basics.html
-NavNextText: 1.1 - BTree Basics
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1 - Introduction
-
-The goal of this guide is to explain the usage and internals of Mavibot to developers.
-
-We hope it will be enough for you to quickly get started, but in any case, if you feel like improving this document, feel free to post your suggestion(s) to the Apache Directory mailing list : any contribution is welcomed !
-
-The first two chapters is all about theory, you can skip thema nd jump to chapter 3 if you want to get started quickly.
-
diff --git a/content/mavibot/user-guide/1.1-btree-basics.mdtext b/content/mavibot/user-guide/1.1-btree-basics.mdtext
deleted file mode 100644
index 8b25313..0000000
--- a/content/mavibot/user-guide/1.1-btree-basics.mdtext
+++ /dev/null
@@ -1,56 +0,0 @@
-Title: 1.1 - B-tree Basics
-NavUp: 1-introduction.html
-NavUpText: 1 - Introduction
-NavNext: 2-btree-types.html
-NavNextText: 2 - B-tree Types
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 1.1 - B-tree Basics
-
-**B-tree** was invented back in 1971 by **Bayer** and **McCreight** (the **B** does not mean anything known, speculations are that it comes either form the **B** of **Bayer** or from **Boing** they were working for back then). It was an extension to binary search tree, which was just able to store 2 elements per page.
-
-A **B-tree** is a "tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time." (see [Wikipedia](http://en.wikipedia.org/wiki/B-tree))
-
-The important point here is the last one : it guarantees **O(logn)** operations, compared to any other data structures (a hashed data structure offers **O(n)** average operations, but can degenerate to **O(n2)**, and ordering is not kept). Although it would be optimal to keep only 2 elements in each node, it's way better from a performance point of view to keep more than 2 elements in each node, even if it leads to more comparison than strictly necessary. The reason is that reading a fixed size from disk is better than reading only what we need (considering that a disk access is 3 to 4 orders of magnitude slower than RAM access, it's always a good idea to cache pages in memory, rather than read data from the disk over and over. And these 3 to 4 orders of magnitude is for SSD... For spinning disks, we are more in the 4 to 5 orders of magnitude !)
-
-Add to that the fact that when *B-tree* were invented, data were stored on magnetic tapes, with a pure sequential access. Reading data sequentially made sense, and reading a block of data was the way to go - thus the page was meant to store more than 2 elements -.
-
-**B-trees** are everywhere : databases, OS, etc. It's a critical data structure when you are to deal with a large set of data.
-
-1.1.1 - Inside a B-tree
-
-A **B-Tree** contains **Nodes** and **Leaves**. A *Node* points to other **Nodes** or **Leaves**. **Nodes** contain only **keys** and references to child **nNodes**, when **Leaves** have **Keys** that are associated with **Values**. The **Nodes**' **Keys* are used to find the right child that will ultimately contain the **Value** we are looking for (if it's present)
-
-Pretty simple !
-
-One last thing : **Keys** are ordered, and this is the condition for the easy and fast retrieval of **Values**.
-
-A few more rules are enforced :
-* A **Node** and a **Leaf** contains up to N values (N being generally a power of 2, so 2, 4, 8, 16...).
-* You can't have less than N/2 **Values** or **keys** in a **Leaf** or a **Node**, except for the root **Node**.
-
-The second rule allows the **B-tree** to have only one **Leaf**, when up to **N** elements are to be stored. If we want to store one mor element, then the root **Leaf** will be split and the elements will be spread equally in two **Leaves**, with a root **Node$* containing references on those two **Leaves**.
-
-1.1.2 - Concurrent access
-
-The real problem with **B-tree**s is that we need to use some locks to allow concurrent access to the data, especially when some updates occur. The rationale is that when browsing a **B-tree**, changing it will just break the browse operation. There are some technics to avoid having such an issue, up to a point no read locks are needed, assuming some extra information is added to the pages : a pointer to the next page at the same level. Sadly, it comes with drawbacks, like it's difficult to remove empty pages from the **B-tree**.
-
-What we want is a way to guarantee that many users can read data from the **B-tree**, even while the **B-tree** is being updated. Of course, that will heavily favor reads over writes, as writes will have to be serialized, but in many cases, this is a comfortable trade we are ready to make.
-
-
-
diff --git a/content/mavibot/user-guide/2-btree-types.mdtext b/content/mavibot/user-guide/2-btree-types.mdtext
deleted file mode 100644
index b3400ce..0000000
--- a/content/mavibot/user-guide/2-btree-types.mdtext
+++ /dev/null
@@ -1,57 +0,0 @@
-Title: 2 - B-tree Flavors
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 2.1-mvcc-btree.html
-NavNextText: 2.1 - MVCC B-tree
-NavPrev: 1.1-btree-basics.html
-NavPrevText: 1.1 - B-tree Basics
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2 - B-tree flavors
-
-You have many different flavors of **B-trees** :
-
-* B+tree
-* B*-tree
-* Counted B-tree
-* MVCC B-tree
-
-
-## B+tree
-
-This is a **B-tree** which does not store values in the **Nodes**, and a link between **Leaves** is added, to speed up the browsing : no need to go up to the parent's node to get the next value when reaching the end of a leaf. Also the **nodes** don't contain values.
-
-## B*tree
-
-A slightly different form of **B+tree**, where the number of elements per page is enforced to be at leat 2/3rd of the maximum numbers of elements the page can hold. It speeds up the retrieval of elements a bit, as we have a denser tree.
-
-## Counted B-tree
-
-Another slightly different implementation of a **B+tree**, where the number of elements stored in the descendants is stored within each key. This allows an easy count of elements on the left and right to any element, at the price of additional piece of information being added on each page.
-
-## MVCC B-tree
-
-This is a new 'style' of **B+tree**, where the structure is exactly the same than a simple **B+tree**, except that we keep old versions alive, until nobody use them. The idea is that a new revision of the **B+tree** is added only when an update is fully done. This has the extremely intersting characteristic that there is no need of locks for read and writes, assuming that writes are not concurrent (they are serialized).
-
-In other words, you may have many reads at the same time, still being able to update the data.
-
-It comes with a price though : a lot of pages are copied during every update, as we create a new copy of every modified page, up to the root page.
-
-We also have to manage old pages that can be removed as they belong to unused versions, which requires some extra work.
-
-**Mavibot** is a Java based implementation of a **MVCC B+tree**.
\ No newline at end of file
diff --git a/content/mavibot/user-guide/2.1-mvcc-btree.mdtext b/content/mavibot/user-guide/2.1-mvcc-btree.mdtext
deleted file mode 100644
index 3541149..0000000
--- a/content/mavibot/user-guide/2.1-mvcc-btree.mdtext
+++ /dev/null
@@ -1,141 +0,0 @@
-Title: 2 - MVCC B-tree
-NavUp: 2-btree-types.html
-NavUpText: 2 - B-tree flavors
-NavNext: 3-btree-management.html
-NavNextText: 3 - Mavibot B-tree management
-NavPrev: 2-btree-types.html
-NavPrevText: 2 - B-tree flavors
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 2.1 - MVCC B-tree
-
-**MVCC** stands for **M**ulti **V**ersion **C**oncurrency **C**control. It all boils down to allow readers to **ALWAYS** have a consistent version of the data they reached at the time they started to work with them. In other words, when a reader access the database, it will work on a specific version of it, that will never change.
-
-The drawback is that the data may be accurate at the time the reader started to work with them, but this reader will never see the updated data if a writer has modified them.
-
-Most of the time, this is a price the users are ready to pay, for at least two reasons :
-- udpates are way less frequent that reads, and the users 'accept' the fact that what they get is not necessarily up to date
-- there are some mechanisms that workaround this problem, checking afterward that the data represent the latest state of the database, otherwise the operation is retried.
-
-You can read more about **MVCC** **B-tree** on [Wikipedia, MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
-
-## How does it work ?
-
-A **MVCC** **B-Tree** is just a plain standard **B+Tree**, except that we keep a track of more than one version of the **B+Tree**. Actually, we have multiple roots, one per version. This can bee seen in this picture :
-
-![MVCC sample](images/R4-node.png)
-
-Here, we have 4 different versions, from r1 to r4. Each one of them might be used at the same time by one or many readers. In any case, the writer update only the latest one, creating a new revision doing so. In this exemple, the writer has just created r4 updating r3, adding the element 'I'. As we can see, some pages are shared across the revisions : the leaf contaning the element 'A' (version r3) is also referenced by the revision r4. This is a key : that means a page (**Node** or **Leaf** may be used by many revisions).
-
-We don't delete old revision until they are not anymore in use. And even so, we don't delete all the associated pages blindly : they may be referenced by newer versions that are still active.
-
-### Browsing the Database
-
-So we want to fetch some information from a B-Tree. That's just a matter of creating a *ReadTransaction*, which will grab the latest existing revision for thi **B-Tree** and allow you to browse data from this **B-Tree**. One you are done with the **B-Tree**, you just have to close the *ReadTransaction* (this is critical, because keeping it opened will pin the revision, forbidding the removal of old pages. Although if you forget to do it, the revision will be released after a period of time). This is a description of the typical code :
-
- open a ReadTransaction
- get the B-Tree you want to read
- read the B-tree
- ...
- close the ReadTransaction
-
-It's important to note that the transaction covers all the access on all the managed **B-Tree**. There is no need to open a new *ReadTransaction* if you want to fetch some other information from another **B-Tree**. That also mean you can be sure that you have a consistent view of all the database for a given revision.
-
-You may have many threads reading data from many **B-Trees**, and we will have as many *ReadTransaction* created for that purpose. As we may keep a *readTransaction* opened for quite a long period of time, it's likely that at some point, the various Threads will use different versions of the **B-Trees**.
-
-
-### Updating the Database
-
-This is a bit more complex. Here, you need a *WriteTransaction*, and there can be only one running across all the application. That means the access to the Database is serialized, when it comes to update it. The direct consequence is that writes are **slow**.
-
-Again, the typical call is like :
-
- open a WriteTransaction
- get the B-Tree you want to update
- update the B-tree
- ...
- close the WriteTransaction
-
-and again, many **B-Trees** might be updated during this *writeTransaction*. For a system like a **LDAP** server, this is critical, because updating an entry is impacting many **B-trees**, and we want all of them to be consistent globally : eitehr all the **B-trees** are updated, or none of them.
-
-It's even more critical to close the *writeTransaction* because all the other writers are waiting for this transaction to be completed to be able to proceed.
-
-Let's now describe how an update works, because it's quite convoluted.
-
-#### Updates, from the tranchees...
-
-Updating a **B-Tree** is not a simple operation. Actually, we want to guarantee that the operation succeed or fail, but in any case, leave the database in a consistant state. We also want to guarantee that even if a crash occurs in the middle of a write will leave the database in a consistant state. Let's see how it's possible.
-
-A **B-Tree** is composed of 3 elements :
-
- * The *BTreeHeader*, which contains the reference on the two other elements
- * The *BTreeInfo*, which contains informations relative to this **B-Tree** (this element is never updated)
- * The *RootPage*, which is the root of the **B-Tree**
-
-Each of these elemenst are stored into *Pages*, and referenced through the offset of those *Pages* on disk (the offset is a long, and it's just the position of a page in the database file).
-
-The very first step is to retrieve the latest **B-Tree** revision. We have a management **B-Tree** that keeps a track of all the active revisions for every **B-Tree** : the **BtreeOfBtrees**, called **BOB**. It stores a reference on each **B-tree**'s header for every active revision. The key is a composition of the **B-Tree** name and its revision : *<name, revision> and it reference the *BTreeHeader*'s offset (the position of the *BtreeHeader*'s page). Fo that, we browse the *BOB* looking for the newest <Name, Revision> couple (actually, we are looking for the first tuple that is lower that <name, infinite>).
-
-Once we have found the tuple, we know where to fetch the *BtreeHeader* from. So do we. We can then fetch the *RootPage*, which is the starting point for any update.
-
-At this point, the update is either an addition or a removal. That will potentially change the whole structure of the **B-Tree**, or a single page. In any case, we will have a new *RootPage* pointing to old pages and to newly created pages. Let's see again the previous picture :
-
-![MVCC sample](images/R4-node.png)
-
-Let's say we are at revision 3, and we want to add an entry 'I' : as we can see, the *rootPage* is updated, the right **Leaf** is split in two, and the left **Leaf** is unchanged. All in all, we have created 3 new pages, and 2 old pages are now unused and can be reclaimed later. The internal modification of pages is not in the scope of this explaination, so we will leave it for the moment.
-
-Here is an animated image that shows how it's done :
-
-![R3 to R4](images/r3tor4.gif)
-
-
-So now, we have a new *BtreeHeader*, revision 4. We have to keep a track of it, which means we have to inject it into the **BOB**. As it's a **B-Tree**, we proceed with it the exact same way, except that we always have a reference on the **BOB** *BtreeHeader* in the transaction context.
-
-<DIV class="note" markdown="1">
-We will see later on what is the Transaction Context
-</DIV>
-
-We are almost done. We also have to keep a track of the 'old' pages that were copied. In order to be able to reclaim them, we have to store them somewhere convenient. An 'old' page is not necessarily 'old' for everyone : another thread might have a reader on revision 3, thus might need those 'old' pages. Actually, reclaiming 'old' pages is a bit complex and will be explained later on. Enough said that we want to keep a track of every of those pages in a **B-Tree**, to be able to reclaimn them later.
-
-We use a specific **B-Tree** for taht : the **CopiedPageBtree**, or **CPB**. The key is different than for the **BOB**, it's a composition of the revision we are creating, and the name of the **B-Tree** being updated : <revision, name>. The value is the offset of the copied page. This way, when the revision is not anymore in use by any reader, we can reclaim the associated pages.
-
-The **CPB** is a **B-Tree**, so the update process is the one we already have described. There is one big difference though : once the **CPB** has been updated, we can immediately reclaim the copied pages, we won't use them at all (this is because there is only one writer thread, and this is the only one allowed to manipulate this **B-Tree**).
-
-We are almost done now. At this point, the targetted **B-Tree** has been updated, and the **BOB** and **CPB** have also been updated. But no reader can see those updated versions yet. We need to update the **RecordManagerHeader**, a structure that contain the reference to the current **BOB**. Once we have updated this structure, and wrote it on disk, we can safely make the new **BOB** available for any new readers.
-
-#### Reclaiming unused pages
-
-As we have seen in the previous paragraph, we always create new pages, we never remove any. This is obviously going to eat a lot of disk space if we don't reclaim unused pages !
-
-Hopefully, there is a *reclaimer* thread that is executed when no writerer is running, which role is to check if some old pages can be removed. There are strict conditions for a page to be candidate for removal :
-
- * It must be presnet in the **CPB**
- * The revision that has copied those pages must not be in use by any reader
- * The revision must be the oldest one
-
-The latest condition is the critical one : it means that if a revision is used for a long period of time, we will not be able to reclaim any pages from this revision nor from any younger revision, even if they are not in use. That may bloat the Database...
-
-There are ways to deal with this problem. Typically, if a page is copied twice, then we can reclaim it if it's not referenced. The algorithm is a bit complex though...
-
-The easiest solution is simply to forbid long read transactions.
-
-### Dealing with alive revisions
-
-Every time we have a reader starting a *readTransaction*, we have to keep a track of the current revision, and the number of readers using it. This is done using a specific List of Used Revisions. Every new reader will add a new revision to this list, or increment a counter associated with the existing revision. Everytime a reader close the *readTransaction*, the counter is decremented. When this counter go down to 0, the revision can be discarded, unless it's the latest one.
-
-Discarding an old revision is possible only when it's the oldest. That means the list may contain many inactive revisions, with a counter equal to 0. Those inactive revisions will be removed when they will become the oldest revision.
\ No newline at end of file
diff --git a/content/mavibot/user-guide/3-btree-management.mdtext b/content/mavibot/user-guide/3-btree-management.mdtext
deleted file mode 100644
index b69350d..0000000
--- a/content/mavibot/user-guide/3-btree-management.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 3 - Mavibot B-tree management
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 4-btree-operations.html
-NavNextText: 4 - Mavibot B-tree operations
-NavPrev: 2.1-mvcc-btree.html
-NavPrevText: 2.1 - MVCC B-tree
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 3 - Mavibot B-tree management
-
-TODO
\ No newline at end of file
diff --git a/content/mavibot/user-guide/4-btree-operations.mdtext b/content/mavibot/user-guide/4-btree-operations.mdtext
deleted file mode 100644
index 3cb2fd5..0000000
--- a/content/mavibot/user-guide/4-btree-operations.mdtext
+++ /dev/null
@@ -1,379 +0,0 @@
-Title: 4 - Mavibot B-tree operations
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 5-btree-informations.html
-NavNextText: 5 - Mavibot B-tree information
-NavPrev: 3-btree-management.html
-NavPrevText: 3 - Mavibot B-tree management
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 4 - Mavibot B-tree operations
-
-We will now list all the possible operations that can be applied on a **B-tree**. But first, let us understand the _Cursor_ interface, as it is used for navigating a **B-tree** using various types of _browse_ operations.
-
-## 4.1 The Cursor interface
-
-All the _browse_ operations will return a _Cursor_ instance. A _Cursor_ allows navigating forward and backward on a **B-tree**. It starts at a specific position, and can be moved to a specific position too. The default position for a _Cursor_ is before the very first element of the **B-tree**
-
-<DIV class="note" markdown="1">
-It is important to understand that a <b>Cursor</b> returns tuples, not keys. A Key may be associated with many values, so a cursor may return many tuples with a given key (each one will have a different value though).
-</DIV>
-
-Here is the **B-tree** sample we will use for the following examples :
-
-![Sample B-tree](images/ug-btree-sample.png)
-
-
-### 4.1.1 Cursor position management
-
-#### 4.1.1.1 afterLast
-
-Moves the current position after the last element (last key and last value). The following schema shows the new position of the pointer after having called the _afterLast()_ method :
-
-![After Last](images/ug-btree-after-last.png)
-
-As we can see, we are not pointing at any key.
-
-
-#### 4.1.1.2 beforeFirst
-
-Moves the current position before the first element (first key and first value). The following schema shows the new position of the pointer after having called the _beforeFirst()_ method :
-
-![Before First](images/ug-btree-before-first.png)
-
-In this case also cursor is not stationed at any key.
-
-### 4.1.2 Cursor operations
-
-When a cursor is used to browse Tuples it may return many tuples with the same key but different value, when used to browse keys a
-single tuple will be returned for each key with the value of the key (when multiple values are present only the first value will be
-returned).
-
-#### 4.1.2.1 hasNext
-
-Tells if there is a next available tuple. This will always be true if we are before the first tuple, and always false if we are on the last tuple or after the last tuple. The following picture shows the returned value for calls in various cases :
-
-![Has Next](images/ug-btree-has-next.png)
-
-
-#### 4.1.2.2 hasPrev
-
-Returns true if there is a tuple available before the current tuple. The following picture shows the returned value for calls in various cases :
-
-![Has Next](images/ug-btree-has-prev.png)
-
-#### 4.1.2.3 next
-
-Moves to the next value of the current key or to the next key if all the values of the current key have been processed, and return the associated tuple.
-
-#### 4.1.2.4 prev
-
-Moves to the previous value of the current key or to the previous key if all the values of the current key have been processed, and return the associated tuple.
-
-## 4.2 Browse Operations
-
-Now that we know what a _Cursor_ is about, we can describe the various _browse_ operations that can be applied on a _B-tree_.
-
-### 4.2.1 BTree.browse()
-
-This method returns a cursor with the position set before the first element of the **B-tree**, for the current revision. It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
-
-Assuming you have an existing _B-tree_, using this method is quite straigthforward. Here is an example with a persisted _B-tree_ :
-
- // Create a RecordManager that will contain the B-tree
- RecordManager recordManager = new RecordManager( "Test.db" );
-
- // Create a B-tree to play with
- BTree<Long, String> btree = recordManager.addBTree( "test", LongSerializer.INSTANCE, StringSerializer.INSTANCE, true );
-
- // Inject some data
- btree.insert( 1L, "1" );
- btree.insert( 4L, "4" );
- btree.insert( 2L, "2" );
- btree.insert( 3L, "3" );
- btree.insert( 5L, "5" );
-
- // Create the cursor
- TupleCursor<Long, String> cursor = btree.browse();
-
- // Set the cursor at the beginning of the BTree
- cursor.beforeFirst();
-
- // Get the tuples
- // Create the cursor
- TupleCursor<Long, String> cursor = btree.browse();
-
- // Move forward
- while ( cursor.hasNext() )
- {
- Tuple<Long, String> tuple = cursor.next();
- System.out.println( tuple );
- }
-
- ...
-
-will produce this output :
-
- <1,1>
- <2,2>
- <3,3>
- <4,4>
- <5,5>
-
-### 4.2.2 BTree.browse( long )
-
-This method returns a cursor with the position set before the first element of the **B-tree**, for the given revision.
-
-Here, the big difference is that you can fetch some data from an older revision - assuming this revision is still present, of course -.
-
-It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
-
-You can use the exact same code than for the _browse()_ method, except that you have to pass the version you want to browse.
-
-### 4.2.3 BTree.browseFrom( K key )
-
-This method returns a cursor with the position set before the given key of the **B-tree**. If the key does not exist, the cursor will be set to the closest lower value (or upper value if it's lower than the lowest value)
-
-It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
-
-You can use the exact same code than for the _browse()_ method. Here is an example, where we start after the latest present key :
-
- // Inject some data
- for ( long i = 0; i <= 1000L; i += 2 )
- {
- btree.insert( i, Long.toString( i ) );
- }
-
- // Create the cursor
- TupleCursor<Long, String> cursor = btree.browseFrom( 1500L );
-
- assertFalse( cursor.hasNext() );
- assertTrue( cursor.hasPrev() );
- assertEquals( 1000L, cursor.prev().getKey().longValue() );
-
-### 4.2.4 BTree.browseFrom( long revision, K key )
-This method can be used when one want to browse a _B-tree_ starting from a given key, for a specific revision of a _B-tree_. The only difference with the _BTree.browseFrom( K )_ method is the _B-tree_ revision which is provided.
-
-## 4.3 Contains Operations
-
-We have a couple of methods that can be used to know if some tuple _<Key, Value>_ is present in a _B-tree_.
-
-### 4.3.1 BTree.contains( K key, V value )
-
-This method checks if a _B-tree_ contains a tuple _<key, value>_. As a key might have more than one value, we test the tuple. If one wants to check if a key is present, regardless of the value, the _hasKey()_ method should be used.
-
-Here is an example where the _contains()_ method is used :
-
- ...
- boolean result = btree.contains( 1L, "V1" );
- ...
-
-If the _B-tree_ contains the <1L, "V1"> tuple, then the method will return true, false otherwise.
-
-### 4.3.2 BTree.contains( long revision, K key, V value )
-
-This is the same method that the previous one, except that it's applied on a specific revision of a _B-tree_. The first parameter is the revision.
-
-## 4.4 HasKey Operations
-
-We have some specific methods that check the presence of a key in a _B-tree_. There are described below.
-
-### 4.4.1 BTree.hasKey( K key )
-
-The _hasKey(K key)_ method check the presence of the given _key_ in the current _B-tree_. If it's present, this method returns _true_, otherwise it returns _false_. Here is an example of usage :
-
- ...
- boolean result = btree.hasKey( 1L );
- ...
-
-
-### 4.4.2 BTree.hasKey( long revision, K key )
-
-The exact same method, but applied to a given revision of the _B-tree_.
-
-
-## 4.5 Get Operations
-
-Instead of browsing the _B-tree_, one can get the values associated with a key in a simple operation. The big difference is that it's not then possible to move forward or backward in the _B-tree_ from the retrieved value.
-
-### 4.5.1 BTree.get( K key )
-
-This method get the value associated to the given key, if it exists. If the key does not exist, then a _KeyNotFoundException_ is thrown by the method.
-
-<DIV class="note" markdown="1">
-It's important to understand that, as a <i>B-tree</i> can have multiple values, the <i>get(K)</i> method will <b>NOT</b> return all the values, but the very first one. If one wants to get all the values for a given key, the <i>BTree.getValues(K)</i> has te be used instead.
-</DIV>
-
-
-Here is an example :
-
- ...
- try
- {
- String value = btree.get( 1L ); // Will return "V1"
- ...
- // process teh found value
- }
- catch ( KeyNotFoundException knfe )
- {
- // deal with the exception
- }
- ...
-
-
-### 4.5.2 BTree.get( long revision, K key )
-
-Same method than previously, but with a provided _B-tree_ revision.
-
-### 4.5.3 BTree.getValues( K key )
-
-One should use this method to get all the values assocatied with a key. This method returns a _ValueCursor_, which allows the user to browse the various values. The cursor is set before the first value.
-
-Here is an example that shows how to use this method :
-
- ...
- // The key 1L is associated with {"V1", "V2", "V3"}
- ValueCursor<String> values = dupsTree.getValues( 1L);
-
- while ( values.hasNext() )
- {
- System.out.println( value.next() );
- }
- ...
-
-This will produce the following output :
-
- V1
- V2
- V3
-
-## 4.6 Insert Operation
-
-Inserting elements into a _B-tree_ is as simple as to call the _insert(K, V)_ method.
-
-<DIV class="note" markdown="1">
-It would be interesting to have an <i>insert</i> method that can take more than one value. This might be added in one future version.
-</DIV>
-
-If the key already exist, the value will be added, or replaced if the value already exist keep in mind that we use a comparator when it comes to check a value existence, and two different values may be seen as equal).
-
-Here is an exemple :
-
- ...
- // Insert a new key and value into a B-tree
- // The old value will be returned if we already have a "V3" in the B-tree
- String oldValue = btree.insert( 3L, "V3" );
- ...
-
-<DIV class="note" markdown="1">
-One can only add one single value if the <i>B-tree</i> does not accept duplicate values. In this case, the <i>insert()</i> method will throw a <i>DuplicateValueNotAllowedException</i> exception.
-</DIV>
-
-If the _B-tree_ accepts multiple values for a key, one can write such code :
-
-
- ...
- // Insert a new key and value into a B-tree
- btree.insert( 1L, "V1" );
- btree.insert( 1L, "V2" );
- btree.insert( 1L, "V3" );
- // At this point, the key 1L will be associated with {V1, V2, V3}
- ...
-
-
-## 4.7 Delete Operations
-
-The _delete()_ method is used to delete keys and values from a _B-tree_. We have two methods to do that.
-
-### 4.8.1 BTree.delete( K key )
-
-This method removes a given key and all its values from a _B-tree_. If the key does not exist in the _B-tree_, a _KeyNotFoundException_ will be thrown.
-
-This method returns the first tuple with the given key.
-
-Here is an example :
-
- ...
- // Insert a new key and value into a B-tree
- btree.insert( 1L, "V1" );
- btree.insert( 1L, "V2" );
- btree.insert( 1L, "V3" );
- // At this point, the key 1L will be associated with {V1, V2, V3}
- ...
- // Now delete 1L
- btree.delete( 1L );
-
- // Check that the values have been removed
- if ( btree.hasKey( 1L ) == true )
- {
- // This is an error !
- }
-
-
-### 4.7.2 BTree.delete( K key, V value )
-
-This method can be used to delete one specific value for a given key. If the removed value is the last one, the key will also be removed.
-
-Here is an example :
-
- ...
- // Insert a new key and value into a B-tree
- btree.insert( 1L, "V1" );
- btree.insert( 1L, "V2" );
- btree.insert( 1L, "V3" );
- // At this point, the key 1L will be associated with {V1, V2, V3}
- ...
- // Now delete <1L, "V2">
- btree.delete( 1L, "V2" );
-
- // The key 1L is still associated with {"V1", "V3"}
- ValueCursor<String> values = dupsTree.getValues( 1L);
-
- while ( values.hasNext() )
- {
- System.out.println( value.next() );
- }
- ...
-
-This will produce the following output :
-
- V1
- V3
-
-
-## 4.8 Other B-tree operations
-
-Beside those important operations we just have described, we have a few other less critical operations you must kown about.
-
-### 4.8.1 BTree.close()
-
-This method will cleanly close the _B-tree_. Depending on the _B-tree_ type, it will proceed differently while closing the _B-tree_.
-
-* PersistedBTree : It will close the cache, and close all the pending read transactions. Any write transaction will be complected.
-* InMemoryBTree : it will flush the memory content on disk, and close the journal, if the _B-tree_ is persistent.
-
-<DIV class="note" markdown="1">
-<b>ALWAYS</B> call the <i>close()</i> method when you are done with a <i>B-tree</i>.
-</DIV>
-
-### 4.8.3 BTree.getRevision()
-
-Returns the current _B-tree_ revision.
-
-
-
diff --git a/content/mavibot/user-guide/5-btree-informations.mdtext b/content/mavibot/user-guide/5-btree-informations.mdtext
deleted file mode 100644
index 08772e0..0000000
--- a/content/mavibot/user-guide/5-btree-informations.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 5 - Mavibot B-tree information
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 6-btree-configuration.html
-NavNextText: 6 - Mavibot B-tree configuration
-NavPrev: 4-btree-operations.html
-NavPrevText: 4 - Mavibot B-tree operations
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 5 - Mavibot B-tree information
-
-TODO
\ No newline at end of file
diff --git a/content/mavibot/user-guide/6-btree-configuration.mdtext b/content/mavibot/user-guide/6-btree-configuration.mdtext
deleted file mode 100644
index 01f3c8e..0000000
--- a/content/mavibot/user-guide/6-btree-configuration.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 6 - Mavibot B-tree configuration
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 7-btree-internals.html
-NavNextText: 7 - BMavibot internals
-NavPrev: 5-btree-informations.html
-NavPrevText: 5 - Mavibot B-tree information
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 6 - Mavibot B-tree configuration
-
-TODO
\ No newline at end of file
diff --git a/content/mavibot/user-guide/7-btree-internals.mdtext b/content/mavibot/user-guide/7-btree-internals.mdtext
deleted file mode 100644
index 2abd8b2..0000000
--- a/content/mavibot/user-guide/7-btree-internals.mdtext
+++ /dev/null
@@ -1,27 +0,0 @@
-Title: 7 - Mavibot Internals
-NavUp: ../user-guide.html
-NavUpText: User Guide
-NavNext: 7.1-logical-structure.html
-NavNextText: 7.1 - Logical Structure
-NavPrev: 6-btree-configuration.html
-NavPrevText: 6 - BTree configuration
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7 - Mavibot Internals
-
-TODO
\ No newline at end of file
diff --git a/content/mavibot/user-guide/7.1-logical-structure.mdtext b/content/mavibot/user-guide/7.1-logical-structure.mdtext
deleted file mode 100644
index 95e2b19..0000000
--- a/content/mavibot/user-guide/7.1-logical-structure.mdtext
+++ /dev/null
@@ -1,112 +0,0 @@
-Title: 7.1 - Logical Structure
-NavUp: 7-btree-internals.html
-NavUpText: 7 - Mavibot Internals
-NavNext: 7.2-physical-storage.html
-NavNextText: 7.2 - Physical storage
-NavPrev: 7-btree-internals.html
-NavPrevText: 7 - Mavibot Internals
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.1 - Logical Structure
-
-**Mavibot** stores data in one or more *BTree*s, and defines a few more internal data structures to handle the data and *BTree*s.
-
-We can have three different ways to use **Mavibot** :
-* using in-memory *BTree*s (IN-MEMORY)
-* using in-memory *BTree*s stored on disk (PERSISTED)
-* storing the *BTree*s on disk (so called managed *BTree*s) (MANAGED)
-
-
-## In Memory BTrees
-
-They are *BTree*s stored in memory : as soon as you quit your program, all the stored data will be lost. The biggest advantage is that it is fast.
-
-As *Mavibot* is handling **MVCC** *BTree*s, you have to keep in mind that for each modification, we copy pages and values, hence the *BTree*s will quickly grow and use a lot of memory. On the other hand, copied data which are not anymore in use will be discarded automatically. The beauty of having a garbage collector is that we don't have to take care of this copied data, i.e., if they are not any more referenced by any objects using the *BTree*, they will be reclaimed by the GC.
-
-The below diagram shows the logical representation of an in-memory *BTree* :
-
-![In-Memory BTree](images/InMemoryBTree.png)
-
-## Persistent BTrees
-
-A persistent *BTree* is a *BTree* which can be flushed to disk on demand. The *BTree* is a in-Memory *BTree*, but while closing it, then content of the latest revision is serialized on disk. The data can be loaded while opening a persistent BTree.
-
-Other than that, there is no difference between an in-memory *BTree* and a persistent *BTree*.
-
-## Managed BTrees
-
-Managed *BTree*s are very different : data is guaranteed to be preserved on disk after each modification, even when the program crashes, it is guaranteed that the disk will contain everything needed to recover the *BTree* to the state it was in just before the crash.
-
-This is important to understand that in managed mode, not all *BTree*s (of a mavibot database) are kept in memory. In other words, all nodes, except the *root* node, of a BTree may or may not be present at the time of accessing. **Mavibot** will fetch these nodes from disk when needed.
-
-Obviously this approach has both pros and cons :
-
-Pros :
-* there is no limit on the number of elements one can store in a BTree, except on the available disk space
-* A *BTree* will always be consistent, even if there was a crash
-* data durability is guaranteed
-
-Cons :
-* reads might be costly when the data is not present in memory, due to fetching data from disk
-* accessing the data from disk requires an extra layer of accessor code, this costs some extra memory
-
-Here, this is just a question of tradeoff : depending on the existing memory size, and the level of robustness needed, one may decide to go for an in-memory *BTree*, a persistent *BTree* or a managed one. Most of the time, though, managed *BTree* is what you want to use.
-
-Also note that we use internal cache to speed up the data access. This cache and its size can be configured.
-
-Managed *BTree*s are stored using *Nodes* and *Leaves*. A *Node* contains only keys or references to underlaying nodes or leaves. A *Leaf* contains keys and values. As we don't want to eat too much memory, the references to nodes, leaves, keys and values are stored as offset, read and translated to java objects on demand. For instance, we keep an offset to a key until someone needs to access the key, then we deserialize this key and store it in memory. This is the very same for references to nodes, leaves or values.
-
-Here is a picture describing this structure :
-
-![Managed references](images/managedReferences.png)
-
-In this BTree, only two pages are present in memory : one node and one leaf. In these pages, the keys aren't yet objects, they are pointing to the page's raw data, except for the **D** key and it's value, they were loaded and deserialized.
-
-Here each element, contains an offset and the byte[] of the serialized value or the deserialized value if the value has already been accessed.
-
-### User's BTrees
-
-These are the BTrees that are created by the user and these trees hold the data.
-
-### Special BTrees
-
-These are the two special *BTree*s used internally to manage the revisions and the copied pages.
-
-#### Revision tree
-
-Mavibot uses this tree to keep track of each active revision, so that a search can work with a specific revision. The idea is that when a search starts, it uses the latest revision, but while the search is being processed a new modification can occur which creates a new revision. And also sometimes, we may want to keep a revision active for quite a long time.
-
-This revision *BTree* manages the revisions of all the managed *BTree*s.
-The key of the revision btree is a combination of the *BTree* name and its revision.
-
-When a revision is not anymore used, it can be removed from the revision *BTree*.
-
-Unlike all other user btrees the revision *BTree* is not a **MVCC** *BTree*. In other words, only the latest revision of the revision btree is preserved(i.e, all the modified pages are immediately freed)
-
-#### Copied pages BTree
-
-Once a new revision is created, the pages that were copied are not anymore in use except if the revisions they are associated with are still in use. These pages cannot be discarded and moved
-to the free list until the associated revision is free.
-
-A dedicated *BTree* is used to keep track of the copied pages, which will be reclaimed and moved to the free pages list once the associated revision gets released.
-
-### Managing the free pages
-
-There is a mechanism to manage the *PageIO* that are not anymore in use. This is a linked list in which the free pages are added. Whenever a new page(s) is needed this list is searched first and reclaim as many *PageIO*s as needed - until the end of this list is reached. When a page gets freed that will be added at the end of the free page list.
-
-Note that only logical pages are released, which may be stored in many *PageIO*s. These *PageIO*s are already linked, hence while adding this logical page to the free page list, the last existing free *PageIO* will be modified to point to the first freed *PageIO* of this logical page, and update the pointer of the last free page to the last *PageIO* of this logical page.
diff --git a/content/mavibot/user-guide/7.2-physical-storage.mdtext b/content/mavibot/user-guide/7.2-physical-storage.mdtext
deleted file mode 100644
index 67071ae..0000000
--- a/content/mavibot/user-guide/7.2-physical-storage.mdtext
+++ /dev/null
@@ -1,151 +0,0 @@
-Title: 7.2 - Physical storage
-NavUp: 7-btree-internals.html
-NavUpText: 7 - Mavibot Internals
-NavPrev: 7.1-logical-structure.html
-NavPrevText: 7.1 - Logical Structure
-NavNext: 7.3-serializations.html
-NavNextText: 7.3 - Serializations
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.2 - Physical storage
-
-When associated with a RecordManager, Mavibot stores all the Btrees in one single file, which is split in many physical pages, all having the same size.
-
->**Note**
->Currently, the choice was to use same size for all the pages, regardless of the data stored into them. The rationnal is to
->get close to the OS page size (frequently 512 bytes or 4096 bytes). This is not necessarily the best choice though, let's say
->it's something we might want to change later.
-
-
-## General file structure
-
-The data is stored in a pure binary file. All btrees are stored in this single file.
-
-This file is considered as a FileSystem, with fixed size 'pages' (a page is an array of bytes). The page size is fixed when the RecordManager is created. The data represented in a logical page may spread across many physical pages.
-
-### PageIO
-
-A *PageIO* represents a physical block of the database file and contains complete or a part of the logical page's data. PageIOs of a logical page are linked together.
-
-Each *PageIO* has an eight byte pointer at the beginning, pointing to the next PageIO (or to nothing, if it is the last *PageIO* in the chain), plus an extra 4 bytes on the first *PageIO* to define the number of bytes stored in the chain of PageIO. Here is the mapping between a logical page and some PageIOs :
-
-![PageIO mapping](images/PageIOLogical.png)
-
-All *PageIO*s are contiguous on disk, but the *PageIO*s used to store a logical page may be located anywhere on the disk, they don't have to be continuous.
-
-Here is the structure of a *PageIO* on disk :
-
-* next page offset (8 bytes) : the offset of the next *PageIO*, or -1 if it is the last *PageIO*
-* data size (4 bytes) : the size of the data stored, this is only set in the first *PageIO* of the chain of *PageIO*s used to store a logical page.
-* data (N bytes) : a block of data, whose size will be min( PageSize - offset - data size, data size) for the first *PageIO* or min( PageSize - offset, data size) for any other *PageIO*s
-
-## Logical structure mapping on disk
-
-We will now describe how each logical structure is serialized on disk.
-
-### RecordManager header
-
-A few bytes at the beginning of the file are used to store some critical information about the RecordManager. Here is the list of stored information details :
-
-* The *PageIO* size (in bytes)
-* The number of managed B-Trees
-* The offset of the first free page
-* The offset of the current B-tree of B-trees
-* The offset of the previous B-tree of B-trees, if an update operation was performed
-* The offset of the current CopiedPages B-tree
-* The offset of the previous CopiedPages B-tree, if an update operation was performed
-
-Here is a picture that shows the header content in two different cases (when an update operation is not completed, and when it's completed) :
-
-![RecordManager header](images/RMHeader.png)
-
-Recordmanager tracks the free pages (a free page is a PageIO that is not in use, for instance when a key was deleted). This is done by linking each unused PageIO together and finally updating the references of fisrt and last free pages. When there are no free pages these pointers contain -1 as the offset value.
-
-This header is stored in a *PageIO*, at the very beginning of the file.
-
-### The RecordManager structure
-
-Each *BTree* has a header that contains many details about it, and points to a *rootPage* which is the current root (i.e., the root of the latest revision).
-
-The special BTree called 'btree of btrees'(a.k.a BoB) contains the names and revisions of each managed BTree. To load the managed btrees during startup, this BoB is read to find the latest revision of each BTree and the associated root page's offset based on which the btree will be loaded.
-
-#### The B-tree info
-
-Each *B-tree* has some metadata that will never change after creation. Here is the list of the details stored :
-
-* pageSize (4 bytes) : the number of elements we cans store in a *Node* or a *Leaf*. It's not related in any way with the *PageIO* size.
-* nameSize (4 bytes) : The *BTree* name size
-* name (nameSize bytes) : the *BTree* name
-* keySerializerSize (4 bytes) : The size of the java *FQCN* for the key serializer
-* keySerializer (keySerializerSize bytes) : The java *FQCN* for the key serializer
-* valueSerializerSize (4 bytes) : The size of the java *FQCN* for the value serializer
-* valueSerializer (valueSerializerSize bytes): The java *FQCN* for the value serializer
-* dupsAllowed (1 byte): tells if the *BTree* can have duplicated values.
-
-Note that a *B-tree* info can be stored in one or many *IOPage*s, depending on its size.
-
-#### The BTree header
-
-There will be one *B-tree* header per revision.
-
-Each *BTree* has to maintain many details, such as :
-
-* revision (8 bytes) : the current revision of the *BTree*. This value is updated after each modification in the *BTree*.
-* nbElems (8 bytes) : the total number of elements we have in the *BTree*. This is updated after each modification.
-* rootPage offset (8 bytes) : the position in the file where the *rootPage* is stored
-* btreeInfo offset (8 bytes) : the position of the *B-tree* info page in the file
-
-Here is a diagram which represents the *B-tree header* and the *B-tree info* data structures on disk :
-
-![BTreeHeader](images/btreeHeader.png)
-
-Note that they can be stored on one or more *IOPage*s, depending on the size.
-
-The below picture shows the contents of the btree headers present in the database file when more than one btree is stored.
-
-![BTrees](images/BTree.png)
-
-Note that each *B-tree Header* has one root page, even if it contains no data. In this picture, the root page is shown just after the *BTree* it is associated with, but after a few updates, the root page may be stored elsewhere on the disk.
-
-#### The Nodes and Leaves
-
-Nodes and Leaves are logical *BTree* pages which are stored in one or more *PageIO*s. They have slightly different data structures, as *Node*s contain pointers to *Leaves*, and no data, while *Leaves* contain data, but both contain the keys. The number of keys present in a *Node* is higher
-than that of a *Leaf* by one.
-
-On disk, a *Node* will have pointers to some other logical pages, those pointers will be offset of the first *PageIO* used to store the logical page it points to.
-
-The below picture shows a *Node* and *Leaf* after serialized to disk :
-
-![Node and Leaf](images/nodeLeaf.png)
-
-Note that this is necessary to store the size of the serialized data in order to know how many *PageIO*s will be needed to store the logical page.
-
-The *rootPage* can be either a *Node* or a *Leaf*.
-
-#### Potential improvement
-
-We can get better performance by serializing the data differently. Instead of storing keys and values as byte arrays prefixed by their length, we could store an array of keys and values' offsets before the associated byte[]. Here is the resulting data structure, once serialized :
-
-![Node and Leaf, improved](images/nodeLeaf2.png)
-
-(The *Node* is not described, as it's basically the same data structure, but with one extra value).
-
-It does not need more space to serialize the data this way, as the offsets are ints, and in the previous version, those ints are used to store the length of the keys and values anyway.
-
-The gain is that we can have access to a given key and value without having to read all the previous keys and values. Also we can now read a leaf or a node without having to deserialize all the keys and values they contain.
-
diff --git a/content/mavibot/user-guide/7.3-serializations.mdtext b/content/mavibot/user-guide/7.3-serializations.mdtext
deleted file mode 100644
index e2affd5..0000000
--- a/content/mavibot/user-guide/7.3-serializations.mdtext
+++ /dev/null
@@ -1,133 +0,0 @@
-Title: 7.3 - Serializations
-NavUp: 7-btree-internals.html
-NavUpText: 7 - Mavibot Internals
-NavPrev: 7.2-physical-storage.html
-NavPrevText: 7.2 - Physical storage
-NavNext: 7.4-updates.html
-NavNextText: 7.4 - Updates
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.3 - Serializations
-
-The logical pages are serialized before storing in physical pages. This is a process that should obviously be reversible. In this chapter, we will describe how to serialize a **Leaf** and **Node**.
-
-## Leaf serialization
-
-A **Leaf** contains some metadata, and a set of keys and values. A key can have many values, and we have as many keys as values. The internal format of a serialized leaf contains:
-
-<pre>
- +----------------------------------+
- | revision (long) | 8 bytes
- +----------------------------------+
- | nbElems (int) | 4 bytes
- +----------------------------------+
- | dataSize (int) | 4 bytes = sum[0..nbElems]( valueLength, keyLength ) + 8 x nbElems
- +----------------------------------+
- | +------------------------------+ |
- | | valueLength[0] (int) | | 4 bytes \
- | +------------------------------+ | > n+4 bytes
- | | value[0] (byte[]) | | n bytes /
- | +------------------------------+ |
- | | keyLength[0] (int) | | 4 bytes \
- | +------------------------------+ | > n+4 bytes
- | | key[0] (byte[]) | | n bytes /
- | +------------------------------+ |
- ... ...
- | +------------------------------+ |
- | | valueLength[nbElems-1] (int) | | 4 bytes \
- | +------------------------------+ | > n+4 bytes
- | | value[nbElems-1] (byte[]) | | n bytes /
- | +------------------------------+ |
- | | keyLength[nbElems-1] (int) | | 4 bytes \
- | +------------------------------+ | > n+4 bytes
- | | key[nbElems-1] (byte[]) | | n bytes /
- | +------------------------------+ |
- +----------------------------------+
-
-</pre>
-
-The length of each serialized key and value is stored so that a complete byte[] can be passed to the key or value deserializer (ie, the exact number of bytes needed to be able to deserialize the key or the value).
-
-The _dataSize_ value is used to know how many bytes needs to be read - thus the number of physical pages to read - in order to get a full page.
-
-## Leaf deserialization
-
-When a leaf needs to be deserialized, not all the keys and the values are deserialized at once. It would be too expensive, if the leaf is discarded from memory immediately, when we only need to read one single key and value, hence the keys and values are kept in byte[] form, and will be deserialized on demand.
-
-Two data structures are used to store a key and a value :
-* a _KeyHolder_ for the key
-* a _ValueHolder_ for the value
-
-### KeyHolder
-
-The _KeyHolder_ data structure holds the key in two ways :
-* serialized (raw (byte[]))
-* deserialized (key)
-
-The keys are not deserialized immediately after the data was read from disk instead they are deserialized on demand.
-
-### ValueHolder
-
-Mavibot supports multiple values for a key. The _ValueHolder_ data structure will store a set of values associated with a key. This is a complex data structure when compared with the _KeyHolder_.
-
-An array is used as the default container to hold these values. In some cases, the number of values to be stored is really big, and using an array will impact the performance.
-In such cases the array is replaced by a BTree, this helps in improving the retrieval time, and also page copying becomes more efficient.
-
-When the number of the values stored reaches a threshold, the array is replaced with a BTree, likewise if the number of values stored are is below the threshold then BTree is replaced by an array.
-In order to avoid many array <-> btree transformations (e.g. when continusously adding and deleting a value), the array -> btree threshold is bigger than the btree -> array threshold.
-
-<pre>
- 0---1---2---...---TH-low--...--TH-high---...
- >-------------Array----------->>---BTree---... When we add new values.
- |////////////| These values will remain in an array or a BTree until
- we reach oe of the threshold values.
- <-----Array-----<<--------BTree------------... When we delete values.
-</pre>
-
-It's important to note that the values inserted into the sub-BTree will be stored as keys, and all the values of this sub-BTree will contain nulls. The sub-btree Keys will be the values of the key present in the parent-BTree.
-
-#### Raw/deserialized values
-
-One key for obtaining good performances is to avoid any useless deserialization. This is easy to implement for the _KeyHolder_, as we only store one single key. For values, it's slightly more complex, as we may have more than one value. The following rules should be followed :
-
-* don't deserialized until necessary (ie, until one needs to get a value)
-* don't serialize until writing (i.e, until the value(s) must be written to disk)
-
-In fact, a value may be in three different states :
-
-* all the values are serialized (when we just read the page from disk)
-* none of the values are serialized (when we just created a ValueHolder with new values)
-* somewhere in the middle, when we are modifying a ValueHolder which has been read from the disk
-
-The third case is the complex one. We should consider two different cases though :
-* the values are stored in a sub-BTree : we don't have to deal with this problem, it's up to the sub-btree to deal with it
-* the values are stored in an array : we don't want to store half of the values as byte[], and half of the values as java instances. We must pick either one form or the other. In this case, as soon as we have to manipulate values in Java, we must deserialize all the values.
-
-#### ValueHolder operations
-The possible operations on a ValueHolder are the following :
-
-* add( value ) : Insert a new value into the ValueHolder. If we reach the upper threshold, then the array is converted into a BTree. In any case, we inject the new value into the array(in the correct order using the comparator present in the serializer) or the BTree.
-
-As we need to compare values, they must be deserialised, so we need to do it if it's not already done (the values are not deserialiezed when the page is read from the disk). Note that it's not necessary for the sub-btree, as it's up to the sub-btree to deserialize the keys on the fly.
-
-Thus the _add_ algorithm will be :
-
-<pre>
- if the values are not yet deserialized
- then deserialize all the values
-</pre>
\ No newline at end of file
diff --git a/content/mavibot/user-guide/7.4-updates.mdtext b/content/mavibot/user-guide/7.4-updates.mdtext
deleted file mode 100644
index 9a55213..0000000
--- a/content/mavibot/user-guide/7.4-updates.mdtext
+++ /dev/null
@@ -1,119 +0,0 @@
-Title: 7.4 - Updates
-NavUp: 7-btree-internals.html
-NavUpText: 7 - Mavibot Internals
-NavPrev: 7.2-physical-storage.html
-NavPrevText: 7.2 - Physical storage
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# 7.4 - Updates
-
-The update operations on a **b-tree** will modify the internal structure in many ways. We will expsoe the evolution of the **mavibot** file when dealing with the addition of a new **b-tree** and the insertion of a new value into it.
-
-Note : we don't show what's happening to the **CopiedPages b-tree** here.
-
-## Initial state before the addition of a b-tree
-
-Here is the content of the *mavibot.db* file before we add any **b-tree** into it :
-
-![Initial state](images/initial-state.png)
-
-As we can see, we just have a *RMHeader* pointing to the management *Btree of Btrees* and to the *CopiedPages* **b-tree**. nothing else.
-
-## Addition of a b-tree
-
-Now, here is the file content after adding a new **b-tree** :
-
-![B-tree test added](images/btree-test-added.png)
-
-Here, the *RMHeader* is pointing to a new revision of the *Btree of Btrees*, which itself contains a reference to the *test* **b-tree** in its first revision. At this point, the old *Btree of Btrees* header and page can be freed and moved into the *free pages list*.
-
-The *CopiedPages* **b-tree** remains unchanged.
-
-## Addition of an element in the test b-tree
-
-Let's go a step further : we now add an element to the *test* **b-tree**. This again will impact the *test* **b-tree*, but also the *Btree of Btrees* and the *RMHeader* as shown in teh following picture :
-
-![V1 added in test b-tree](images/v1-added-in-test.png)
-
-The *RMHeader* is pointing to the second revision of the **Btree of Btrees** header, and a new revision of the *test* **b-tree** is stored in the root page of the **Btree of Btrees**. The *test* **b-tree**, whose header has been copied, now contains the **V1** value, but we still have the first revision of the *test* **b-tree** present in the file and referenced by the *Btree of Btrees*, as some thread might be using it at the time of update.
-
-We will be able to free the pages associated with the revision 1 of the *test* **b-tree** when no threads are using this revision. The old version of the *Btree of Btrees* can be freed too.
-
-The *CopiedPages* **b-tree** will also be updated to contain the page that has ben copied (here, the *test r0* root page). The *RMHeader* will point to the new *CopiedPages* **b-tree** header.
-
-(the picture shows the same file twice, one while the first revision is still in use on the left, and another on the right where the first revision has been released)
-
-## Cleanup
-
-When applying an operation on a btree, we need to first update the *RMHeader* so that it now points to the current **b-trees**.This is done in one single write of the *RMHeader*, where we update the pointers to the new *Btree of Btrees* and *CopiedPages* headers.
-
-Post operation, we need to cleanup the pages that are now useless. This can't be done before we have updated the *RMHeader* because we may lose some pages if we do so. For this reason, we have to keep a reference to the previous headers of those two management btrees (those that are to be freed).
-
-We have first to clean the copied pages for the two management **b-trees**, and when it's done, we can release the two headers of those **b-trees**.
-
-Last, not least, we have to rewrite the *RMHeader* with pointers to the old **b-trees** set to *NO_PAGE*.
-
-## Recovering from a crash
-
-This is a mandatory step : we must be able to get a working and clean file when a crash occurs, and it also must be fast. The idea is that at startup, we should always have a clean database, even if we have some lost pages, and we can proceed to a lost page recovery after the startup without impeding the server operations (except the updates).
-
-There are many places where a crash can occur, and depending on the timing, different operations should take place.
-
-### Crash before the RecordManager header update
-
-We will not be able to recover the pages that have been created before the *RMHeader* update. The only possible way would be to check the entire file to revover them as they won't be pointed by no other data structure.
-
-Otherwise, they are just lost page, they won't create a problem.
-
-
-### Crash after the RMHeader update and before the cleanup
-
-When we restart the database, if the *RMHeader* old pointers contains a value different from *NO_PAGE*, that means we have had a crash.
-
-As we have a pointer to the old management **b-trees** in the *RMHeader*, we can reclaim the associated pages. All the old pages can be recovered from this point, as we have a revision for each of these pages. This covers :
-
-* the test **b-tree** and its header
-* the *Btreeof Btrees* and its header
-* the *CopiedPages* **b-tree** and its header
-
-All those pages are simply attached to the free page list.
-
-When the cleanup is done, we can update the *RMHeader* by setting the old pointers to *NO_PAGE*.
-
-## The RecordManagerHeader
-
-This page contains 4 pointers, two for each of the *Btree of Btrees* and the *CopiedPages* **b-trees**. The rational is that we should always be able to cleanup the file if we get a crash after the update of the *RMHeader* but before the end of the cleanup.
-
-When we apply an operation, and before the cleanuo is done, we update the *RMHeader* to keep a track of the new and old references.
-
-When the cleanup is done, we can set the old reference to *NO_PAGE*.
-
-The *NO_PAGE* reference is a marker for a successful operation.
-
-We also keep a pointer to the first free page of a list of free pages (see the next paragaphe).
-
-## Free page management
-
-We use a list of *free pages* which is updated when we free a page or reclaim a new page. It's a simple list where all the pages are linked together.
-
-Everytime we need a free page, we get it from the the list, and we update the *RMHeader* to point to the next free page in the list (or *NO_PAGE* if we don't have any remaining free page). This is a strain because it's expensive to update the *RMHeader* for each free page we need...
-
-ATM, there is no alternative, so we wil continue to update the *RMHeader* everytime we fecth a free page from the list, or every time we add a free page in the list.
-
-Freeing a page is just a matter to make this page to point to the first free page, then to make the *FreePage* pointer to point to the freed page.
-
diff --git a/content/mavibot/vision.mdtext b/content/mavibot/vision.mdtext
deleted file mode 100644
index 4cbaff1..0000000
--- a/content/mavibot/vision.mdtext
+++ /dev/null
@@ -1,65 +0,0 @@
-Title: Vision
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Vision
-
-The **Apache Directory Server** is using an old package to manage its data : **JDBM**. This is a simple - but functional - BTree implementation in Java. It support transactions and storage on disk.
-
-So far, so good. Except that it's kind of slow, and more important, it does not support concurrent reads and writes.
-
-At some point, we decided to go for another implementation, but for a MVCC BTree.
-
-## What is a MVCC BTree ?
-
-### Btree basics
-
-A **Btree** is a data structure that stores <Key, Value> tuples in a tree, with the guarantee that the tree will be ordered, and that the depth of the tree is the same for all the leaves. A **Btree** has nodes and leaves (with the only exception of a Btree with only a root page). The nodes are used to route to the underlying values, and have children. Leaves don't have children.
-
-Nodes and leaves have a maximum number of elements stored into them, and when they are full, they are split. If the split is done on a leaf, we may have to reorganize the tree so that either we can move some elements up and keep the tree at the current height, or we may have to reorganize the full tree so that all the leaves are at the same level, which will then be one deeper (if we added some value) than the tree before the split.
-
-
-### Btree vs B+Tree
-
-The difference between those two data structures is that Btree store values in the nodes, when B+Tree do store all the values in leaves.
-
-At first glance, we can say that finding a value in a Btree will be faster, as we may not go down to the leaves to find it. OTOH, a B+Tree has many advantages, but the two major advantages are :
-
-* we don't need to go up in the tree to browse the tree when searching for more than one value, we can just read the leaves, as they are chained.
-* we will have smaller nodes, so we can cache more of the tree pages than if we have values in the nodes.
-
-Those two big advantages make the B+Tree more interesting to use than the simpler Btree.
-
-(See [Wikipedia page on B+tree](http://en.wikipedia.org/wiki/B%2B_tree) and [Wikipedia page on Btree](http://en.wikipedia.org/wiki/B-tree)
-
-### MVCC
-
-**MVCC** (Multi Version Concurrency Control) is a way to provide concurrent access to the Btree (it's extensively used in many other areas, like programming languages and transactional memory). The main idea is to create a new version of the tree each time we do a modification. It also allows the reorganization of the data on the fly, but this is an extra benefit.
-
-The way it works is that when you do a search on the tree, you first acquire the current revision. Even if the search is taking a while, because it fetches many values, the tree will remain unchanged for the selected revision
-
-Any modification done on the tree will first create a new revision, and the modified pages will first be copied, so that the previous versions will still be available for any search operation being executed at the same time.
-
-It has three direct consequences :
-
-* first, a search will always return 'outdated' values, in the way that new data won't be returned, as they will be stored in a version which is newer.
-* Second, and more important, we don't need any lock to access the data when doing a search, as there is no possible modification on a versioned tree.
-* Third, concurrent modifications are thus limited, as we want to be sure that we don't override some modification done by another thread. They are ways to mitigate this constraints, but in most of the case, it's acceptable.
-
-# So what do we have with Mavibot ?
-
-Pretty much the same thing than **JDBM** but faster, with concurrent reads and writes, serialized writes, transactions, bulk loads (a missing features in **JDBM**), multi-version support, and in-memory BTree.
\ No newline at end of file
diff --git a/content/original-project-proposal.mdtext b/content/original-project-proposal.mdtext
deleted file mode 100644
index dce11e4..0000000
--- a/content/original-project-proposal.mdtext
+++ /dev/null
@@ -1,196 +0,0 @@
-Title: Proposal for an Apache Directory Project
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-This is the original project proposal for the incubation of the Apache Directory Project sent to the Apache Incubator by Alex Karasulu. Although old (September 2003), it is still worth reading as the original vision of the project. It's a piece of history.
-
-# Proposal for an Apache Directory Project
-
-10 Sept 2003, Alex Karasulu (akarasulu@apache.org) LDAPd Group Founder
-
-* [Rationale](#section-0-rationale)
-* [Scope of the Project](#section-1-scope-of-the-project)
-* [Initial Source](#section-2-initial-source)
-* [ASF Resources to be Created](#section-3-asf-resources-to-be-created)
-* [Initial Set of Committers](#section-4-initial-set-of-committers)
-* [Apache Sponsoring Individuals](#section-5-apache-sponsoring-individuals)
-* [Incubation Exit Criteria](#section-6-incubation-exit-criteria)
-
-## Section 0 : Rationale
-
-The geometric growth of networks, services, distributed systems, and their components has brought about a revival of interest in directories. Directories are no longer considered commodity products used to store a phone book or list of users. Directories and LDAP have grown into a critical technology that will inevitably become a cornerstone of distributed systems. Several software giants like BEA, SUN, and Microsoft have already demonstrated their belief in this outcome by heavily integrating their products with directories. Directory and naming systems are being used in everything from a simplified form for J2EE configuration to full-blown enterprise directories, within identity management systems and distributed computing platforms like JINI.
-
-The overhead of managing several copies of relatively static information across systems and enterprises is daunting and introduces the potential for data inconsistency. The frequently replicated user and group tables in almost every database driven application alone is a testament to this fact. When multiple systems have to inter operate, they must share access to common information, and directories are the best storage paradigm for rapidly accessing this type of data. Whether the information to be stored, is a component's configuration, a user's security profile, a business rule or a business process, directories are the place to store it for centralized management, and distribution across systems.
-
-To date, a fully compliant pure Java open source LDAPv3 server has not yet been written. This is partially due to the fact that a practical stateful protocol server in Java was virtually impossible until the introduction of the NIO packages in the 1.4 SDK. LDAP, as a stateful protocol, manages client state through a TCP socket connection. The socket connection persists through several client requests and server responses tying them together under a logical session or conversation. Before the introduction of non-blocking IO in the NIO packages of the 1.4 SDK, a thread had to be dedicated to each socket to detect IO. A stateful protocol server written completely in Java, would have needed as many active threads as the number of concurrent clients. Theoretically, scalability would have been very poor; the performance curve would be asymptotic, degrading rapidly with an increase in the number of concurrent connections. To scale pure Java statefull protocol server implementations had to wait until the Merlin release of the JDK.
-
-Furthermore, no embeddable pure Java LDAPv3 server has yet been written and made freely available. We believe the embedding of LDAP servers into existing mail, application and web servers to be the next logical steps in the progression and integration of LDAP. Several commercial examples can already be sited: Microsoft Exchange and BEA Weblogic Server. The management benefits of coupling these servers with an LDAP server are beyond the scope of this proposal and left to the imagination of the reader. However, the synergy between embedded LDAP servers and other flagship Apache servers would lead to greater economies of scale for the Apache server suite and reduce the overhead of management for the Apache software user community.
-
-LDAP directories are specialized databases, however unlike their RDBMS counterparts, LDAP directories are fairly new and for this reason lack rich integration features. High on the list of features lacking in LDAP servers are stored procedures and triggers. Triggers and Java stored procedures would expand the horizon of LDAP in itself even without the benefits of Java. Triggers and stored procedures would alleviate ugly workarounds which currently using polling and meta directories. These features alone would attract groups within the LDAP and Java communities to band together and support the Apache LDAP Project.
-
-LDAP is both a network line protocol and a hierarchical relational database. Some might even argue that LDAP is object oriented. Regardless, the implementation of an LDAP server is not a trivial matter. LDAP code bases written in native languages have to be ported to run on different platforms. Conditional complies in C based implementations were shown to considerably reduce the maintainability of code bases. The complexity of a database, a network line protocol and conditional compilation together have resulted in reduced maintainability for C based LDAP servers. Also the learning curve and hence barrier to entry for developers is greater. These complications would not exist for a Java based LDAP server that is written once and can run anywhere.
-
-The Apache Foundation supports several component container projects which provide the proper foundation for a Java LDAP directory server. Apache also supports several server side application containers which can realize significant functional enhancements by employing an LDAP directory server. Also LDAP requiring organizations today must settle for less than optimal implementations and often have to pay as high as a dollar per entry to directory enable their applications. The Apache LDAP Project would solve these problems by providing a free robust LDAPv3 implementation in a standalone configuration or an embeddable configuration for use in all Apache servers and other third party products.
-
-Our goal is to produce a community of developers with backgrounds in LDAP, X.500, Database Engineering and JNDI tasked with the development of pure Java LDAPv3 Clients, APIs, JNDI providers and LDAPv3 compliant servers with the aforementioned features. The produced software will be ASF licensed. Where applicable the best available ASF/BSD licensed code will be reused and new code will be added to complete the LDAPv3 protocol as defined in [RFC 3377](http://www.ietf.org/rfc/rfc3377.txt) and its associated 8 RFCs listed below:
-
-* [RFC2251](http://www.ietf.org/rfc/rfc2251.txt) Lightweight Directory Access Protocol (v3): LDAP on-the-wire protocol
-* [RFC2252](http://www.ietf.org/rfc/rfc2252.txt) Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions
-* [RFC2253](http://www.ietf.org/rfc/rfc2253.txt) Lightweight Directory Access Protocol (v3): UTF-8 String Representation of DNs
-* [RFC2254](http://www.ietf.org/rfc/rfc2254.txt) The String Representation of LDAP Search Filters
-* [RFC2255](http://www.ietf.org/rfc/rfc2255.txt) The LDAP URL Format
-* [RFC2256](http://www.ietf.org/rfc/rfc2256.txt) A Summary of the X.500(96) User Schema for use with LDAPv3
-* [RFC2829](http://www.ietf.org/rfc/rfc2829.txt) Authentication Methods for LDAP
-* [RFC2830](http://www.ietf.org/rfc/rfc2830.txt) Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
-
-Additionally, the schema objects specified within the following RFCs will be defined for use and partial or full complaince will be met where relavent to the project:
-
-* [RFC1274](http://www.ietf.org/rfc/rfc1274.txt) The COSINE and Internet X.500 Schema
-* [RFC1804](http://www.ietf.org/rfc/rfc1804.txt) Schema Publishing in X.500 Directory
-* [RFC2079](http://www.ietf.org/rfc/rfc2079.txt) Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs)
-* [RFC2247](http://www.ietf.org/rfc/rfc2247.txt) Using Domains in LDAP/X.500 Distinguished Names
-* [RFC2293](http://www.ietf.org/rfc/rfc2293.txt) Representing Tables and Subtrees in the X.500 Directory
-* [RFC2294](http://www.ietf.org/rfc/rfc2294.txt) Representing the O/R Address hierarchy in the X.500 Directory Information Tree
-* [RFC2307](http://www.ietf.org/rfc/rfc2307.txt) An Approach for Using LDAP as a Network Information Service
-* [RFC2377](http://www.ietf.org/rfc/rfc2377.txt) Naming Plan for Internet Directory-Enabled Applications
-* [RFC2587](http://www.ietf.org/rfc/rfc2587.txt) Internet X.509 Public Key Infrastructure LDAPv2 Schema
-* [RFC2589](http://www.ietf.org/rfc/rfc2589.txt) Lightweight Directory Access Protocol (v3): Extensions for Dynamic Directory Services
-* [RFC2596](http://www.ietf.org/rfc/rfc2596.txt) Use of Language Codes in LDAP
-* [RFC2649](http://www.ietf.org/rfc/rfc2649.txt) An LDAP Control and Schema for Holding Operation Signatures
-* [RFC2696](http://www.ietf.org/rfc/rfc2696.txt) LDAP Control Extension for Simple Paged Results Manipulation
-* [RFC2713](http://www.ietf.org/rfc/rfc2713.txt) Schema for Representing Java(tm) Objects in an LDAP Directory
-* [RFC2714](http://www.ietf.org/rfc/rfc2714.txt) Schema for Representing CORBA Object References in an LDAP Directory
-* [RFC2798](http://www.ietf.org/rfc/rfc2798.txt) Definition of the inetOrgPerson? LDAP Object Class
-* [RFC2829](http://www.ietf.org/rfc/rfc2829.txt) Authentication Methods for LDAP
-* [RFC2830](http://www.ietf.org/rfc/rfc2830.txt) Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
-* [RFC2849](http://www.ietf.org/rfc/rfc2849.txt) The LDAP Data Interchange Format (LDIF) - Technical Specification
-* [RFC2891](http://www.ietf.org/rfc/rfc2891.txt) LDAP Control Extension for Server Side Sorting of Search Results
-* [RFC3045](http://www.ietf.org/rfc/rfc3045.txt) Storing Vendor Information in the LDAP root DSE
-* [RFC3062](http://www.ietf.org/rfc/rfc3062.txt) LDAP Password Modify Extended Operation
-* [RFC3088](http://www.ietf.org/rfc/rfc3088.txt) OpenLDAP? Root Service An experimental LDAP referral service
-* [RFC3112](http://www.ietf.org/rfc/rfc3112.txt) LDAP Authentication Password Schema
-* [RFC3296](http://www.ietf.org/rfc/rfc3296.txt) Named Subordinate References in Lightweight Directory Access Protocol (LDAP) Directories
-* [RFC3383](http://www.ietf.org/rfc/rfc3383.txt) Internet Assigned Numbers Authority (IANA) considerations for the Lightweight Directory Access Protocol (LDAP)
-
-### Section 0.1 : Criteria
-
-We feel that this project has a good chance for success as the following project aspects are carefully considered :
-
-Meritocracy: The project will be meritocratic - the usual Apache meritocracy rules would apply.
-
-Community: The user community for this project is potentially massive. The initial developer community for this project consists of developers from Apache and LDAPd projects. The aim is for this community to grow considerably once this project enters the incubator.
-
-Core Developers: The initial developers are listed further below within this document and consist of some existing Apache committers together with committers from the LDAPd Group.
-
-Alignment: There is clear alignment with many existing Apache projects. From Jakarta projects such as Tomcat, James and Slide for embedding LDAP. The LDAP DSML standards will eventually require the use of several XML projects. Other projects like OpenJms?, which currently are not Apache projects but very well may be in the future will be used for things like replication. Jdbm likewise is used for building Btree based indices for custom databases. Also projects like Apache Xindice may be leveraged for an XML based backend or for DSML enabling subsystems of an LDAP server.
-
-We see the Apache Directory Project as a separate project to existing Apache projects, serving several roles
-
-* Home for Apache Directory Client APIs and Client Scripts
-* Home for Apache JNDI Providers for Various Directory Namespaces
-* Home for Apache Directory Servers
-* May also become home to an ASN.1 Encoding/Decoding? Library
-
-### Section 0.2 : Warning Signs
-
-We feel this project has a good chance for success as the following warning signs do not apply to the project we are proposing:
-
-Orphaned products: This project is starting with an existing code base which using lots of the high quality open source code out there which is ASF/BSD licensed.
-
-Inexperience with open source: The initial community is made up of existing Apache and LDAPd Group committers exclusively so the open source experience is there to varying degrees.
-
-Reliance on salaried developers: None of the initial developers are currently paid to work on the Directory Project.
-
-No ties to other Apache products: The Apache Directory Project is complementary to existing technologies at Apache. LDAPd currently uses Avalon and will eventually be used by james. LDAPd will eventually integrate into Geronimo. The Apache Directory Project will integrate with, and possibly subsume, Jakarta Commons Naming.
-
-A fascination with the Apache brand: The committers are interested in developing a healthy open source community around ASF/BSD licensed directory servers and their clients along with other JNDI accessible name spaces. Is Apache the right place? We think it is. Several Apache folks have already shown interest in LDAPd, the seed code base to be used for this project. In fact the LDAPd Group was initially approached by Apache to submit an Incubator proposal. LDAPd Group members voted unanimously to donate the code to Apache in an effort to build the next flagship server at Apache and much more.
-
-## Section 1 : Scope of the Project
-
-There are multiple goals for this Apache project:
-
-* Promote a healthy open source community!
-* Promote a language agnostic environment for both client side and server side endeavors.
-* A one stop location for all directory and naming needs on any platform or any language.
- * client APIs
- * clients
- * JNDI providers for Java and other namespaces.
- * May also include an LDAP protocol correctness and stress testing suite in the future.
-* Provide servers in embeddable configurations.
-* Provide servers in standalone configurations as UNIX daemons or NT Services.
-* Provide support for Directory Server embedding or integration with existing Apache servers like httpd, Slide, Tomcat, James and Geronimo.
-
-## Section 2 : Initial Source
-
-The initial code base from which to create the Apache Directory repository is contained mostly at Sourceforge under the LDAPd project accessible [here](#). This code base must assign copyright to the Apache Software Foundation. The code base will need to be licensed under The Apache Software Foundation license. The license file in every subproject will be changed to the Apache license. The current license is already an Apache "style" license, so this change is basically a change to name The ASF as the owner.
-
-The proposed TLP (after incubation) would have an one or more directory servers with multiple datastore backends, a JNDI context for J2EE configuration, JNDI service provider(s) for LDAP and other transports, State and Object Factories suitable for use in the various Context/DirContext? implementations, etc.
-
-Beside source code the LDAPd Group must transfer its IANA assigned ASN.1 Object Identifier to Apache Software Foundation.
-
-## Section 3 : ASF Resources to be Created
-
-### Section 3.1 : Mailing Lists
-
-* directory-dev@incubator.apache.org
-
-### Section 3.2 : CVS Repositories
-
-* incubator-directory
-
-### Section 3.3 : Bugzilla or (preferably) Jira
-
-* directory
-
-## Section 4 : Initial Set of Committers
-
-All contributors must sign and submit a Contributors License Agreement. The following individuals are the contributors, and have signed and sent the agreement at one time or another:
-
-* Alex Karasulu
-* Phil Steitz
-* Robb Penoyer
-* Noel Bergman
-* Jeff Machols
-* Henri Yandell
-* Wes McKean?
-
-## Section 5 : Apache Sponsoring Individuals
-
-* Nicola Ken Barozzi (Apache Incubator)
-* Noel J. Bergman (Apache James)
-* Henri Yandell (Jakarta Commons Naming)
-* Stephen McConnell? (Apache Avalon)
-* James Strachan (Apache Geronimo)
-
-## Section 6 : Incubation Exit Criteria
-
-We feel this project should exit the incubator to a TLP using the domain name directory.apache.org should the following goals be met:
-
-Technical Goals:
-
-* Clean status with Apaches Continuous Integration System
-* Website cross reference to existing Apache literature with respect to rules and regulations
-* At a minimum a beta release and/or a series of Release Candidates for a directory server and its clients.
-* At least one server that complies with [RFC2251](http://www.ietf.org/rfc/rfc2251.txt)
-
-Non-Technical Goals:
-
-* List presence and monitoring in wider Apache communities
-* Website cross reference to existing Apache literarature with respect to rules and regulations
-* Initial integration plan and cooperation with Geronimo, and James
-* Member presence on the licensing@apache list
-* More Apache or non-Apache committers who are actively modifying source code
\ No newline at end of file
diff --git a/content/privacy-policy.mdtext b/content/privacy-policy.mdtext
deleted file mode 100644
index 305665f..0000000
--- a/content/privacy-policy.mdtext
+++ /dev/null
@@ -1,33 +0,0 @@
-Title: Privacy Policy
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Privacy Policy
-
-Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following:
-
-* The IP address from which you access the website;
-* The type of browser and operating system you use to access our site;
-* The date and time you access our site;
-* The pages you visit; and
-* The addresses of pages from where you followed a link to our site.
-
-Part of this information is gathered using a tracking cookie set by the Google Analytics service and handled by Google as described in their privacy policy. See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.
-
-We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.
-
-By using this website, you consent to the collection of this data in the manner and for the purpose described above.
diff --git a/content/references.mdtext b/content/references.mdtext
deleted file mode 100644
index b54881c..0000000
--- a/content/references.mdtext
+++ /dev/null
@@ -1,39 +0,0 @@
-Title: References
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# References
-
-This page gathers some of the pointers you can find on the net about _ApacheDS_ and _LDAP_ :
-
-
-## On wikipedia:
-
-* [Joint placeholder for project, the server, Studio and more](https://en.wikipedia.org/wiki/Apache_Directory)
-* [Overview of know ldap tools and servers](https://en.wikipedia.org/wiki/List_of_LDAP_software)
-* [Overview of directory servers](https://en.wikipedia.org/wiki/Directory_service)
-* [French placeholder](https://fr.wikipedia.org/wiki/Apache_Directory_Server)
-
-## On OHLOH (openhub)
-
-* [Apache Directory Server 1.5](https://www.openhub.net/p/apacheds)
-* [Apache Directory Server 1.0](https://www.openhub.net/p/4873)
-* [Apache Directory Studio](https://www.openhub.net/p/elbe)
-
-## On Twitter:
-
-* [ApacheDS official twitter account](https://twitter.com/apacheds)
diff --git a/content/scimple/index.mdtext b/content/scimple/index.mdtext
deleted file mode 100644
index bd09385..0000000
--- a/content/scimple/index.mdtext
+++ /dev/null
@@ -1,24 +0,0 @@
-Title: Welcome to Apache eSCIMo
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Apache SCIMple™
-
-The Apache SCIMple™ is an implementation of SCIM v2.0 specification.
-
-Using Apache SCIMple™ user and group details can be transferred easily between
-SCIM aware applications.
\ No newline at end of file
diff --git a/content/scimple/news.mdtext b/content/scimple/news.mdtext
deleted file mode 100644
index e614590..0000000
--- a/content/scimple/news.mdtext
+++ /dev/null
@@ -1 +0,0 @@
-# News
diff --git a/content/security-advisories.mdtext b/content/security-advisories.mdtext
deleted file mode 100644
index 151fcf5..0000000
--- a/content/security-advisories.mdtext
+++ /dev/null
@@ -1,30 +0,0 @@
-Title: Security Advisories
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Security Advisories
-
-## Apache LDAP API
-
- * [CVE-2018-1337](https://nvd.nist.gov/vuln/detail/CVE-2018-1337)
- * [CVE-2015-3250](https://nvd.nist.gov/vuln/detail/CVE-2015-3250)
-
-## Apache Directory Studio
-
- * [CVE-2015-5349](https://nvd.nist.gov/vuln/detail/CVE-2015-5349)
-
-
diff --git a/content/skins/gen-docs/.htaccess b/content/skins/gen-docs/.htaccess
deleted file mode 100644
index f634cff..0000000
--- a/content/skins/gen-docs/.htaccess
+++ /dev/null
@@ -1,6 +0,0 @@
-RewriteEngine on
-
-RewriteBase /skins/gen-docs
-
-RewriteRule ^latest$ 1.0.2/
-RewriteRule ^latest/(.*)$ 1.0.2/$1
\ No newline at end of file
diff --git a/content/skins/gen-docs/latest/.htaccess b/content/skins/gen-docs/latest/.htaccess
deleted file mode 100644
index e69de29..0000000
--- a/content/skins/gen-docs/latest/.htaccess
+++ /dev/null
diff --git a/content/sources.mdtext b/content/sources.mdtext
deleted file mode 100644
index fe76e42..0000000
--- a/content/sources.mdtext
+++ /dev/null
@@ -1,139 +0,0 @@
-Title: Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Sources
-
-Most sources for the Apache Directory projects are managed through Git, some parts still remain in Subversion. For each project you can find a detailed description how to checkout and build the source on the project documentation. This page is just a short overview.
-
-## Web access
-
-If you just want to browse the source code, you can use one of the web interfaces:
-
-* [web interface to Gitbox](https://gitbox.apache.org/repos/asf?a=project_list&s=directory-)
-* [web interface to GitHub](https://github.com/apache?q=directory-)
-* [web interface to Subversion](https://svn.apache.org/viewvc/directory)
-
-## Normal Git/Subversion Access
-
-Anyone can clone a git repository or check code out from Subversion. You only need to specify a username and password in order to update a repository, and only Directory committers have the permissions to do that. We run Git and Subversion over standard HTTPS, so hopefully you won't have problems with intervening firewalls.
-
-### Check out from Git or Subversion
-
-For Git use a command like:
-
- git clone https://gitbox.apache.org/repos/asf/directory-server.git
-
-For Subversion Use a command like:
-
- svn checkout https://svn.apache.org/repos/asf/directory/apacheds/trunk
-
-The following table displays the URL of each project, and the URL where you can find information about how to build each project.
-
-| Subproject / Documentation | SCM URL |
-|:-:|:-:|
-| ApacheDS 1.0 (not maintained) | [https://svn.apache.org/repos/asf/directory/apacheds/tags/1.0.2/](https://svn.apache.org/repos/asf/directory/apacheds/tags/1.0.2/) |
-| [ApacheDS 2.0](https://directory.apache.org/apacheds/advanced-ug/0.2-building-trunks.html) | [https://gitbox.apache.org/repos/asf/directory-server.git](https://gitbox.apache.org/repos/asf/directory-server.git) |
-| ApacheDS build tools (checkstyle, docker, junit-addons, skins) | [https://gitbox.apache.org/repos/asf/directory-buildtools.git](https://gitbox.apache.org/repos/asf/directory-buildtools.git) |
-| [Apache Directory Studio](https://directory.apache.org/studio/developers-guide.html) | [https://gitbox.apache.org/repos/asf/directory-studio.git](https://gitbox.apache.org/repos/asf/directory-studio.git) |
-| [Apache LDAP API](https://directory.apache.org/api/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-ldap-api.git](https://gitbox.apache.org/repos/asf/directory-ldap-api.git) |
-| [Apache Mavibot](https://directory.apache.org/mavibot/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-mavibot.git](https://gitbox.apache.org/repos/asf/directory-mavibot.git) |
-| [Apache Fortress Core](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-core.git](https://gitbox.apache.org/repos/asf/directory-fortress-core.git) |
-| [Apache Fortress Realm](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-realm.git](https://gitbox.apache.org/repos/asf/directory-fortress-realm.git) |
-| [Apache Fortress EnMasse (REST API)](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git](https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git) |
-| [Apache Fortress Commander (Web UI)](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-commander.git ](https://gitbox.apache.org/repos/asf/directory-fortress-commander.git ) |
-| [Apache Kerby](https://directory.apache.org/kerby/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-kerby.git ](https://gitbox.apache.org/repos/asf/directory-kerby.git ) |
-| Apache SCIMple | [https://gitbox.apache.org/repos/asf/directory-scimple.git](https://gitbox.apache.org/repos/asf/directory-scimple.git) |
-| Apache Directory Site | [https://svn.apache.org/repos/asf/directory/site/trunk/](https://svn.apache.org/repos/asf/directory/site/trunk/) |
-
-### Commit Changes
-
-Any Directory committer has commit access. Use your Apache user ID and LDAP password for authentication. You can change the password at [https://id.apache.org/](https://id.apache.org/).
-
-### Commit changes to Git
-
-You can use a command like this to commit, rebase possible remote changes, and push your changes to the repository:
-
- git commit
- git pull --rebase
- git push
-
-### Commit changes to Subversion
-
-You can use a command like this to commit:
-
- svn commit
-
-If Subversion can't figure out your username, you can tell it explicitly:
-
- svn --username you commit
-
-Subversion will prompt you for a password, and once you enter it once, it will remember it for you.
-
-## Web Site
-
-The Web site itself is stored in a SVN repository and can be updated easily. Let's see how it works.
-
-What is important here is that the pages are written using Markdown. Once a page has been modified, it can be committed, which will generate the static pages on a staging web site. When everything is checked and sounds correct, the staging site can be published on the production site, which will be pushed to the mirrors every hour. Here is the process :
-
-* Modify the markdown pages
-* Commit them
-* Check on the staging site to see if it's correct (see [https://directory.staging.apache.org/](https://directory.staging.apache.org/))
-* Publish the site using the [Apache CMS](https://www.apache.org/dev/cmsref.html)
-
-### Repository
-
-All the web site can be fetched at [https://svn.apache.org/repos/asf/directory/site/trunk/](https://svn.apache.org/repos/asf/directory/site/trunk/). Be sure to use *https* in order to be able to commit your changes...
-
-### Structure
-The following structure is used :
-
- cgi-bin
-
- content
- |
- +-- apacheds
- |
- +-- api
- .
- .
- +-- (common pages)
-
- lib
- |
- +-- path.pm
- |
- +-- view.pm
-
- templates
- |
- +-- apacheds
- |
- +-- api
- .
- .
- +-- studio
- |
- +-- (index.html, etc)
-
-Usually, you won't have to change the templates and lib section (except when cutting a release). Most of ypur updates will impact the content/<project> pages.
-
-### Publishing the web site
-
-You have to install the [CMS bookmarklet](https://www.apache.org/dev/cms.html#usage) for that. Then simply open the directory web site and click on the bookmarklet, enter your apache credentials (you have to be a committer) and click on the 'Publish' button.
-
-The best way to understand how to use the CMS system is to follow [this video](https://www.youtube.com/watch?v=xcDZN3Lu6HA).
diff --git a/content/special-thanks.mdtext b/content/special-thanks.mdtext
deleted file mode 100644
index 1371b98..0000000
--- a/content/special-thanks.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: Special thanks
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Special Thanks
-
-## General Apache sponsors
-
-Without those sponsors, the ASF would simply not exist or sustain its activities :
-
- * [http://www.apache.org/foundation/thanks.html](http://www.apache.org/foundation/thanks.html)
-
-For those who want to know more about the Apache Sponsorship Program, please check :
-
- * [http://www.apache.org/foundation/sponsorship.html](http://www.apache.org/foundation/sponsorship.html)
-
-Thanks !
-
-## Organizations who helped our project ...
-
-We would also like to thank the organizations who provided some tools and images for free :
-
-| Company/Organization | Donation type | Organization Contact | Apache Contact |
-|:-:|---|:-:|:-:|
-| [![](images/special-thanks/opengroup_logo.png)](http://www.opengroup.org/) | Compliance test suite, LDAP certification support | Lynne Canal | Alex Karasulu |
-| [![](images/special-thanks/YourKit_logo.png)](http://www.yourkit.com/) | Licenses for YourKit | Vladimir Kondratyev (sales at yourkit.com) | Emmanuel Lécharny |
-| [![](images/special-thanks/JetBrains_logo.png)](http://www.jetbrains.com/) | Licenses for IDEA | Ilia Dumov (Ilia.Dumov at jetbrains.com) | Alex Karasulu |
-| [![](images/special-thanks/SQLManager.bmp)](http://www.sqlmanager.net/) | Licenses for MySQL/Postgres | Roman Tkachenko (sales at sqlmanager.net) | Alex Karasulu |
-| [![](images/special-thanks/borland.gif)](http://www.borland.com/) | Licenses for Together | Lesong Chang (lesong.chang at borland.com) | Alex Karasulu |
-| [![](images/special-thanks/opensourceposeidon_supportedby.gif)](http://www.gentleware.com/) | Licenses for Poseidon UML | - | Stefan Zoerner |
-| [![](images/special-thanks/FAMFAMFAM_logo.png)](http://www.famfamfam.com/lab/icons/silk/) | Silk Icons | Mark James | Emmanuel Lécharny |
-| [![](images/special-thanks/zenl_logo.gif)](http://www.lattix.com/) | Licenses for Lattix LDM | Frank Waldman (frank.waldman at lattix.com) | Alex Karasulu |
\ No newline at end of file
diff --git a/content/studio/changelog.mdtext b/content/studio/changelog.mdtext
deleted file mode 100644
index 5dbdb3f..0000000
--- a/content/studio/changelog.mdtext
+++ /dev/null
@@ -1,1120 +0,0 @@
-Title: ChangeLog
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# ChangeLog
-
-## Apache Directory Studio Version 2.0.0-M15 (April 18th 2020)
-
-* [DIRSTUDIO-648](https://issues.apache.org/jira/browse/DIRSTUDIO-648) - Studio should support the Password Modify Extended Operation according RFC 3062
-* [DIRSTUDIO-1124](https://issues.apache.org/jira/browse/DIRSTUDIO-1124) - Fix the user guide that still show how to configure ApacheDS 1.5.x...
-* [DIRSTUDIO-1150](https://issues.apache.org/jira/browse/DIRSTUDIO-1150) - Add a configation option for the connection timeout
-* [DIRSTUDIO-1160](https://issues.apache.org/jira/browse/DIRSTUDIO-1160) - Attributes silently dropped and not imported when import LDIF and provider is Apache Directory LDAP API
-* [DIRSTUDIO-1165](https://issues.apache.org/jira/browse/DIRSTUDIO-1165) - Table Entry Editor - missing options following documentation
-* [DIRSTUDIO-1194](https://issues.apache.org/jira/browse/DIRSTUDIO-1194) - build looks outside of repo (extra "..")
-* [DIRSTUDIO-1195](https://issues.apache.org/jira/browse/DIRSTUDIO-1195) - LDIF editor, entry editor, search result edtor fail to open with ClassCastException
-* [DIRSTUDIO-1197](https://issues.apache.org/jira/browse/DIRSTUDIO-1197) - Connection Network check fails when using the LDAP API
-* [DIRSTUDIO-1199](https://issues.apache.org/jira/browse/DIRSTUDIO-1199) - 2.0.0-M14 doesn't display objectGUID / objectSid correctly
-* [DIRSTUDIO-1200](https://issues.apache.org/jira/browse/DIRSTUDIO-1200) - LDIF export fails with "Comparison method violates its general contract!"
-* [DIRSTUDIO-1202](https://issues.apache.org/jira/browse/DIRSTUDIO-1202) - Eclipse - No perspective to switch to.
-* [DIRSTUDIO-1203](https://issues.apache.org/jira/browse/DIRSTUDIO-1203) - testConnectFailures fails
-* [DIRSTUDIO-1204](https://issues.apache.org/jira/browse/DIRSTUDIO-1204) - ImageDialog can't read binary data
-* [DIRSTUDIO-1205](https://issues.apache.org/jira/browse/DIRSTUDIO-1205) - Which platforms does Studio work with TLS?
-* [DIRSTUDIO-1207](https://issues.apache.org/jira/browse/DIRSTUDIO-1207) - Remove JNDI provider and JNDI layer
-* [DIRSTUDIO-1210](https://issues.apache.org/jira/browse/DIRSTUDIO-1210) - mixed up documentation bug, in replication section of studio docs
-* [DIRSTUDIO-1211](https://issues.apache.org/jira/browse/DIRSTUDIO-1211) - UserCertificate attribute shown as Invalid Certificate if "Apache... Client API" is used
-* [DIRSTUDIO-1215](https://issues.apache.org/jira/browse/DIRSTUDIO-1215) - Getting invalid certificate for binary certificate field
-* [DIRSTUDIO-1217](https://issues.apache.org/jira/browse/DIRSTUDIO-1217) - Viewing entries broken with newer Eclipse versions
-* [DIRSTUDIO-1222](https://issues.apache.org/jira/browse/DIRSTUDIO-1222) - Update to Eclipse 2020-03
-* [DIRSTUDIO-1231](https://issues.apache.org/jira/browse/DIRSTUDIO-1231) - linux eclipse swt ClassCastException LDAPBrowser TableEditor
-* [DIRSTUDIO-1233](https://issues.apache.org/jira/browse/DIRSTUDIO-1233) - NullPointerException within class EntryEditor.java
-* [DIRSTUDIO-1234](https://issues.apache.org/jira/browse/DIRSTUDIO-1234) - Image Editor (still) does not work correctly
-* [DIRSTUDIO-1236](https://issues.apache.org/jira/browse/DIRSTUDIO-1236) - directory.apache.org refers to outdated "Mac OS X", which is now "macOS"
-* [DIRSTUDIO-1240](https://issues.apache.org/jira/browse/DIRSTUDIO-1240) - Directory Studio displays "Invalid Certificate" after userCertificate upload
-* [DIRSTUDIO-1243](https://issues.apache.org/jira/browse/DIRSTUDIO-1243) - Certificate Parsing Fails under Java 11
-* [DIRSTUDIO-1246](https://issues.apache.org/jira/browse/DIRSTUDIO-1246) - Attribute export is different in version M13 and M14
-* [DIRSTUDIO-1247](https://issues.apache.org/jira/browse/DIRSTUDIO-1247) - Fix high memory usage in clipboard code
-
-## Apache Directory Studio Version 2.0.0-M14 (September 8th 2018)
-
-* [DIRSTUDIO-987](https://issues.apache.org/jira/browse/DIRSTUDIO-987) - strange behaviour with multi-valued RDN
-* [DIRSTUDIO-1057](https://issues.apache.org/jira/browse/DIRSTUDIO-1057) - Update site doesn't work with https
-* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
-* [DIRSTUDIO-1148](https://issues.apache.org/jira/browse/DIRSTUDIO-1148) - IOConsole Updater - An internal error has occurred.Java heap space
-* [DIRSTUDIO-1151](https://issues.apache.org/jira/browse/DIRSTUDIO-1151) - DN with backslash not displayed
-* [DIRSTUDIO-1157](https://issues.apache.org/jira/browse/DIRSTUDIO-1157) - Values cannot be modified by text editor
-* [DIRSTUDIO-1163](https://issues.apache.org/jira/browse/DIRSTUDIO-1163) - Apache Directory Studio not starting on my MacBookPro running MacOS 10.13
-* [DIRSTUDIO-1166](https://issues.apache.org/jira/browse/DIRSTUDIO-1166) - Studio crashes frequently Ever since MacOS High Sierra upgrade
-* [DIRSTUDIO-1172](https://issues.apache.org/jira/browse/DIRSTUDIO-1172) - Studio doesn't display entries due to Invalid DN exception, but DN is compliant with RFC4514.
-* [DIRSTUDIO-1174](https://issues.apache.org/jira/browse/DIRSTUDIO-1174) - Directory Studio startup very slow due to schema LDIF processing
-* [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179) - java.io.IOException: Invalid secret key format after Java update
-* [DIRSTUDIO-1180](https://issues.apache.org/jira/browse/DIRSTUDIO-1180) - Value changed by Text Editor doesn't save
-* [DIRSTUDIO-1184](https://issues.apache.org/jira/browse/DIRSTUDIO-1184) - ClassDef not found for @PostConstruct and @PreDestroy for JDK >=9
-* [DIRSTUDIO-1185](https://issues.apache.org/jira/browse/DIRSTUDIO-1185) - OS reported defective Software and needs to be deleted
-* [DIRSTUDIO-1191](https://issues.apache.org/jira/browse/DIRSTUDIO-1191) - Apache Directory Studio (Version: 2.0.0.v20170904-M13) suddenly crashes while browsing in MacOS (10.13.6)
-* [DIRSTUDIO-1156](https://issues.apache.org/jira/browse/DIRSTUDIO-1156) - Text Editor usability improvements
-* [DIRSTUDIO-1175](https://issues.apache.org/jira/browse/DIRSTUDIO-1175) - Description for 1.3.18.0.2.32.102 - 1.3.18.0.2.32.104 missing
-* [DIRSTUDIO-1176](https://issues.apache.org/jira/browse/DIRSTUDIO-1176) - Sign dmg in MacOS release
-* [DIRSTUDIO-1177](https://issues.apache.org/jira/browse/DIRSTUDIO-1177) - Enhance default editor mappings for eDirectory/Identity Manager
-* [DIRSTUDIO-1186](https://issues.apache.org/jira/browse/DIRSTUDIO-1186) - Make Studio Java 11 ready
-* [DIRSTUDIO-1187](https://issues.apache.org/jira/browse/DIRSTUDIO-1187) - Disable JNDI connection provider for Java 9+
-* [DIRSTUDIO-1192](https://issues.apache.org/jira/browse/DIRSTUDIO-1192) - Change update site to use https
-* [DIRSTUDIO-1193](https://issues.apache.org/jira/browse/DIRSTUDIO-1193) - Cleanup documenation
-
-## Apache Directory Studio Version 2.0.0-M13 (September 4th 2017)
-
-* [DIRSTUDIO-1120](https://issues.apache.org/jira/browse/DIRSTUDIO-1120) - Checkbox active protocols
-* [DIRSTUDIO-1127](https://issues.apache.org/jira/browse/DIRSTUDIO-1127) - Configuration of Kerberos and ChangePassword port is not working
-* [DIRSTUDIO-1129](https://issues.apache.org/jira/browse/DIRSTUDIO-1129) - Referrals do not work in v2
-* [DIRSTUDIO-1130](https://issues.apache.org/jira/browse/DIRSTUDIO-1130) - Password from Keystore not used
-* [DIRSTUDIO-1133](https://issues.apache.org/jira/browse/DIRSTUDIO-1133) - Potential NPE issue
-* [DIRSTUDIO-1134](https://issues.apache.org/jira/browse/DIRSTUDIO-1134) - Boolean Attribute Addition with no value causes Directory Studio crash on Mac
-* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
-* [DIRSTUDIO-1143](https://issues.apache.org/jira/browse/DIRSTUDIO-1143) - Stack trace when saving configuration
-* [DIRSTUDIO-1147](https://issues.apache.org/jira/browse/DIRSTUDIO-1147) - bad links studio welcome overview page
-* [DIRSTUDIO-1131](https://issues.apache.org/jira/browse/DIRSTUDIO-1131) - Update for OIDDescriptions.properties
-* [DIRSTUDIO-1144](https://issues.apache.org/jira/browse/DIRSTUDIO-1144) - Upgrade to Eclipse Neon.3
-
-## Apache Directory Studio Version 2.0.0-M12 (November 1st 2016)
-
-* [DIRSTUDIO-738](https://issues.apache.org/jira/browse/DIRSTUDIO-738) - Modular Crypt Format Salts are incorrectly displayed
-* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
-* [DIRSTUDIO-1026](https://issues.apache.org/jira/browse/DIRSTUDIO-1026) - Searching for an AT or an OC using an alternate name does not find it
-* [DIRSTUDIO-1050](https://issues.apache.org/jira/browse/DIRSTUDIO-1050) - High CPU load when opening attribute editor with Eclipse Mars
-* [DIRSTUDIO-1075](https://issues.apache.org/jira/browse/DIRSTUDIO-1075) - ADS does not work with Oracle JRE 9
-* [DIRSTUDIO-1080](https://issues.apache.org/jira/browse/DIRSTUDIO-1080) - Unable to save Server-Configuration: ERR_55 Trying to remove an non-existant attribute: attributetype
-* [DIRSTUDIO-1081](https://issues.apache.org/jira/browse/DIRSTUDIO-1081) - Unable to save any configuration with apacheDS 2.0 and apache studio 2.0 M10
-* [DIRSTUDIO-1082](https://issues.apache.org/jira/browse/DIRSTUDIO-1082) - 'Save configuration' encountered a problem
-* [DIRSTUDIO-1083](https://issues.apache.org/jira/browse/DIRSTUDIO-1083) - Unable to save Configuration
-* [DIRSTUDIO-1085](https://issues.apache.org/jira/browse/DIRSTUDIO-1085) - "Show Default Schema" doesn't seem to do anything
-* [DIRSTUDIO-1090](https://issues.apache.org/jira/browse/DIRSTUDIO-1090) - Sorting by value not being applied
-* [DIRSTUDIO-1091](https://issues.apache.org/jira/browse/DIRSTUDIO-1091) - Apache DS M10 hangs at 14% when connectiing on Windows 10
-* [DIRSTUDIO-1095](https://issues.apache.org/jira/browse/DIRSTUDIO-1095) - Preferences : Connections : Certificates => java.lang.NullPointer
-* [DIRSTUDIO-1098](https://issues.apache.org/jira/browse/DIRSTUDIO-1098) - Refresh of entry causes: "Unhandled event loop exception"
-* [DIRSTUDIO-1100](https://issues.apache.org/jira/browse/DIRSTUDIO-1100) - Race condition.
-* [DIRSTUDIO-1101](https://issues.apache.org/jira/browse/DIRSTUDIO-1101) - Can't disable "Allow Anonymous Access"
-* [DIRSTUDIO-1108](https://issues.apache.org/jira/browse/DIRSTUDIO-1108) - Getting Invalid Certificate for userCertificate;binary entry when connecting with LDAPS, LDAP works fine
-* [DIRSTUDIO-1111](https://issues.apache.org/jira/browse/DIRSTUDIO-1111) - Unable to connect to LDS connected to Active Directory over SSL
-* [DIRSTUDIO-1112](https://issues.apache.org/jira/browse/DIRSTUDIO-1112) - NullPointerException when clicking a certificate on the Certificate Validation preference page
-* [DIRSTUDIO-1114](https://issues.apache.org/jira/browse/DIRSTUDIO-1114) - Bad encoding used in text editor for binary data
-* [DIRSTUDIO-1115](https://issues.apache.org/jira/browse/DIRSTUDIO-1115) - Value editor settings are not used and the menu displays wrong entries
-* [DIRSTUDIO-1116](https://issues.apache.org/jira/browse/DIRSTUDIO-1116) - Attribute not sorted alphabetically for multiple entries
-* [DIRSTUDIO-1121](https://issues.apache.org/jira/browse/DIRSTUDIO-1121) - Performance penalty as editor input is always set twice
-* [DIRSTUDIO-1118](https://issues.apache.org/jira/browse/DIRSTUDIO-1118) - Add menu item to repair ApacheDS partitions
-* [DIRSTUDIO-1093](https://issues.apache.org/jira/browse/DIRSTUDIO-1093) - Upgrade to Eclipse Mars.2
-* [DIRSTUDIO-1022](https://issues.apache.org/jira/browse/DIRSTUDIO-1022) - Installers
-
-## Apache Directory Studio Version 2.0.0-M11 (not released)
-
-## Apache Directory Studio Version 2.0.0-M10 (January 2th 2016)
-
-* CVE-2015-5349 - Command Injection through LDAP CSV export
-* [DIRSTUDIO-1060](https://issues.apache.org/jira/browse/DIRSTUDIO-1060) - Exported OpenLDAP schema has syntax errors
-* [DIRSTUDIO-1061](https://issues.apache.org/jira/browse/DIRSTUDIO-1061) - RawSchemaDefinition always shows single hyphen/dash (empty) for attributes or classes
-* [DIRSTUDIO-1068](https://issues.apache.org/jira/browse/DIRSTUDIO-1068) - Bundles are not resolved on Eclipse Mars
-* [DIRSTUDIO-1077](https://issues.apache.org/jira/browse/DIRSTUDIO-1077) - Logging for embedded ApacheDS servers broken (log4j.properties is deleted)
-* [DIRSTUDIO-1079](https://issues.apache.org/jira/browse/DIRSTUDIO-1079) - Creating a new entry using an existing one fails because teh entryCSN at is being copied
-* [DIRSTUDIO-1065](https://issues.apache.org/jira/browse/DIRSTUDIO-1065) - Have a better error message when the java version is wrong
-
-## Apache Directory Studio Version 2.0.0-M9 (June 6th 2015)
-
-**Bug**
-
-* [DIRSTUDIO-815](https://issues.apache.org/jira/browse/DIRSTUDIO-815) - Tiny translation error [DE]
-* [DIRSTUDIO-819](https://issues.apache.org/jira/browse/DIRSTUDIO-819) - Cannot open entries with DNs with UTF8 characters (Active Directory)
-* [DIRSTUDIO-836](https://issues.apache.org/jira/browse/DIRSTUDIO-836) - Search for attributes with underscore "_" in attribute name eg. attr_name is not possible
-* [DIRSTUDIO-855](https://issues.apache.org/jira/browse/DIRSTUDIO-855) - Some logical site artifact paths do not exist in site.xml / Apache Directory Studio 2.X Update Site / Nexus P2 Update Site Proxy
-* [DIRSTUDIO-860](https://issues.apache.org/jira/browse/DIRSTUDIO-860) - Apache Directory Studio Update Site ZIP Archive not installable in Eclipse Indigo
-* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
-* [DIRSTUDIO-922](https://issues.apache.org/jira/browse/DIRSTUDIO-922) - Eclipse plugin for version 2.0.0-M7 not installing correctly
-* [DIRSTUDIO-932](https://issues.apache.org/jira/browse/DIRSTUDIO-932) - NPE while importing an ApacheDS 2.0 configuration from within the editor
-* [DIRSTUDIO-934](https://issues.apache.org/jira/browse/DIRSTUDIO-934) - Exporting the configuration from the ApacheDS 2.0 Configuration Editor should not change the input
-* [DIRSTUDIO-938](https://issues.apache.org/jira/browse/DIRSTUDIO-938) - LDAP Browser shows non ascii symbols as escaped
-* [DIRSTUDIO-948](https://issues.apache.org/jira/browse/DIRSTUDIO-948) - Sorting search results does not work with over 1000 results
-* [DIRSTUDIO-950](https://issues.apache.org/jira/browse/DIRSTUDIO-950) - Add support for PKCS5S2 hashing mechanism in Password Dialog
-* [DIRSTUDIO-955](https://issues.apache.org/jira/browse/DIRSTUDIO-955) - Quick search one/subtree scope button is not sticky/always defaults to "one" when starting DS
-* [DIRSTUDIO-958](https://issues.apache.org/jira/browse/DIRSTUDIO-958) - Exporting schemas as OpenLDAP files outputs entries in random order
-* [DIRSTUDIO-959](https://issues.apache.org/jira/browse/DIRSTUDIO-959) - Exporting schemas as OpenLDAP files does not use proper escaping
-* [DIRSTUDIO-961](https://issues.apache.org/jira/browse/DIRSTUDIO-961) - Crash during loading after recent uplate of libraries on Ubuntu
-* [DIRSTUDIO-962](https://issues.apache.org/jira/browse/DIRSTUDIO-962) - Crash at startup : gtk_widget_get_tooltip_text
-* [DIRSTUDIO-963](https://issues.apache.org/jira/browse/DIRSTUDIO-963) - Why UTF-8 is escaped in DN strings since 2.0.0?
-* [DIRSTUDIO-964](https://issues.apache.org/jira/browse/DIRSTUDIO-964) - Fonts look ugly on Mac with Retina Display
-* [DIRSTUDIO-965](https://issues.apache.org/jira/browse/DIRSTUDIO-965) - SIGSEGV on Startup
-* [DIRSTUDIO-966](https://issues.apache.org/jira/browse/DIRSTUDIO-966) - NullPointerException after expanding LDAP tree and "Error notifying a preference change listener" in "attr/val quick filter"
-* [DIRSTUDIO-967](https://issues.apache.org/jira/browse/DIRSTUDIO-967) - Timeout occurs during LDAP search
-* [DIRSTUDIO-970](https://issues.apache.org/jira/browse/DIRSTUDIO-970) - gui quit whithout any prompt
-* [DIRSTUDIO-979](https://issues.apache.org/jira/browse/DIRSTUDIO-979) - Crash with port already in use issues
-* [DIRSTUDIO-983](https://issues.apache.org/jira/browse/DIRSTUDIO-983) - Package org.eclipse.update has been removed in Eclipse 4.2
-* [DIRSTUDIO-988](https://issues.apache.org/jira/browse/DIRSTUDIO-988) - Studio plugins don't work in Eclipse Luna
-* [DIRSTUDIO-993](https://issues.apache.org/jira/browse/DIRSTUDIO-993) - Directory studio stops after a few commands issued
-* [DIRSTUDIO-999](https://issues.apache.org/jira/browse/DIRSTUDIO-999) - Fails to start after upgrade to CentOS 6.6/cairo 1.8.8-3.1
-* [DIRSTUDIO-1000](https://issues.apache.org/jira/browse/DIRSTUDIO-1000) - LDAP perspective not opening on STS 3.6.2
-* [DIRSTUDIO-1001](https://issues.apache.org/jira/browse/DIRSTUDIO-1001) - Unable to install in Luna
-* [DIRSTUDIO-1012](https://issues.apache.org/jira/browse/DIRSTUDIO-1012) - Wrong USAGE for 9 passwordPolicy attributes
-* [DIRSTUDIO-1014](https://issues.apache.org/jira/browse/DIRSTUDIO-1014) - Cannot remove the 'finished operations' in the progress pane
-* [DIRSTUDIO-1018](https://issues.apache.org/jira/browse/DIRSTUDIO-1018) - Adding a new LDIF file directly fails with an error "can't find IDfind.ext"
-* [DIRSTUDIO-1020](https://issues.apache.org/jira/browse/DIRSTUDIO-1020) - Fail to launch
-* [DIRSTUDIO-1038](https://issues.apache.org/jira/browse/DIRSTUDIO-1038) - Dispose the various org.eclipse.swt.graphics.* objects we use
-* [DIRSTUDIO-1039](https://issues.apache.org/jira/browse/DIRSTUDIO-1039) - SWTBot test suite hangs on opening connection
-* [DIRSTUDIO-1040](https://issues.apache.org/jira/browse/DIRSTUDIO-1040) - Job found still running after platform shutdown
-* [DIRSTUDIO-1042](https://issues.apache.org/jira/browse/DIRSTUDIO-1042) - Fix logging system
-* [DIRSTUDIO-1043](https://issues.apache.org/jira/browse/DIRSTUDIO-1043) - First open of LDIF editor fails
-* [DIRSTUDIO-1045](https://issues.apache.org/jira/browse/DIRSTUDIO-1045) - New Connection problem - ERR_04269 ATTRIBUTE_TYPE for OID ads-basedn does not exist
-* [DIRSTUDIO-1047](https://issues.apache.org/jira/browse/DIRSTUDIO-1047) - No BrowserViewUniversalListener.connectionOpened null checks
-
-**Improvement**
-
-* [DIRSTUDIO-425](https://issues.apache.org/jira/browse/DIRSTUDIO-425) - Please provide the eclipse update site as zipfile
-* [DIRSTUDIO-937](https://issues.apache.org/jira/browse/DIRSTUDIO-937) - No password confirmation while changing it
-* [DIRSTUDIO-940](https://issues.apache.org/jira/browse/DIRSTUDIO-940) - Have schema editor populate creatorsName attribute for new objects (needed by ApacheDS)
-* [DIRSTUDIO-941](https://issues.apache.org/jira/browse/DIRSTUDIO-941) - Friendly name for attribute syntax not shown when creating new attribute
-* [DIRSTUDIO-942](https://issues.apache.org/jira/browse/DIRSTUDIO-942) - Description for OID 1.3.18.0.2.32.99 missing
-* [DIRSTUDIO-980](https://issues.apache.org/jira/browse/DIRSTUDIO-980) - Make the new schema element visible withoit needing to click refresh in an obscure popup...
-* [DIRSTUDIO-985](https://issues.apache.org/jira/browse/DIRSTUDIO-985) - member;Range
-* [DIRSTUDIO-1003](https://issues.apache.org/jira/browse/DIRSTUDIO-1003) - The "Open Configuration" function is broken and doesn't work
-* [DIRSTUDIO-1041](https://issues.apache.org/jira/browse/DIRSTUDIO-1041) - Headless run of SWTBot tests
-
-**New Feature**
-
-* [DIRSTUDIO-756](https://issues.apache.org/jira/browse/DIRSTUDIO-756) - Provide a P2 repository
-* [DIRSTUDIO-949](https://issues.apache.org/jira/browse/DIRSTUDIO-949) - Add the ability to configure a Mavibot partition
-
-**Task**
-
-* [DIRSTUDIO-646](https://issues.apache.org/jira/browse/DIRSTUDIO-646) - Exclude ".gitignore" from source distribution
-* [DIRSTUDIO-995](https://issues.apache.org/jira/browse/DIRSTUDIO-995) - Migrate build system to use Tycho
-* [DIRSTUDIO-1005](https://issues.apache.org/jira/browse/DIRSTUDIO-1005) - Cleanup ApacheDS plugins
-* [DIRSTUDIO-1006](https://issues.apache.org/jira/browse/DIRSTUDIO-1006) - Fix ODF export
-* [DIRSTUDIO-1007](https://issues.apache.org/jira/browse/DIRSTUDIO-1007) - Replace org.eclipse.update.*
-* [DIRSTUDIO-1009](https://issues.apache.org/jira/browse/DIRSTUDIO-1009) - Check legal files
-* [DIRSTUDIO-1010](https://issues.apache.org/jira/browse/DIRSTUDIO-1010) - Hide unwanted UI items contributed by org.eclipse.* plugins
-* [DIRSTUDIO-1016](https://issues.apache.org/jira/browse/DIRSTUDIO-1016) - Adapt ApacheDS plugins to new configuration scheme
-* [DIRSTUDIO-1051](https://issues.apache.org/jira/browse/DIRSTUDIO-1051) - Update developer documentation
-* [DIRSTUDIO-1021](https://issues.apache.org/jira/browse/DIRSTUDIO-1021) - Enable tests
-* [DIRSTUDIO-1023](https://issues.apache.org/jira/browse/DIRSTUDIO-1023) - Generate P2 repository / update site
-* [DIRSTUDIO-1024](https://issues.apache.org/jira/browse/DIRSTUDIO-1024) - Define release process
-* [DIRSTUDIO-1025](https://issues.apache.org/jira/browse/DIRSTUDIO-1025) - Cleanup after Tycho Migration
-
-***
-
-## Apache Directory Studio Version 2.0.0-M8 (July 4th 2013)
-
-**Bug**
-
-* [DIRSTUDIO-788](https://issues.apache.org/jira/browse/DIRSTUDIO-788) - Date and Time editor incorrect time format for eDirectory
-* [DIRSTUDIO-792](https://issues.apache.org/jira/browse/DIRSTUDIO-792) - Batch operation Next button inactive
-* [DIRSTUDIO-868](https://issues.apache.org/jira/browse/DIRSTUDIO-868) - Do not send an unbind request if the authentication fails
-* [DIRSTUDIO-911](https://issues.apache.org/jira/browse/DIRSTUDIO-911) - Object classes not visible within Schema View of OS X
-* [DIRSTUDIO-912](https://issues.apache.org/jira/browse/DIRSTUDIO-912) - No connection pre-selected when DIT, Searches or Bookmarks is selected in the LDAP Brower view and the wizard is accessed via 'File' > 'Import' menu
-* [DIRSTUDIO-917](https://issues.apache.org/jira/browse/DIRSTUDIO-917) - Exporting for ApacheDS an AT with a not-set syntax length results in 'm-length: 0' output in the resulting LDIF file
-* [DIRSTUDIO-918](https://issues.apache.org/jira/browse/DIRSTUDIO-918) - Wrong error message in Import LDIF wizard when no connection is selected
-* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
-* [DIRSTUDIO-921](https://issues.apache.org/jira/browse/DIRSTUDIO-921) - Schema Pane does not refresh when creating a new object class
-* [DIRSTUDIO-927](https://issues.apache.org/jira/browse/DIRSTUDIO-927) - The "options... Advanced Options Configuration" link on the "Overview" age does not work
-* [DIRSTUDIO-930](https://issues.apache.org/jira/browse/DIRSTUDIO-930) - ERR_04269 ads_pwdvalidator does not exist
-* [DIRSTUDIO-931](https://issues.apache.org/jira/browse/DIRSTUDIO-931) - ERR_04269 ATTRIBUTE_TYPE for OID ads-pwdvalidator does not exist!
-**Improvement**
-
-* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
-* [DIRSTUDIO-929](https://issues.apache.org/jira/browse/DIRSTUDIO-929) - Improve Hex Value Editor to allow text edition
-
-**Task**
-
-* [DIRSTUDIO-925](https://issues.apache.org/jira/browse/DIRSTUDIO-925) - Add new mandatory and optional attributes introduced for the 'ads-delegatingAuthenticator' object class
-
-***
-
-## Apache Directory Studio Version 2.0.0-M7 (May 17th 2013)
-
-**Bug**
-
-* [DIRSTUDIO-865](https://issues.apache.org/jira/browse/DIRSTUDIO-865) - NullPointerException thrown when connecting to Domino 8.5.2FP3 LDAP
-* [DIRSTUDIO-888](https://issues.apache.org/jira/browse/DIRSTUDIO-888) - Improve editing of boolean values to allow lowercased values and shortcuts
-* [DIRSTUDIO-891](https://issues.apache.org/jira/browse/DIRSTUDIO-891) - A schema project containing a reference to a deleted connection makes the perspective completely unusable
-* [DIRSTUDIO-892](https://issues.apache.org/jira/browse/DIRSTUDIO-892) - Unable to import ApacheDS core schemas
-* [DIRSTUDIO-893](https://issues.apache.org/jira/browse/DIRSTUDIO-893) - ConcurrentModificationException thrown while deleting multiple schema elements
-* [DIRSTUDIO-899](https://issues.apache.org/jira/browse/DIRSTUDIO-899) - Unable to install Studio using the update site: "Missing requirement: ApacheDS Core 2.0.0.M11"
-* [DIRSTUDIO-902](https://issues.apache.org/jira/browse/DIRSTUDIO-902) - Unusable configuration of the HashingPasswordInterceptor with recent milestone of ApacheDS 2.0
-* [DIRSTUDIO-904](https://issues.apache.org/jira/browse/DIRSTUDIO-904) - Directory Studio create files with french "accents"
-* [DIRSTUDIO-905](https://issues.apache.org/jira/browse/DIRSTUDIO-905) - IOException (Document is closed) thrown when quitting Apache Directory Studio with an LDAP Server running
-* [DIRSTUDIO-907](https://issues.apache.org/jira/browse/DIRSTUDIO-907) - ERR_04269 ATTRIBUTE_TYPE for OID ads-replpingersleep does not exist!
-* [DIRSTUDIO-916](https://issues.apache.org/jira/browse/DIRSTUDIO-916) - Can not open configuration for fresh installed ApacheDS and Studio
-
-**Improvement**
-
-* [DIRSTUDIO-857](https://issues.apache.org/jira/browse/DIRSTUDIO-857) - Add support for PasswordPolicy configuration
-* [DIRSTUDIO-884](https://issues.apache.org/jira/browse/DIRSTUDIO-884) - Add new MessageDigest algorithm for passwords
-* [DIRSTUDIO-895](https://issues.apache.org/jira/browse/DIRSTUDIO-895) - Add a 'Show password' checkbox to the CredentialsDialog used to ask the connection's password when it's not saved
-* [DIRSTUDIO-897](https://issues.apache.org/jira/browse/DIRSTUDIO-897) - Active Directory attribute type 'lockoutTime' should be linked with the 'MS AD Date and Time Editor'
-* [DIRSTUDIO-898](https://issues.apache.org/jira/browse/DIRSTUDIO-898) - Add case-insensitive support for the attribute types aliases in the 'Value Editors' preferences page
-
-**New Feature**
-
-* [DIRSTUDIO-901](https://issues.apache.org/jira/browse/DIRSTUDIO-901) - Add the ability to store connection passwords in a password-protected keystore
-
-***
-
-## Apache Directory Studio 2.0.0-M6 (March 8th 2013)
-
-**Bug**
-
-* [DIRSTUDIO-861](https://issues.apache.org/jira/browse/DIRSTUDIO-861) - Errors with DNs containing non-ASCII values on Active Directory
-* [DIRSTUDIO-873](https://issues.apache.org/jira/browse/DIRSTUDIO-873) - Kerberos encryption types are not saved correctly
-* [DIRSTUDIO-876](https://issues.apache.org/jira/browse/DIRSTUDIO-876) - Integer Editor should focus on the value text field upon opening
-* [DIRSTUDIO-878](https://issues.apache.org/jira/browse/DIRSTUDIO-878) - Generation of the user guides as PDF and standalone HTML is broken
-* [DIRSTUDIO-879](https://issues.apache.org/jira/browse/DIRSTUDIO-879) - Flags for an attribute type in the Schema Browser are not correctly rendered on OS X
-* [DIRSTUDIO-889](https://issues.apache.org/jira/browse/DIRSTUDIO-889) - Error "Changes could not be saved to the connection" when saving server configuration on stock server and studio
-
-**Improvement**
-
-* [DIRSTUDIO-872](https://issues.apache.org/jira/browse/DIRSTUDIO-872) - The list of possible Kerberos encryption type should be available
-
-**Task**
-
-* [DIRSTUDIO-874](https://issues.apache.org/jira/browse/DIRSTUDIO-874) - Remove all ApacheDS and Apache Mina libraries plugins from trunk in '/libraries'
-* [DIRSTUDIO-877](https://issues.apache.org/jira/browse/DIRSTUDIO-877) - Update ApacheDS schema files to the latest version
-* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
-
-***
-
-## Apache Directory Studio 2.0.0-M5 (January 31th 2013)
-
-**Bug**
-
-* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
-
-***
-
-## Apache Directory Studio 2.0.0-M4 (January 25th 2013)
-
-**Bug**
-
-* [DIRSTUDIO-775](https://issues.apache.org/jira/browse/DIRSTUDIO-775) - Display issues in Image Editor
-* [DIRSTUDIO-795](https://issues.apache.org/jira/browse/DIRSTUDIO-795) - Unable to delete multiple schema elements (attribute type, object class or schema)
-* [DIRSTUDIO-796](https://issues.apache.org/jira/browse/DIRSTUDIO-796) - Unable to open multiple schema elements (attribute type, object class or schema)
-* [DIRSTUDIO-799](https://issues.apache.org/jira/browse/DIRSTUDIO-799) - Unable to move object with Apache LDAP API
-* [DIRSTUDIO-802](https://issues.apache.org/jira/browse/DIRSTUDIO-802) - Confusion between ISO-8859-1 and UTF-8 in the Encode/Decode dialog
-* [DIRSTUDIO-808](https://issues.apache.org/jira/browse/DIRSTUDIO-808) - "Update existing entries" checkbox in "LDIF Import" wizard fails to work with the Apache Directory LDAP API
-* [DIRSTUDIO-810](https://issues.apache.org/jira/browse/DIRSTUDIO-810) - Fullscreen plugin is /not/ under the Apache license
-* [DIRSTUDIO-812](https://issues.apache.org/jira/browse/DIRSTUDIO-812) - Error while performing search
-* [DIRSTUDIO-822](https://issues.apache.org/jira/browse/DIRSTUDIO-822) - Typo in one of the default indexed attributes when creating a new partition in the ApacheDS Configuration Editor v2
-* [DIRSTUDIO-823](https://issues.apache.org/jira/browse/DIRSTUDIO-823) - Integer Value Editor only selects values of Java Integer magnitude
-* [DIRSTUDIO-827](https://issues.apache.org/jira/browse/DIRSTUDIO-827) - Quick Search is not displayed when folding is activated
-* [DIRSTUDIO-829](https://issues.apache.org/jira/browse/DIRSTUDIO-829) - NPE when trying to add a 'subtreeSpecification' value
-* [DIRSTUDIO-833](https://issues.apache.org/jira/browse/DIRSTUDIO-833) - NPE in ACI Item Editor when adding AttributeType permission
-* [DIRSTUDIO-834](https://issues.apache.org/jira/browse/DIRSTUDIO-834) - Unable to edit subtreeSpecification
-* [DIRSTUDIO-835](https://issues.apache.org/jira/browse/DIRSTUDIO-835) - Display issues in the Password Editor on OS X
-* [DIRSTUDIO-840](https://issues.apache.org/jira/browse/DIRSTUDIO-840) - Help system is not working
-* [DIRSTUDIO-850](https://issues.apache.org/jira/browse/DIRSTUDIO-850) - The "Remove" button for mandatory ATs in the OC Editor does nothing
-* [DIRSTUDIO-858](https://issues.apache.org/jira/browse/DIRSTUDIO-858) - The Entry Editor's Outline view should be unavailable when the selection isn't an entry or a bookmark
-* [DIRSTUDIO-864](https://issues.apache.org/jira/browse/DIRSTUDIO-864) - Error message appears: "ERR_04269 ATTRIBUTE_TYPE for OID ads-replenabled does not exist!" when trying to open configuration
-
-**Improvement**
-
-* [DIRSTUDIO-657](https://issues.apache.org/jira/browse/DIRSTUDIO-657) - Add options to output the resulting LDIF of a batch operation to a file or to the clipboard
-* [DIRSTUDIO-793](https://issues.apache.org/jira/browse/DIRSTUDIO-793) - Batch Operation define modification slowdown, needs scrollbar
-* [DIRSTUDIO-797](https://issues.apache.org/jira/browse/DIRSTUDIO-797) - Two different 'HistoryUtils' classes should be merged into a single one in 'common.ui' plugin
-* [DIRSTUDIO-809](https://issues.apache.org/jira/browse/DIRSTUDIO-809) - Improve the behavior of the "Execute LDIF" action of the LDIF Editor
-* [DIRSTUDIO-813](https://issues.apache.org/jira/browse/DIRSTUDIO-813) - Add default value editors for eDirectory
-* [DIRSTUDIO-828](https://issues.apache.org/jira/browse/DIRSTUDIO-828) - The Quick Search context menu item could reuse the currently selected entry in the Browser view as search base
-* [DIRSTUDIO-838](https://issues.apache.org/jira/browse/DIRSTUDIO-838) - Add support for configuring the context entry of a partition in the ApacheDS 2.0 Configuration Editor
-* [DIRSTUDIO-841](https://issues.apache.org/jira/browse/DIRSTUDIO-841) - When creating a connection from an existing ApacheDS 2.0 server, the "Open Configuration" item is not available
-* [DIRSTUDIO-851](https://issues.apache.org/jira/browse/DIRSTUDIO-851) - Add a hint in the Connection Properties dialog about Certifcate Validation with a link to the corresponding preference page
-* [DIRSTUDIO-852](https://issues.apache.org/jira/browse/DIRSTUDIO-852) - Display issues in the Certificate Validation preference page on OS X
-
-**New Feature**
-
-* [DIRSTUDIO-804](https://issues.apache.org/jira/browse/DIRSTUDIO-804) - Interpret Active Directory Timestamps
-* [DIRSTUDIO-806](https://issues.apache.org/jira/browse/DIRSTUDIO-806) - Editing Multiple Directory Objects at once
-* [DIRSTUDIO-843](https://issues.apache.org/jira/browse/DIRSTUDIO-843) - There is no place we can configure the KeyStore to use while configuring an ApacheDS server
-
-**Task**
-
-* [DIRSTUDIO-736](https://issues.apache.org/jira/browse/DIRSTUDIO-736) - Implement the "Execute Online" button of the BatchOperationWizard
-* [DIRSTUDIO-791](https://issues.apache.org/jira/browse/DIRSTUDIO-791) - Update supportedControl and supportedExtension descriptions
-* [DIRSTUDIO-811](https://issues.apache.org/jira/browse/DIRSTUDIO-811) - Review and remove any source file under Eclipse Public License (EPL) v 1.0
-* [DIRSTUDIO-816](https://issues.apache.org/jira/browse/DIRSTUDIO-816) - Update OIDs to Descriptions properties file
-* [DIRSTUDIO-839](https://issues.apache.org/jira/browse/DIRSTUDIO-839) - Update Eclipse dependencies to version 3.8.1
-
-***
-
-## Apache Directory Studio 2.0.0-M3 (February 24th 2012)
-
-**Bug**
-
-* [DIRSTUDIO-764](https://issues.apache.org/jira/browse/DIRSTUDIO-764) - Image Editor does not work correctly
-* [DIRSTUDIO-765](https://issues.apache.org/jira/browse/DIRSTUDIO-765) - Can not export DSML
-* [DIRSTUDIO-767](https://issues.apache.org/jira/browse/DIRSTUDIO-767) - All attribute names are lowercase when using Apache Directory LDAP Client API
-* [DIRSTUDIO-768](https://issues.apache.org/jira/browse/DIRSTUDIO-768) - Error while searching using a filter on a binary attribute
-* [DIRSTUDIO-769](https://issues.apache.org/jira/browse/DIRSTUDIO-769) - Alt-S shortkey does not work in Search Dialog
-* [DIRSTUDIO-770](https://issues.apache.org/jira/browse/DIRSTUDIO-770) - Typos in french translation
-* [DIRSTUDIO-771](https://issues.apache.org/jira/browse/DIRSTUDIO-771) - Searches are not saved when closing Studio 2.0 M1/M2
-* [DIRSTUDIO-772](https://issues.apache.org/jira/browse/DIRSTUDIO-772) - Entry UUID Editor can't display eDirectory GUID
-* [DIRSTUDIO-773](https://issues.apache.org/jira/browse/DIRSTUDIO-773) - IllegalArgumentException thrown when copying the RootDSE
-* [DIRSTUDIO-776](https://issues.apache.org/jira/browse/DIRSTUDIO-776) - Misleading title for action "Open 'Search Result'/'Bookmark'/'Entry' in DIT" in LDAP Browser view context menu
-* [DIRSTUDIO-777](https://issues.apache.org/jira/browse/DIRSTUDIO-777) - Renaming entry fails when using Apache Directory LDAP API
-* [DIRSTUDIO-778](https://issues.apache.org/jira/browse/DIRSTUDIO-778) - NullPointerException when refreshing a TableEntryEditor
-* [DIRSTUDIO-779](https://issues.apache.org/jira/browse/DIRSTUDIO-779) - Label for folded attributes in TableEntryEditor is not updated when quick filter is used
-* [DIRSTUDIO-783](https://issues.apache.org/jira/browse/DIRSTUDIO-783) - The 'Rename Entry' dialog doesn't resize automatically when adding or removing RDN parts
-
-**Improvement**
-
-* [DIRSTUDIO-713](https://issues.apache.org/jira/browse/DIRSTUDIO-713) - Improve the 'Show in' sub-menu of the TableEntryEditor
-* [DIRSTUDIO-780](https://issues.apache.org/jira/browse/DIRSTUDIO-780) - Allow Apache Directory Studio to be pinned to Windows 7's taskbar
-* [DIRSTUDIO-782](https://issues.apache.org/jira/browse/DIRSTUDIO-782) - Improve Windows installer with JRE detection and creation of 'Apache Directory Studio.ini' file
-* [DIRSTUDIO-784](https://issues.apache.org/jira/browse/DIRSTUDIO-784) - Add the ability to sort searches in the LDAP Browser view
-* [DIRSTUDIO-785](https://issues.apache.org/jira/browse/DIRSTUDIO-785) - Add the ability to sort bookmarks in the LDAP Browser view
-
-**Question**
-
-* [DIRSTUDIO-821](https://issues.apache.org/jira/browse/DIRSTUDIO-821) - Where to get the public certificate used to sign the JAR of DS 1.5.3?
-
-***
-
-## Apache Directory Studio 2.0.0-M2 (January 27th 2012)
-
-**Bug**
-
-* [DIRSTUDIO-630](https://issues.apache.org/jira/browse/DIRSTUDIO-630) - Importing a Schema project twice shouldn't be possible
-* [DIRSTUDIO-733](https://issues.apache.org/jira/browse/DIRSTUDIO-733) - Error while reading RootDSE on Sun One directory server
-* [DIRSTUDIO-739](https://issues.apache.org/jira/browse/DIRSTUDIO-739) - Using 'Quick Search' in the DN editor while editing some object cancels editing and jumps to 'Quick Search' in the main window
-* [DIRSTUDIO-759](https://issues.apache.org/jira/browse/DIRSTUDIO-759) - Exit confirmation dialog is showed twice when quitting the application by closing the window on Linux and Windows
-* [DIRSTUDIO-760](https://issues.apache.org/jira/browse/DIRSTUDIO-760) - Unable to bind on an Active Directory server using 'domain\userid'
-* [DIRSTUDIO-763](https://issues.apache.org/jira/browse/DIRSTUDIO-763) - Typo in some English error messages ('occured' instead of 'occurred')
-
-***
-
-## Apache Directory Studio 2.0.0-M1 (January 11th 2012)
-
-**Bug**
-
-* [DIRSTUDIO-301](https://issues.apache.org/jira/browse/DIRSTUDIO-301) - Intermittant ClassCastException from dom4j.DocumentFactory.getInstance()
-* [DIRSTUDIO-428](https://issues.apache.org/jira/browse/DIRSTUDIO-428) - Same Name for attribute type and objectclass
-* [DIRSTUDIO-454](https://issues.apache.org/jira/browse/DIRSTUDIO-454) - Colliding attributeType and objectClass names not supported
-* [DIRSTUDIO-564](https://issues.apache.org/jira/browse/DIRSTUDIO-564) - Update ApacheDS core schema files to the latest version
-* [DIRSTUDIO-651](https://issues.apache.org/jira/browse/DIRSTUDIO-651) - Typo in french translation
-* [DIRSTUDIO-653](https://issues.apache.org/jira/browse/DIRSTUDIO-653) - The 'Choose' text for buttons on the AT and OC selection dialog has not been extracted for localization
-* [DIRSTUDIO-658](https://issues.apache.org/jira/browse/DIRSTUDIO-658) - Exiting Directory Studio consumes CPU for couple of minutes
-* [DIRSTUDIO-659](https://issues.apache.org/jira/browse/DIRSTUDIO-659) - Studio prompts for password even when "No Authentication" is selected
-* [DIRSTUDIO-663](https://issues.apache.org/jira/browse/DIRSTUDIO-663) - can't import openldap schema having an attribute and an objectclass with the same alias
-* [DIRSTUDIO-673](https://issues.apache.org/jira/browse/DIRSTUDIO-673) - Typo in the "check authentication" error message in the french translation
-* [DIRSTUDIO-696](https://issues.apache.org/jira/browse/DIRSTUDIO-696) - ApacheDS Configuration plugin fails to open configuration file version 1.5.5 and 1.5.4 when NTP is enabled
-* [DIRSTUDIO-698](https://issues.apache.org/jira/browse/DIRSTUDIO-698) - KeyDerivation interceptor missing in the ApacheDS Configuration Editor
-* [DIRSTUDIO-699](https://issues.apache.org/jira/browse/DIRSTUDIO-699) - Interceptors order is not read/saved correctly in the ApacheDS Configuration Editor
-* [DIRSTUDIO-703](https://issues.apache.org/jira/browse/DIRSTUDIO-703) - DSML Export fails to export when the size limit is hit
-* [DIRSTUDIO-704](https://issues.apache.org/jira/browse/DIRSTUDIO-704) - NullPointerException creating new online schema editor project
-* [DIRSTUDIO-708](https://issues.apache.org/jira/browse/DIRSTUDIO-708) - NPE when renaming a referral in 'Automatic' or 'Manual' Referral Handling mode
-* [DIRSTUDIO-710](https://issues.apache.org/jira/browse/DIRSTUDIO-710) - SearchResultEntryDsml not setting attribute name correctly
-* [DIRSTUDIO-716](https://issues.apache.org/jira/browse/DIRSTUDIO-716) - Error while opening connection : NPE
-* [DIRSTUDIO-724](https://issues.apache.org/jira/browse/DIRSTUDIO-724) - Too many events: Outline and Modifications Logs views are refreshed multiple times
-* [DIRSTUDIO-726](https://issues.apache.org/jira/browse/DIRSTUDIO-726) - Added a binary attributes in preference is not stored correctly
-* [DIRSTUDIO-727](https://issues.apache.org/jira/browse/DIRSTUDIO-727) - It is possible to add empty Binary Attributes and Binary Syntax Definitions in the preferences
-* [DIRSTUDIO-728](https://issues.apache.org/jira/browse/DIRSTUDIO-728) - Wrong attribute name in entry editor
-* [DIRSTUDIO-731](https://issues.apache.org/jira/browse/DIRSTUDIO-731) - Editing RDN attribute should open rename dialog
-* [DIRSTUDIO-734](https://issues.apache.org/jira/browse/DIRSTUDIO-734) - Schema error: Alias NAME is already used by another item: object class with OID
-* [DIRSTUDIO-740](https://issues.apache.org/jira/browse/DIRSTUDIO-740) - Potential bug when using String.toLowerCase() method with a Turkish locale
-* [DIRSTUDIO-742](https://issues.apache.org/jira/browse/DIRSTUDIO-742) - Directory Studio will not start if its installation directory is not writeable
-* [DIRSTUDIO-748](https://issues.apache.org/jira/browse/DIRSTUDIO-748) - Entry attribute name not displayed correctly in Table Entry Editor.
-* [DIRSTUDIO-749](https://issues.apache.org/jira/browse/DIRSTUDIO-749) - Syntaxes shouldn't have/use 'names' (or 'aliases') but 'description' instead
-* [DIRSTUDIO-754](https://issues.apache.org/jira/browse/DIRSTUDIO-754) - Some values in the 'Text Formats' preference page are not saved between launches
-
-**Improvement**
-
-* [DIRSTUDIO-413](https://issues.apache.org/jira/browse/DIRSTUDIO-413) - Add possibility to make connections read-only
-* [DIRSTUDIO-432](https://issues.apache.org/jira/browse/DIRSTUDIO-432) - Better error message for invalid LDIF records on import
-* [DIRSTUDIO-445](https://issues.apache.org/jira/browse/DIRSTUDIO-445) - Allow the user to rename a schema in the editor
-* [DIRSTUDIO-446](https://issues.apache.org/jira/browse/DIRSTUDIO-446) - Allow the user to rename any item using the F2 shortcut
-* [DIRSTUDIO-447](https://issues.apache.org/jira/browse/DIRSTUDIO-447) - Add the ability to use wildcards (?, *) in the ATs or OCs selection dialog to ease the search
-* [DIRSTUDIO-649](https://issues.apache.org/jira/browse/DIRSTUDIO-649) - The 'Installed JREs' preference page should mention Apache DS plugin and not Java projects
-* [DIRSTUDIO-655](https://issues.apache.org/jira/browse/DIRSTUDIO-655) - Switch usage of SWT MessageBox to JFace MessageDialog for info, warning and error dialogs
-* [DIRSTUDIO-685](https://issues.apache.org/jira/browse/DIRSTUDIO-685) - Move duplicated 'ViewFormWidget' class to the 'common.ui' plugin
-* [DIRSTUDIO-717](https://issues.apache.org/jira/browse/DIRSTUDIO-717) - Add application for Windows 64 Bit
-* [DIRSTUDIO-722](https://issues.apache.org/jira/browse/DIRSTUDIO-722) - LDIF parser should allow attribute names with underscore ("_")
-* [DIRSTUDIO-746](https://issues.apache.org/jira/browse/DIRSTUDIO-746) - Add support for the Full Screen feature of OS X Lion
-* [DIRSTUDIO-752](https://issues.apache.org/jira/browse/DIRSTUDIO-752) - Improve fault tolerance when reading an online schema from a connection
-
-**New Feature**
-* [DIRSTUDIO-112](https://issues.apache.org/jira/browse/DIRSTUDIO-112) - Export schema
-* [DIRSTUDIO-320](https://issues.apache.org/jira/browse/DIRSTUDIO-320) - Studio exits without showing a confirmation dialog
-* [DIRSTUDIO-692](https://issues.apache.org/jira/browse/DIRSTUDIO-692) - User should be able to supress the version line in exported LDIF files
-* [DIRSTUDIO-694](https://issues.apache.org/jira/browse/DIRSTUDIO-694) - Add ability to export certificates in the 'Certificate Validation' preference page
-* [DIRSTUDIO-712](https://issues.apache.org/jira/browse/DIRSTUDIO-712) - Add a 'Go to DN...' action to the Navigate menu in Eclipse
-* [DIRSTUDIO-755](https://issues.apache.org/jira/browse/DIRSTUDIO-755) - Implement the 'Add...' button in the 'Certificate Validation' preference page
-
-**Task**
-
-* [DIRSTUDIO-683](https://issues.apache.org/jira/browse/DIRSTUDIO-683) - Add a generic way to run Eclipse Jobs and Studio runnables in the 'common.core' plugin and extend this in other plugins
-* [DIRSTUDIO-684](https://issues.apache.org/jira/browse/DIRSTUDIO-684) - Convert remaining Eclipse Jobs in LDAP Browser to Studio runnable API
-* [DIRSTUDIO-688](https://issues.apache.org/jira/browse/DIRSTUDIO-688) - Remove the 'jars' plugins and create one specific plugin per external library dependency
-* [DIRSTUDIO-697](https://issues.apache.org/jira/browse/DIRSTUDIO-697) - Add support for ApacheDS 1.5.7 'server.xml' configuration file
-* [DIRSTUDIO-718](https://issues.apache.org/jira/browse/DIRSTUDIO-718) - Update Eclipse dependencies to version 3.6.1
-* [DIRSTUDIO-737](https://issues.apache.org/jira/browse/DIRSTUDIO-737) - Update Eclipse dependencies to version 3.7.0
-* [DIRSTUDIO-751](https://issues.apache.org/jira/browse/DIRSTUDIO-751) - Update Eclipse dependencies to version 3.7.1
-* [DIRSTUDIO-757](https://issues.apache.org/jira/browse/DIRSTUDIO-757) - Update all features with the new 'library' plugins
-
-***
-
-## Apache Directory Studio 1.5.3 (March 30th 2010)
-
-**Bug**
-
-* [DIRSTUDIO-424](https://issues.apache.org/jira/browse/DIRSTUDIO-424) - Canceling a search gives an error sometimes
-* [DIRSTUDIO-585](https://issues.apache.org/jira/browse/DIRSTUDIO-585) - Do not modify the current thread's ClassLoader; or reset it afterwards
-* [DIRSTUDIO-608](https://issues.apache.org/jira/browse/DIRSTUDIO-608) - Non-translated string in the French version of the "Export Connections" wizard
-* [DIRSTUDIO-609](https://issues.apache.org/jira/browse/DIRSTUDIO-609) - Studio "hangs" when performing large search that is to be displayed
-* [DIRSTUDIO-610](https://issues.apache.org/jira/browse/DIRSTUDIO-610) - Unable to export to "My Documents"
-* [DIRSTUDIO-611](https://issues.apache.org/jira/browse/DIRSTUDIO-611) - Unable to add a third party Entry Editor
-* [DIRSTUDIO-613](https://issues.apache.org/jira/browse/DIRSTUDIO-613) - Certificate with empty common name (cn) appears almost hidden in the preference page table view
-* [DIRSTUDIO-614](https://issues.apache.org/jira/browse/DIRSTUDIO-614) - The 'Installed JREs' preference page is no longer displayed in Apache Directory Studio's preferences
-* [DIRSTUDIO-615](https://issues.apache.org/jira/browse/DIRSTUDIO-615) - Various typos in the french translation
-* [DIRSTUDIO-616](https://issues.apache.org/jira/browse/DIRSTUDIO-616) - Entry Editor Manager does not ensure that the entry's attributes are initialized (loaded) before testing and opening editors
-* [DIRSTUDIO-617](https://issues.apache.org/jira/browse/DIRSTUDIO-617) - Tabular and LDIF Entry Single-Tab Editors should warn the user when modifications are pending (auto-save disabled) and their input is changed
-* [DIRSTUDIO-623](https://issues.apache.org/jira/browse/DIRSTUDIO-623) - NPE in the ModificationLogsViewUniversalListener under rare circumstances when selecting a connection
-* [DIRSTUDIO-624](https://issues.apache.org/jira/browse/DIRSTUDIO-624) - NPE in the SearchLogsViewUniversalListener.java under rare circumstances when selecting a connection
-* [DIRSTUDIO-627](https://issues.apache.org/jira/browse/DIRSTUDIO-627) - Can't open a relatively big LDIF file
-* [DIRSTUDIO-629](https://issues.apache.org/jira/browse/DIRSTUDIO-629) - Entry editor tab is activated when executing a search
-* [DIRSTUDIO-629](https://issues.apache.org/jira/browse/DIRSTUDIO-629) - Endless event loop
-* [DIRSTUDIO-637](https://issues.apache.org/jira/browse/DIRSTUDIO-637) - copy/paste of attributes no longer works
-* [DIRSTUDIO-639](https://issues.apache.org/jira/browse/DIRSTUDIO-639) - Exception when navigation history contains bookmarks of an deleted connection
-* [DIRSTUDIO-642](https://issues.apache.org/jira/browse/DIRSTUDIO-642) - ADS does not remember the certificate if two certificates are used for the same server
-* [DIRSTUDIO-643](https://issues.apache.org/jira/browse/DIRSTUDIO-643) - Missing modules when importing into Eclipse as existing project
-
-**Improvement**
-
-* [DIRSTUDIO-612](https://issues.apache.org/jira/browse/DIRSTUDIO-612) - The 'Properties' item in the context menu of the default Entry Editor should be enabled and linked to the entry properties when no particular attribute is selected in the table
-* [DIRSTUDIO-618](https://issues.apache.org/jira/browse/DIRSTUDIO-618) - The icon of the entry in the 'Outline' view for the LDIF Entry Editor should be the same as the one in the 'LDAP Browser' view
-* [DIRSTUDIO-619](https://issues.apache.org/jira/browse/DIRSTUDIO-619) - Outline view for the LDIF Entry Editor should display by default the nodes underneath the entry
-* [DIRSTUDIO-625](https://issues.apache.org/jira/browse/DIRSTUDIO-625) - Add Connection Context in the LDAP Browser Window
-* [DIRSTUDIO-633](https://issues.apache.org/jira/browse/DIRSTUDIO-633) - Delete all searches context menu
-* [DIRSTUDIO-634](https://issues.apache.org/jira/browse/DIRSTUDIO-634) - Add search context menu entry / simplify search
-* [DIRSTUDIO-638](https://issues.apache.org/jira/browse/DIRSTUDIO-638) - Improve the way we ask for operational attributes
-
-**Task**
-
-* [DIRSTUDIO-635](https://issues.apache.org/jira/browse/DIRSTUDIO-635) - Update Eclipse dependencies to version 3.5.2
-* [DIRSTUDIO-636](https://issues.apache.org/jira/browse/DIRSTUDIO-636) - Update copyright in spash screen to 2010
-* [DIRSTUDIO-640](https://issues.apache.org/jira/browse/DIRSTUDIO-640) - Support for server.xml file of Apache DS version 1.5.6
-* [DIRSTUDIO-641](https://issues.apache.org/jira/browse/DIRSTUDIO-641) - Integrate Apache DS version 1.5.6 in the Apache DS plugin
-
-***
-
-## Apache Directory Studio 1.5.2 (December 14th 2009)
-
-**Bug**
-
-* [DIRSTUDIO-601](https://issues.apache.org/jira/browse/DIRSTUDIO-601) - The 'Perform Search/Search Again' button in the Search Result Editor does not work correctly
-* [DIRSTUDIO-602](https://issues.apache.org/jira/browse/DIRSTUDIO-602) - Unable to start an Apache DS version 1.5.5 server
-* [DIRSTUDIO-603](https://issues.apache.org/jira/browse/DIRSTUDIO-603) - Error browsing/entering rfc2307 compliant host entry
-
-**Task**
-
-* [DIRSTUDIO-605](https://issues.apache.org/jira/browse/DIRSTUDIO-605) - Update the help content of the configuration editor for version 1.5.5 of Apache DS
-
-***
-
-## Apache Directory Studio 1.5.1 (December 2nd 2009)
-
-**Bug**
-
-* [DIRSTUDIO-576](https://issues.apache.org/jira/browse/DIRSTUDIO-576) - Context menu not shown after a right-click on a non-cached entry
-* [DIRSTUDIO-577](https://issues.apache.org/jira/browse/DIRSTUDIO-577) - LDIF editor doesn't notify Eclipse that the LDIF file has changed when saving
-* [DIRSTUDIO-580](https://issues.apache.org/jira/browse/DIRSTUDIO-580) - Setting "Validate certificates for secure LDAP connections" is not saved
-* [DIRSTUDIO-587](https://issues.apache.org/jira/browse/DIRSTUDIO-587) - UI flickers on quick search
-* [DIRSTUDIO-589](https://issues.apache.org/jira/browse/DIRSTUDIO-589) - InvalidNameException: unexpected token for user ids starting with hash sign
-* [DIRSTUDIO-590](https://issues.apache.org/jira/browse/DIRSTUDIO-590) - The 'Quick Search' string has not been externalized in the LDAP Browser view
-* [DIRSTUDIO-591](https://issues.apache.org/jira/browse/DIRSTUDIO-591) - Error reading objects with # in DN
-* [DIRSTUDIO-592](https://issues.apache.org/jira/browse/DIRSTUDIO-592) - LDAP Browser view is refreshed twice after the initialization of the children of an entry
-* [DIRSTUDIO-593](https://issues.apache.org/jira/browse/DIRSTUDIO-593) - Missing string and typo in the french translation of the Password Editor
-* [DIRSTUDIO-594](https://issues.apache.org/jira/browse/DIRSTUDIO-594) - The 'Show new password details' checkbox does not display the 'Enter new password' text field as clear text when checked in the Password Editor
-* [DIRSTUDIO-596](https://issues.apache.org/jira/browse/DIRSTUDIO-596) - Various typos in the french translation
-* [DIRSTUDIO-597](https://issues.apache.org/jira/browse/DIRSTUDIO-597) - Modification sent to the server while browsing through the DIT and refreshing entries
-* [DIRSTUDIO-598](https://issues.apache.org/jira/browse/DIRSTUDIO-598) - Base64 encoded DN marked as invalid in LDIF editor
-
-**Improvement**
-
-* [DIRSTUDIO-595](https://issues.apache.org/jira/browse/DIRSTUDIO-595) - The icon of the entry in the 'Outline' view should be the same as the one in the 'LDAP Browser' view
-
-***
-
-## Apache Directory Studio 1.5.0 (November 8th 2009)
-
-**Bug**
-
-* [DIRSTUDIO-282](https://issues.apache.org/jira/browse/DIRSTUDIO-282) - Save failed: null, when adding an attribute to a class, if attribute is also open in gui
-* [DIRSTUDIO-331](https://issues.apache.org/jira/browse/DIRSTUDIO-331) - Instant error when importing schema in a new schema-project
-* [DIRSTUDIO-334](https://issues.apache.org/jira/browse/DIRSTUDIO-334) - Built-in help doesn't show icons for "Icons" and "Toolbars" tables in "LDAP Browser View"
-* [DIRSTUDIO-370](https://issues.apache.org/jira/browse/DIRSTUDIO-370) - Welcome screen subpages mouse-over images displays red crosses
-* [DIRSTUDIO-402](https://issues.apache.org/jira/browse/DIRSTUDIO-402) - The ManageDsaIT control should be activable for a single request, not at the connection level
-* [DIRSTUDIO-403](https://issues.apache.org/jira/browse/DIRSTUDIO-403) - Cannot add refs when the ExtensibleObject OC has been added to a referral
-* [DIRSTUDIO-409](https://issues.apache.org/jira/browse/DIRSTUDIO-409) - No error message in some special case
-* [DIRSTUDIO-410](https://issues.apache.org/jira/browse/DIRSTUDIO-410) - Referral handling is problematic
-* [DIRSTUDIO-418](https://issues.apache.org/jira/browse/DIRSTUDIO-418) - Slow LDIF/CSV export
-* [DIRSTUDIO-429](https://issues.apache.org/jira/browse/DIRSTUDIO-429) - Meaningless error message on importing schema
-* [DIRSTUDIO-437](https://issues.apache.org/jira/browse/DIRSTUDIO-437) - Alias are not exposed as such in the browser
-* [DIRSTUDIO-441](https://issues.apache.org/jira/browse/DIRSTUDIO-441) - New ObjectClass and AttributeType wizards always show a warning indicating that the item does not have any name
-* [DIRSTUDIO-443](https://issues.apache.org/jira/browse/DIRSTUDIO-443) - The warning and error overlay for OCs and ATs sometimes (often) lacks forgets some items
-* [DIRSTUDIO-473](https://issues.apache.org/jira/browse/DIRSTUDIO-473) - Import OpenLDAP core schema
-* [DIRSTUDIO-481](https://issues.apache.org/jira/browse/DIRSTUDIO-481) - Improve refreshing of attributes and children
-* [DIRSTUDIO-483](https://issues.apache.org/jira/browse/DIRSTUDIO-483) - DN Editor escapes all non-ascii characters
-* [DIRSTUDIO-484](https://issues.apache.org/jira/browse/DIRSTUDIO-484) - Rename dialog does not work with escaped RDNs
-* [DIRSTUDIO-486](https://issues.apache.org/jira/browse/DIRSTUDIO-486) - Include Version Specifier in LDIF export
-* [DIRSTUDIO-488](https://issues.apache.org/jira/browse/DIRSTUDIO-488) - New context entry creation is not shown just after connection
-* [DIRSTUDIO-489](https://issues.apache.org/jira/browse/DIRSTUDIO-489) - LDIF Import very slow
-* [DIRSTUDIO-490](https://issues.apache.org/jira/browse/DIRSTUDIO-490) - Copy/Paste a search from one connection to another doesn't work
-* [DIRSTUDIO-493](https://issues.apache.org/jira/browse/DIRSTUDIO-493) - Aliased attributes show only one attribute name in the RDN selection list instead of the full aliases list
-* [DIRSTUDIO-495](https://issues.apache.org/jira/browse/DIRSTUDIO-495) - Cannot edit password field
-* [DIRSTUDIO-497](https://issues.apache.org/jira/browse/DIRSTUDIO-497) - LdapSchema plugin 'Save' is erratic
-* [DIRSTUDIO-499](https://issues.apache.org/jira/browse/DIRSTUDIO-499) - SOCKS proxy settings not used on startup
-* [DIRSTUDIO-502](https://issues.apache.org/jira/browse/DIRSTUDIO-502) - Copy/Paste the context entry from one connection to another doesn't work
-* [DIRSTUDIO-503](https://issues.apache.org/jira/browse/DIRSTUDIO-503) - New Entry -> Available object classes list remains stale after new objectclasses added
-* [DIRSTUDIO-504](https://issues.apache.org/jira/browse/DIRSTUDIO-504) - Timestamp attribute with an invalid time in it is read only - editor ignores entry
-* [DIRSTUDIO-506](https://issues.apache.org/jira/browse/DIRSTUDIO-506) - Export Schemas for ApacheDS: object classes must be sorted by hierarchy
-* [DIRSTUDIO-507](https://issues.apache.org/jira/browse/DIRSTUDIO-507) - Attempt to rename the rdn results in message contain \{0\} and \{1\}
-* [DIRSTUDIO-512](https://issues.apache.org/jira/browse/DIRSTUDIO-512) - Deletion of entries very slow
-* [DIRSTUDIO-514](https://issues.apache.org/jira/browse/DIRSTUDIO-514) - Unable to restore last opened ldif-editors on restart
-* [DIRSTUDIO-520](https://issues.apache.org/jira/browse/DIRSTUDIO-520) - NPE when saving a 1.5.0 server configuration
-* [DIRSTUDIO-524](https://issues.apache.org/jira/browse/DIRSTUDIO-524) - Operational attributes are not show, although enabled under preferences
-* [DIRSTUDIO-527](https://issues.apache.org/jira/browse/DIRSTUDIO-527) - Unable to display Active Directory GUIDs
-* [DIRSTUDIO-529](https://issues.apache.org/jira/browse/DIRSTUDIO-529) - Unpretty 2-3 pixels height margin at the top of the Browser view
-* [DIRSTUDIO-530](https://issues.apache.org/jira/browse/DIRSTUDIO-530) - Unpretty 2-3 pixels height margin at the top of the Entry editor
-* [DIRSTUDIO-531](https://issues.apache.org/jira/browse/DIRSTUDIO-531) - Unpretty 2-3 pixels height margin at the top of the Search Results editor
-* [DIRSTUDIO-532](https://issues.apache.org/jira/browse/DIRSTUDIO-532) - Refreshing parent of referral may give ConcurrentModificationException
-* [DIRSTUDIO-537](https://issues.apache.org/jira/browse/DIRSTUDIO-537) - Error in the title of the Properties window of a server in the Apache DS plugin
-* [DIRSTUDIO-545](https://issues.apache.org/jira/browse/DIRSTUDIO-545) - Widget disposed too early
-* [DIRSTUDIO-547](https://issues.apache.org/jira/browse/DIRSTUDIO-547) - Editor for Classes userClass saves or reloads incorrect value
-* [DIRSTUDIO-549](https://issues.apache.org/jira/browse/DIRSTUDIO-549) - subtree userClass editor does not keep full DN for base component upon its selection
-* [DIRSTUDIO-550](https://issues.apache.org/jira/browse/DIRSTUDIO-550) - Root DSE properties: Directory types IBM Tivoli Directory Server 6.1 and 6.2 not detected correctly
-* [DIRSTUDIO-552](https://issues.apache.org/jira/browse/DIRSTUDIO-552) - NullPointerException if Root DSE of IBM Tivoli Directory Server displayed in Entry Editor
-* [DIRSTUDIO-553](https://issues.apache.org/jira/browse/DIRSTUDIO-553) - Add descriptions for server specific OIDs of IBM Tivoli Directory Server 6.1 and 6.2
-* [DIRSTUDIO-557](https://issues.apache.org/jira/browse/DIRSTUDIO-557) - Edit value and edit entry are not working if DN is invalid
-* [DIRSTUDIO-565](https://issues.apache.org/jira/browse/DIRSTUDIO-565) - Inconsistent handling of the 'modified schemas' flag
-* [DIRSTUDIO-568](https://issues.apache.org/jira/browse/DIRSTUDIO-568) - When editing an AT or OC, using the scroll wheel may trigger a combo change
-* [DIRSTUDIO-569](https://issues.apache.org/jira/browse/DIRSTUDIO-569) - Exceptions showing up in the log when starting a server in the Apache DS plugin
-* [DIRSTUDIO-570](https://issues.apache.org/jira/browse/DIRSTUDIO-570) - Integer Value Editor does not accept negative numbers
-* [DIRSTUDIO-571](https://issues.apache.org/jira/browse/DIRSTUDIO-571) - Modification is logged even if referred to another directory server
-* [DIRSTUDIO-575](https://issues.apache.org/jira/browse/DIRSTUDIO-575) - Bookmarks not working
-
-**Improvement**
-
-* [DIRSTUDIO-145](https://issues.apache.org/jira/browse/DIRSTUDIO-145) - Multiple tabs for entry editor
-* [DIRSTUDIO-263](https://issues.apache.org/jira/browse/DIRSTUDIO-263) - Add certificate validation for ldaps and StartTLS
-* [DIRSTUDIO-371](https://issues.apache.org/jira/browse/DIRSTUDIO-371) - Entries with a ref attribute should be shown N times in the browser (N = number of ref values)
-* [DIRSTUDIO-444](https://issues.apache.org/jira/browse/DIRSTUDIO-444) - Allow the user to enter the names of an item inline (using ',' as separator) in the OC and AT Editors
-* [DIRSTUDIO-485](https://issues.apache.org/jira/browse/DIRSTUDIO-485) - Provide default IAuthHandler and IReferralHandler to be used in connections core without connections ui
-* [DIRSTUDIO-487](https://issues.apache.org/jira/browse/DIRSTUDIO-487) - Empty namingcontexts causes javax.naming.InvalidNameException: Bad DN
-* [DIRSTUDIO-496](https://issues.apache.org/jira/browse/DIRSTUDIO-496) - Password editor improvements
-* [DIRSTUDIO-509](https://issues.apache.org/jira/browse/DIRSTUDIO-509) - Load schema from the directory server
-* [DIRSTUDIO-513](https://issues.apache.org/jira/browse/DIRSTUDIO-513) - Do delete before add when modifying attribute values
-* [DIRSTUDIO-521](https://issues.apache.org/jira/browse/DIRSTUDIO-521) - Replace the XSLT transformation by the use of the Dom4J OutputFormat class for XML pretty print
-* [DIRSTUDIO-533](https://issues.apache.org/jira/browse/DIRSTUDIO-533) - Only show referral handling dialog when opening or expanding referral entry
-* [DIRSTUDIO-534](https://issues.apache.org/jira/browse/DIRSTUDIO-534) - Re-order the preference pages for better understanding
-* [DIRSTUDIO-535](https://issues.apache.org/jira/browse/DIRSTUDIO-535) - Use SWT.SEARCH and SWT.CANCEL style bits on search text field for a native search field on Mac OS X
-* [DIRSTUDIO-541](https://issues.apache.org/jira/browse/DIRSTUDIO-541) - Add support for version 1.5.5 of the Apache DS
-* [DIRSTUDIO-548](https://issues.apache.org/jira/browse/DIRSTUDIO-548) - SubtreeSpecification Editor does not accept empty filter if it's selected
-* [DIRSTUDIO-554](https://issues.apache.org/jira/browse/DIRSTUDIO-554) - Add option to save tabular entry editor automatically or manually
-* [DIRSTUDIO-555](https://issues.apache.org/jira/browse/DIRSTUDIO-555) - Human readable descriptions of OIDs in binary attributes preference page
-* [DIRSTUDIO-558](https://issues.apache.org/jira/browse/DIRSTUDIO-558) - Load special entries (aliases, referrals, subentries) per request, add menu items to browser's context menu
-* [DIRSTUDIO-574](https://issues.apache.org/jira/browse/DIRSTUDIO-574) - Add 'Cancel' button to "Select copy strategy" (was Abort of copy/paste not possible)
-
-**New Feature**
-
-* [DIRSTUDIO-62](https://issues.apache.org/jira/browse/DIRSTUDIO-62) - Add GSSAPI authentication - Cannot connect to Active Directory if not using Simple authentication
-* [DIRSTUDIO-434](https://issues.apache.org/jira/browse/DIRSTUDIO-434) - Add value editor for Active Directory objectGUID and objectSid attributes
-* [DIRSTUDIO-462](https://issues.apache.org/jira/browse/DIRSTUDIO-462) - Add Export to Open Document Format
-* [DIRSTUDIO-494](https://issues.apache.org/jira/browse/DIRSTUDIO-494) - Add value editor for certificates (syntax 1.3.6.1.4.1.1466.115.121.1.8)
-* [DIRSTUDIO-510](https://issues.apache.org/jira/browse/DIRSTUDIO-510) - Add functionality to copy/merge schema elements between schema projects
-* [DIRSTUDIO-515](https://issues.apache.org/jira/browse/DIRSTUDIO-515) - Add extensibility to Entry Editor
-* [DIRSTUDIO-536](https://issues.apache.org/jira/browse/DIRSTUDIO-536) - Add support for version 1.5.5 of the Apache DS server.xml configuration file
-* [DIRSTUDIO-556](https://issues.apache.org/jira/browse/DIRSTUDIO-556) - Add value editor for UUID
-* [DIRSTUDIO-562](https://issues.apache.org/jira/browse/DIRSTUDIO-562) - Add 'Copy Display Value' action, default copy action should copy displayed value
-
-**Task**
-
-* [DIRSTUDIO-479](https://issues.apache.org/jira/browse/DIRSTUDIO-479) - Object classes of an entry should always be present
-* [DIRSTUDIO-523](https://issues.apache.org/jira/browse/DIRSTUDIO-523) - Update Eclipse dependencies to version 3.5 Galileo
-* [DIRSTUDIO-525](https://issues.apache.org/jira/browse/DIRSTUDIO-525) - Remove support for the Linux PPC distribution
-* [DIRSTUDIO-573](https://issues.apache.org/jira/browse/DIRSTUDIO-573) - Update bundled Apache DS Schema files to version 1.5.5
-
-**Sub-task**
-
-* [DIRSTUDIO-516](https://issues.apache.org/jira/browse/DIRSTUDIO-516) - Create a new Entry Editor extension point
-* [DIRSTUDIO-517](https://issues.apache.org/jira/browse/DIRSTUDIO-517) - Create a new single-window Entry Editor
-* [DIRSTUDIO-518](https://issues.apache.org/jira/browse/DIRSTUDIO-518) - Create a new multi-window Entry Editor
-* [DIRSTUDIO-519](https://issues.apache.org/jira/browse/DIRSTUDIO-519) - Create a new LDIF Entry Editor
-
-**Wish**
-
-* [DIRSTUDIO-167](https://issues.apache.org/jira/browse/DIRSTUDIO-167) - Show custom icons for various kinds of schema elements while browsing schema data
-
-***
-
-## Apache Directory Studio 1.4.0 (April 10th 2009)
-
-**Bug**
-
-* [DIRSTUDIO-373](https://issues.apache.org/jira/browse/DIRSTUDIO-373) - Can't delete a tagged attribute if the non tagged attribute belong to the DN
-* [DIRSTUDIO-395](https://issues.apache.org/jira/browse/DIRSTUDIO-395) - Problems with special chars (german Umlauts)
-* [DIRSTUDIO-396](https://issues.apache.org/jira/browse/DIRSTUDIO-396) - Custom LDAP attributes not shown in entry editor
-* [DIRSTUDIO-419](https://issues.apache.org/jira/browse/DIRSTUDIO-419) - Problems switching between connections
-* [DIRSTUDIO-420](https://issues.apache.org/jira/browse/DIRSTUDIO-420) - Unable to locate in DIT (f3)
-* [DIRSTUDIO-423](https://issues.apache.org/jira/browse/DIRSTUDIO-423) - Outline view does not respect the settings of the Entry Editor on displaying or not the operational attributes
-* [DIRSTUDIO-427](https://issues.apache.org/jira/browse/DIRSTUDIO-427) - Operational attributes turned on by itself
-* [DIRSTUDIO-430](https://issues.apache.org/jira/browse/DIRSTUDIO-430) - NullPointer exception when fetching children of a node
-* [DIRSTUDIO-436](https://issues.apache.org/jira/browse/DIRSTUDIO-436) - Eclipse Hangs on Startup
-* [DIRSTUDIO-440](https://issues.apache.org/jira/browse/DIRSTUDIO-440) - Multiple user permissions precedence issue
-* [DIRSTUDIO-442](https://issues.apache.org/jira/browse/DIRSTUDIO-442) - Typo in a warning of the New ObjectClass wizard ('attribute type' instead of 'object class')
-* [DIRSTUDIO-456](https://issues.apache.org/jira/browse/DIRSTUDIO-456) - Cannot create an entry with mandatory binary attribute
-* [DIRSTUDIO-457](https://issues.apache.org/jira/browse/DIRSTUDIO-457) - Unknown schema causes attributes to be treated as operational
-* [DIRSTUDIO-460](https://issues.apache.org/jira/browse/DIRSTUDIO-460) - Pressing 'Enter' in New Entry wizard should edit the attribute
-* [DIRSTUDIO-463](https://issues.apache.org/jira/browse/DIRSTUDIO-463) - Browsing the directory produce too many search requests
-* [DIRSTUDIO-465](https://issues.apache.org/jira/browse/DIRSTUDIO-465) - Context entry created from an LDIF import is not shown in the Browser view
-* [DIRSTUDIO-466](https://issues.apache.org/jira/browse/DIRSTUDIO-466) - Incorrect error message when importing a bad XML schema file
-* [DIRSTUDIO-468](https://issues.apache.org/jira/browse/DIRSTUDIO-468) - The LDIF parser does not correctly parse changes
-* [DIRSTUDIO-469](https://issues.apache.org/jira/browse/DIRSTUDIO-469) - Added wrong AttributeTypes can't be deleted
-* [DIRSTUDIO-470](https://issues.apache.org/jira/browse/DIRSTUDIO-470) - Schema Browser view is not bring to front when using the 'Open Schema Browser' menu item while the view is already opened but not the frontmost view
-* [DIRSTUDIO-472](https://issues.apache.org/jira/browse/DIRSTUDIO-472) - SWTException (Widget is disposed) when disabling DIT Quick Search
-
-**Improvement**
-
-* [DIRSTUDIO-115](https://issues.apache.org/jira/browse/DIRSTUDIO-115) - Unable to edit operational attribute values
-* [DIRSTUDIO-150](https://issues.apache.org/jira/browse/DIRSTUDIO-150) - Improve error handling
-* [DIRSTUDIO-207](https://issues.apache.org/jira/browse/DIRSTUDIO-207) - Operationnal attributes cannot be shown entirely
-* [DIRSTUDIO-234](https://issues.apache.org/jira/browse/DIRSTUDIO-234) - Greyed out menu items should have a tool tip explaining *why* they're greyed out
-* [DIRSTUDIO-241](https://issues.apache.org/jira/browse/DIRSTUDIO-241) - The "New Value" action (in the Entry Editor) should be disabled if the AT is defined as single valued
-* [DIRSTUDIO-411](https://issues.apache.org/jira/browse/DIRSTUDIO-411) - Select a new created folder in the connection view
-* [DIRSTUDIO-412](https://issues.apache.org/jira/browse/DIRSTUDIO-412) - Add expand all and collapse all actions to the connections view
-* [DIRSTUDIO-426](https://issues.apache.org/jira/browse/DIRSTUDIO-426) - Overwritten hashCode() method should not use super.hashCode()
-* [DIRSTUDIO-455](https://issues.apache.org/jira/browse/DIRSTUDIO-455) - Cannot copy/past an existing search
-* [DIRSTUDIO-477](https://issues.apache.org/jira/browse/DIRSTUDIO-477) - Update Eclipse dependencies to version 3.4.2
-* [DIRSTUDIO-478](https://issues.apache.org/jira/browse/DIRSTUDIO-478) - The 'Exit' menu item from the 'File' menu should be removed when running on Mac OS X
-
-**New Feature**
-
-* [DIRSTUDIO-335](https://issues.apache.org/jira/browse/DIRSTUDIO-335) - DIT Quick Search
-* [DIRSTUDIO-397](https://issues.apache.org/jira/browse/DIRSTUDIO-397) - Request for multi-language GUI
-* [DIRSTUDIO-474](https://issues.apache.org/jira/browse/DIRSTUDIO-474) - Add a new GeneralizedTime Value Editor
-* [DIRSTUDIO-474](https://issues.apache.org/jira/browse/DIRSTUDIO-474) - Support for parentOfEntry userClass in ACI Editor
-
-**Task**
-
-* [DIRSTUDIO-451](https://issues.apache.org/jira/browse/DIRSTUDIO-451) - (I18n) Templates not I18ned in LdifEditor
-* [DIRSTUDIO-458](https://issues.apache.org/jira/browse/DIRSTUDIO-458) - (I18n) Bundle Eclipse language packs
-* [DIRSTUDIO-480](https://issues.apache.org/jira/browse/DIRSTUDIO-480) - Update copyright year in the splash screen to 2009
-
-**Wish**
-
-* [DIRSTUDIO-439](https://issues.apache.org/jira/browse/DIRSTUDIO-439) - Ldif importer should be case-insensitive in the changeType attribute
-
-***
-
-## Apache Directory Studio 1.3.0 (November 24th 2008)
-
-**Sub-task**
-
-* [DIRSTUDIO-398](https://issues.apache.org/jira/browse/DIRSTUDIO-398) - Improve the DSML decorated classes by adding an empty constructor and linking the methods of the underlying ldapmessage
-
-**Bug**
-
-* [DIRSTUDIO-260](https://issues.apache.org/jira/browse/DIRSTUDIO-260) - Unable to do a DSML Export from eDirectory
-* [DIRSTUDIO-291](https://issues.apache.org/jira/browse/DIRSTUDIO-291) - Adding of an objectclass requiring attributes not present to an entry in the ldap browser, modify operation fails
-* [DIRSTUDIO-293](https://issues.apache.org/jira/browse/DIRSTUDIO-293) - Values of attributes of the syntax 'Generalized Time' must have the g-time-zone 'Z' and minutes and seconds set to be interpreted and shown as a date instead of the raw value
-* [DIRSTUDIO-354](https://issues.apache.org/jira/browse/DIRSTUDIO-354) - Search window, paste problem
-* [DIRSTUDIO-355](https://issues.apache.org/jira/browse/DIRSTUDIO-355) - DSML Import and Export fail with "Internal Error: null"
-* [DIRSTUDIO-367](https://issues.apache.org/jira/browse/DIRSTUDIO-367) - Tree delete control should not be used automatically
-* [DIRSTUDIO-372](https://issues.apache.org/jira/browse/DIRSTUDIO-372) - NPE when using the LdifEntryEditorDialog w/o selecting a connection
-* [DIRSTUDIO-379](https://issues.apache.org/jira/browse/DIRSTUDIO-379) - Class NewEntryWizard not found, application doesn't starts
-* [DIRSTUDIO-380](https://issues.apache.org/jira/browse/DIRSTUDIO-380) - Attribute and Entry property pages makes the dialog very tall
-* [DIRSTUDIO-382](https://issues.apache.org/jira/browse/DIRSTUDIO-382) - Unable to launch Apache Directory Server with Turkish Regional Settings
-* [DIRSTUDIO-386](https://issues.apache.org/jira/browse/DIRSTUDIO-386) - Can't change 5-digit port number by typing
-* [DIRSTUDIO-389](https://issues.apache.org/jira/browse/DIRSTUDIO-389) - Back/Forward Navigation isn't working
-* [DIRSTUDIO-394](https://issues.apache.org/jira/browse/DIRSTUDIO-394) - SASL Realms are not correctly saved in the 1.5.2 and 1.5.3 Apache DS Configuration Editor
-
-**Improvement**
-
-* [DIRSTUDIO-114](https://issues.apache.org/jira/browse/DIRSTUDIO-114) - Group container entries first in browser view
-* [DIRSTUDIO-116](https://issues.apache.org/jira/browse/DIRSTUDIO-116) - Expand all folds by default
-* [DIRSTUDIO-147](https://issues.apache.org/jira/browse/DIRSTUDIO-147) - Allow LDIF imports to overwrite existing entries
-* [DIRSTUDIO-182](https://issues.apache.org/jira/browse/DIRSTUDIO-182) - Use property file to designate ldap context factory etc. instead of hard code
-* [DIRSTUDIO-228](https://issues.apache.org/jira/browse/DIRSTUDIO-228) - Mask userPassword in the log view
-* [DIRSTUDIO-244](https://issues.apache.org/jira/browse/DIRSTUDIO-244) - Add selection for copy strategy if an entry to copy already exists
-* [DIRSTUDIO-255](https://issues.apache.org/jira/browse/DIRSTUDIO-255) - Run in background should be configurable so one could set it to true by default
-* [DIRSTUDIO-272](https://issues.apache.org/jira/browse/DIRSTUDIO-272) - Use the rat maven plugin with the -Prelease profile option to generate releases
-* [DIRSTUDIO-292](https://issues.apache.org/jira/browse/DIRSTUDIO-292) - Using the 'new entry'/'use existing entry as template' feature from the context menu of an entry, the parent dn is also copied from the template entry
-* [DIRSTUDIO-311](https://issues.apache.org/jira/browse/DIRSTUDIO-311) - Provide Goto DN dialog
-* [DIRSTUDIO-327](https://issues.apache.org/jira/browse/DIRSTUDIO-327) - Add support for Paged Results Control
-* [DIRSTUDIO-358](https://issues.apache.org/jira/browse/DIRSTUDIO-358) - Connections View can have an extension point for initial values
-* [DIRSTUDIO-363](https://issues.apache.org/jira/browse/DIRSTUDIO-363) - Browser View doesn't accept menu additions thru viewerContribution extension point
-* [DIRSTUDIO-377](https://issues.apache.org/jira/browse/DIRSTUDIO-377) - Add value editor for OIDs
-* [DIRSTUDIO-378](https://issues.apache.org/jira/browse/DIRSTUDIO-378) - An attribute name containing an underscore ("_") is split in two when used in "Returning Attributes" field of the "Search" dialog
-* [DIRSTUDIO-383](https://issues.apache.org/jira/browse/DIRSTUDIO-383) - Make "Fetch subentries" setting configurable per connection, move from browser preferences to connection properties
-* [DIRSTUDIO-384](https://issues.apache.org/jira/browse/DIRSTUDIO-384) - Improve New Attribute Type, New Object Class and New Schema Wizards when no schema project is opened
-* [DIRSTUDIO-391](https://issues.apache.org/jira/browse/DIRSTUDIO-391) - Show default values directly
-* [DIRSTUDIO-393](https://issues.apache.org/jira/browse/DIRSTUDIO-393) - Add support for ApacheDS 1.5.4 server.xml file in the ApacheDS Configuration Editor
-* [DIRSTUDIO-405](https://issues.apache.org/jira/browse/DIRSTUDIO-405) - Update the Apache DS plugin to use Apache DS 1.5.4 dependencies
-* [DIRSTUDIO-406](https://issues.apache.org/jira/browse/DIRSTUDIO-406) - The New Server Wizard should be listed in the NewWizards section
-* [DIRSTUDIO-407](https://issues.apache.org/jira/browse/DIRSTUDIO-407) - Stack the Servers view aside the Connections view as a perpective extension of the LDAP Browser Perpective
-* [DIRSTUDIO-408](https://issues.apache.org/jira/browse/DIRSTUDIO-408) - In the NewEntryWizard, the first selected object class on the left side should be added if the Enter key is hit in the text field
-
-**New Feature**
-
-* [DIRSTUDIO-85](https://issues.apache.org/jira/browse/DIRSTUDIO-85) - Add support for search dialog to include * and + for returnable attributes
-* [DIRSTUDIO-107](https://issues.apache.org/jira/browse/DIRSTUDIO-107) - Enable Select/Copy in Property page of RootDSE in order to copy and paste detected OIDs
-* [DIRSTUDIO-153](https://issues.apache.org/jira/browse/DIRSTUDIO-153) - Allow offline modifications of entries
-* [DIRSTUDIO-297](https://issues.apache.org/jira/browse/DIRSTUDIO-297) - Add a 'save as' for logs
-* [DIRSTUDIO-356](https://issues.apache.org/jira/browse/DIRSTUDIO-356) - Add a way to get the connection config as an URL
-* [DIRSTUDIO-385](https://issues.apache.org/jira/browse/DIRSTUDIO-385) - Add dialog to create a new context entry
-
-**Task**
-
-* [DIRSTUDIO-19](https://issues.apache.org/jira/browse/DIRSTUDIO-19) - Add Javadoc to LDAP Browser classes
-* [DIRSTUDIO-374](https://issues.apache.org/jira/browse/DIRSTUDIO-374) - Clean duplicated dependencies in plugins
-* [DIRSTUDIO-375](https://issues.apache.org/jira/browse/DIRSTUDIO-375) - Move each plugin IDs in a plugin.properties file
-* [DIRSTUDIO-376](https://issues.apache.org/jira/browse/DIRSTUDIO-376) - Move to the latest Eclipse 3.4 dependencies
-
-***
-
-## Apache Directory Studio 1.2.0 (August 19th 2008)
-
-**Bug**
-
-* [DIRSTUDIO-89](https://issues.apache.org/jira/browse/DIRSTUDIO-89) - Entry painted even though not created in server
-* [DIRSTUDIO-121](https://issues.apache.org/jira/browse/DIRSTUDIO-121) - Some property pages make the dialog very tall
-* [DIRSTUDIO-157](https://issues.apache.org/jira/browse/DIRSTUDIO-157) - Studio looses STRG-V over some time of use
-* [DIRSTUDIO-209](https://issues.apache.org/jira/browse/DIRSTUDIO-209) - Cannot expand attribute list
-* [DIRSTUDIO-266](https://issues.apache.org/jira/browse/DIRSTUDIO-266) - OpenLDAP schema files parser fails when DESC contains an empty string ''
-* [DIRSTUDIO-273](https://issues.apache.org/jira/browse/DIRSTUDIO-273) - Unable to get Base DNs on OID (Oracle Internet Directory)
-* [DIRSTUDIO-298](https://issues.apache.org/jira/browse/DIRSTUDIO-298) - NullPointerException raised when drag'n'dropping a connection to a folder (on Mac OS X only)
-* [DIRSTUDIO-315](https://issues.apache.org/jira/browse/DIRSTUDIO-315) - Choosing new value, in entry editor shows new entry when server error occures
-* [DIRSTUDIO-318](https://issues.apache.org/jira/browse/DIRSTUDIO-318) - Rename of multi-values RDN does not work when changing the second RDN
-* [DIRSTUDIO-319](https://issues.apache.org/jira/browse/DIRSTUDIO-319) - LDAP Browser creating new entry becomes empty and unusable in Windows Vista after certain actions
-* [DIRSTUDIO-323](https://issues.apache.org/jira/browse/DIRSTUDIO-323) - Studio fails to read ApacheDS server.xml
-* [DIRSTUDIO-325](https://issues.apache.org/jira/browse/DIRSTUDIO-325) - Keybinding conflicts occurred. They may interfere with normal accelerator operation.
-* [DIRSTUDIO-326](https://issues.apache.org/jira/browse/DIRSTUDIO-326) - Non-Operational attributes are marked as operational when bind to Siemens DirX 7.0
-* [DIRSTUDIO-330](https://issues.apache.org/jira/browse/DIRSTUDIO-330) - CoreException raised in editor when opening a *.txt file
-* [DIRSTUDIO-336](https://issues.apache.org/jira/browse/DIRSTUDIO-336) - Errors when parsing schema of some LDAP servers
-* [DIRSTUDIO-341](https://issues.apache.org/jira/browse/DIRSTUDIO-341) - Paste error
-* [DIRSTUDIO-342](https://issues.apache.org/jira/browse/DIRSTUDIO-342) - Relax the parser for the *.schema files
-* [DIRSTUDIO-343](https://issues.apache.org/jira/browse/DIRSTUDIO-343) - Referrals not handled.
-* [DIRSTUDIO-347](https://issues.apache.org/jira/browse/DIRSTUDIO-347) - Keybinding conflict for CTRL+Q
-* [DIRSTUDIO-349](https://issues.apache.org/jira/browse/DIRSTUDIO-349) - Unable to enter large values for uid
-* [DIRSTUDIO-350](https://issues.apache.org/jira/browse/DIRSTUDIO-350) - DS is not properly displaying case of group DN
-* [DIRSTUDIO-360](https://issues.apache.org/jira/browse/DIRSTUDIO-360) - cannot read attribute from items with a / in the dn
-* [DIRSTUDIO-364](https://issues.apache.org/jira/browse/DIRSTUDIO-364) - Installing in Eclipse fails
-* [DIRSTUDIO-365](https://issues.apache.org/jira/browse/DIRSTUDIO-365) - Can't delete entry with studio 1.1.0. works with 1.0.1
-
-**Improvement**
-
-* [DIRSTUDIO-46](https://issues.apache.org/jira/browse/DIRSTUDIO-46) - Add connections import/export
-* [DIRSTUDIO-126](https://issues.apache.org/jira/browse/DIRSTUDIO-126) - Triple click to edit attribute
-* [DIRSTUDIO-295](https://issues.apache.org/jira/browse/DIRSTUDIO-295) - Add a console for errors
-* [DIRSTUDIO-329](https://issues.apache.org/jira/browse/DIRSTUDIO-329) - Replace internal URL class by shared-ldap LdapURL class
-* [DIRSTUDIO-337](https://issues.apache.org/jira/browse/DIRSTUDIO-337) - Add Save and Print actions in the toolbar of the RCP application
-* [DIRSTUDIO-361](https://issues.apache.org/jira/browse/DIRSTUDIO-361) - Auto-activate 'show operational attributes' when adding an operational attribute
-
-**New Feature**
-
-* [DIRSTUDIO-321](https://issues.apache.org/jira/browse/DIRSTUDIO-321) - Need to be able to set SOCKS proxy in the RCP version
-* [DIRSTUDIO-328](https://issues.apache.org/jira/browse/DIRSTUDIO-328) - Search Logs View
-
-**Task**
-
-* [DIRSTUDIO-128](https://issues.apache.org/jira/browse/DIRSTUDIO-128) - Replace internal schema parser with the schema parser in shared-ldap.
-* [DIRSTUDIO-317](https://issues.apache.org/jira/browse/DIRSTUDIO-317) - Update legal files after moving to Apache Directory Shared LDAP version 0.9.9
-* [DIRSTUDIO-332](https://issues.apache.org/jira/browse/DIRSTUDIO-332) - Add support for 1.5.3, 1.5.2 and 1.5.0 server.xml configuration files
-* [DIRSTUDIO-338](https://issues.apache.org/jira/browse/DIRSTUDIO-338) - Update Eclipse dependencies to the latest Eclipse version (3.3.2)
-* [DIRSTUDIO-339](https://issues.apache.org/jira/browse/DIRSTUDIO-339) - Add the 'org.eclipse.ui.carbon' Eclipse plugin to the Mac OS X distribution
-
-***
-
-## Apache Directory Studio 1.1.0 (April 8th 2008)
-
-See changelog of Apache Directory Studio 1.1.0 RC and Apache Directory Studio 1.1.0 RC2
-
-***
-
-## Apache Directory Studio 1.1.0 RC2 (March 4th 2008)
-
-**Bug**
-
-* [DIRSTUDIO-286](https://issues.apache.org/jira/browse/DIRSTUDIO-286) - Update Site is not working, missing dependencies in ldifeditor, ldapbrower and schemaeditor feature
-* [DIRSTUDIO-285](https://issues.apache.org/jira/browse/DIRSTUDIO-285) - Export into LDIF format could be corrupted
-* [DIRSTUDIO-284](https://issues.apache.org/jira/browse/DIRSTUDIO-284) - Changing "Supported Authentication Mechanism" doesn't set the dirty flag.
-* [DIRSTUDIO-281](https://issues.apache.org/jira/browse/DIRSTUDIO-281) - LDIF and Apache DS configuration files can't be saved in RCP mode
-* [DIRSTUDIO-279](https://issues.apache.org/jira/browse/DIRSTUDIO-279) - Filter Editor doesn't remove spaces and line breaks after OK
-* [DIRSTUDIO-270](https://issues.apache.org/jira/browse/DIRSTUDIO-270) - Copy and paste does not work when value being edited
-
-**Task**
-
-* [DIRSTUDIO-280](https://issues.apache.org/jira/browse/DIRSTUDIO-280) - Remove remaining unwanted contributions from Eclipse
-
-***
-
-## Apache Directory Studio 1.1.0 RC (February 20th 2008)
-
-**Sub-task**
-
-* [DIRSTUDIO-142](https://issues.apache.org/jira/browse/DIRSTUDIO-142) - Add SASL authentication
-
-**Bug**
-
-* [DIRSTUDIO-48](https://issues.apache.org/jira/browse/DIRSTUDIO-48) - Errors when help is open
-* [DIRSTUDIO-95](https://issues.apache.org/jira/browse/DIRSTUDIO-95) - Not returning large queries
-* [DIRSTUDIO-120](https://issues.apache.org/jira/browse/DIRSTUDIO-120) - 100% CPU when deleting thousands of entries
-* [DIRSTUDIO-139](https://issues.apache.org/jira/browse/DIRSTUDIO-139) - Operational attributes not shown in the Entry Editor
-* [DIRSTUDIO-152](https://issues.apache.org/jira/browse/DIRSTUDIO-152) - New entry creator does not know that 'dc' and 'domainComponent' is the same thing
-* [DIRSTUDIO-154](https://issues.apache.org/jira/browse/DIRSTUDIO-154) - Studio getting slower and slower on bulk operations
-* [DIRSTUDIO-161](https://issues.apache.org/jira/browse/DIRSTUDIO-161) - Unable to enter Base DN ending in 'dc='
-* [DIRSTUDIO-166](https://issues.apache.org/jira/browse/DIRSTUDIO-166) - LDif Import changetype: modify add attribute attrId is not case insensitive
-* [DIRSTUDIO-184](https://issues.apache.org/jira/browse/DIRSTUDIO-184) - Error while reading entry in Active Directory
-* [DIRSTUDIO-191](https://issues.apache.org/jira/browse/DIRSTUDIO-191) - Connection Name mess up if it contains non-ascii chars
-* [DIRSTUDIO-196](https://issues.apache.org/jira/browse/DIRSTUDIO-196) - Error dialog displayed after Problems View is closed
-* [DIRSTUDIO-197](https://issues.apache.org/jira/browse/DIRSTUDIO-197) - Following referrals throws NPE
-* [DIRSTUDIO-198](https://issues.apache.org/jira/browse/DIRSTUDIO-198) - Search string is not working properly with metacharacters (*, +...)
-* [DIRSTUDIO-201](https://issues.apache.org/jira/browse/DIRSTUDIO-201) - Project Name mess up if it contains non-ascii chars
-* [DIRSTUDIO-203](https://issues.apache.org/jira/browse/DIRSTUDIO-203) - Help contexts of LDAP Browser does not display in the Dynamic Help window
-* [DIRSTUDIO-204](https://issues.apache.org/jira/browse/DIRSTUDIO-204) - Warning displayed when showing the properties of a connection
-* [DIRSTUDIO-205](https://issues.apache.org/jira/browse/DIRSTUDIO-205) - Windows installer's publisher is set to "Unknown Publisher"
-* [DIRSTUDIO-206](https://issues.apache.org/jira/browse/DIRSTUDIO-206) - Browse does not work in subtree editor base selection
-* [DIRSTUDIO-210](https://issues.apache.org/jira/browse/DIRSTUDIO-210) - Filter parser accepts bad filters
-* [DIRSTUDIO-211](https://issues.apache.org/jira/browse/DIRSTUDIO-211) - Connections window doesn't display swedish characters properly
-* [DIRSTUDIO-213](https://issues.apache.org/jira/browse/DIRSTUDIO-213) - NullPointerException raised when selecting an OC with no alias as a superior in the NewObjectClassWizard
-* [DIRSTUDIO-214](https://issues.apache.org/jira/browse/DIRSTUDIO-214) - IllegalArgumentException raised when selecting an AT with no alias as superior in the NewAttributeTypeWizard
-* [DIRSTUDIO-217](https://issues.apache.org/jira/browse/DIRSTUDIO-217) - Eclipse 3.3 New Connections shows "Browser Options" without possibility to add new address
-* [DIRSTUDIO-220](https://issues.apache.org/jira/browse/DIRSTUDIO-220) - lowercase {crypt} in userPassword is an "Unsupported Hash Method"
-* [DIRSTUDIO-222](https://issues.apache.org/jira/browse/DIRSTUDIO-222) - Pb when creating an entry with an invalid atribute as a RDN
-* [DIRSTUDIO-223](https://issues.apache.org/jira/browse/DIRSTUDIO-223) - NullPointerException raised when adding values in the New Entry Wizard
-* [DIRSTUDIO-224](https://issues.apache.org/jira/browse/DIRSTUDIO-224) - Can't Open Schema View with JDK 6.0
-* [DIRSTUDIO-226](https://issues.apache.org/jira/browse/DIRSTUDIO-226) - Attribute Type Description is not imported when reading an OpenLDAP schema file
-* [DIRSTUDIO-230](https://issues.apache.org/jira/browse/DIRSTUDIO-230) - Locate Dn in DIT Action does not work well
-* [DIRSTUDIO-233](https://issues.apache.org/jira/browse/DIRSTUDIO-233) - Browsing base DN returns [LDAP: error code 10 - Referral)
-* [DIRSTUDIO-235](https://issues.apache.org/jira/browse/DIRSTUDIO-235) - Non ASCII characters are not rendered properly in the LDAP Browser View when label is limited to a certain number of characters
-* [DIRSTUDIO-239](https://issues.apache.org/jira/browse/DIRSTUDIO-239) - No error message when importing a bad schema
-* [DIRSTUDIO-242](https://issues.apache.org/jira/browse/DIRSTUDIO-242) - Inconsistent state of the Entry Editor after using "New Value" (or "New Attribute...") and pressing "Escape".
-* [DIRSTUDIO-243](https://issues.apache.org/jira/browse/DIRSTUDIO-243) - Modified value of Equality Matching Rule in the AttributeTypeEditor is not saved
-* [DIRSTUDIO-245](https://issues.apache.org/jira/browse/DIRSTUDIO-245) - Apache DS Configuration Plugin cannot parse server.xml file correctly
-* [DIRSTUDIO-247](https://issues.apache.org/jira/browse/DIRSTUDIO-247) - Don't use implicit ManageDsaIT control magic of JNDI
-* [DIRSTUDIO-249](https://issues.apache.org/jira/browse/DIRSTUDIO-249) - Modification Logs view does not display request controls, if sent to the server
-* [DIRSTUDIO-250](https://issues.apache.org/jira/browse/DIRSTUDIO-250) - Unable to load entries if RDN is quoted and contains unescaped comma
-* [DIRSTUDIO-252](https://issues.apache.org/jira/browse/DIRSTUDIO-252) - Advanced value editors don't work in NewEntryWizard
-* [DIRSTUDIO-253](https://issues.apache.org/jira/browse/DIRSTUDIO-253) - cant open server.xml with directory studio
-* [DIRSTUDIO-258](https://issues.apache.org/jira/browse/DIRSTUDIO-258) - ArrayIndexOutOfBoundsException when changing Base DN
-* [DIRSTUDIO-259](https://issues.apache.org/jira/browse/DIRSTUDIO-259) - NPE when trying to turn back on "save password" on connection properties
-* [DIRSTUDIO-261](https://issues.apache.org/jira/browse/DIRSTUDIO-261) - LDAP Browser shows same root objects two times under Root DSE
-* [DIRSTUDIO-264](https://issues.apache.org/jira/browse/DIRSTUDIO-264) - ldif parser doesn't accept attributes with empty values
-* [DIRSTUDIO-267](https://issues.apache.org/jira/browse/DIRSTUDIO-267) - Clicking on a bookmark loops and does not display attributes
-* [DIRSTUDIO-269](https://issues.apache.org/jira/browse/DIRSTUDIO-269) - Attributes not displayed when browsing BEA Weblogic embedded LDAP
-
-**Improvement**
-
-* [DIRSTUDIO-37](https://issues.apache.org/jira/browse/DIRSTUDIO-37) - Improve authentication methods and security mechanisms
-* [DIRSTUDIO-119](https://issues.apache.org/jira/browse/DIRSTUDIO-119) - Allow user to disabled the Modification logs windows
-* [DIRSTUDIO-123](https://issues.apache.org/jira/browse/DIRSTUDIO-123) - Refactor IConnection interface and Connection class
-* [DIRSTUDIO-136](https://issues.apache.org/jira/browse/DIRSTUDIO-136) - Remove the "Apache DS" menu from the Java Perspective
-* [DIRSTUDIO-138](https://issues.apache.org/jira/browse/DIRSTUDIO-138) - Add visual feedback to the user, if SSL (ldaps) is enabled
-* [DIRSTUDIO-156](https://issues.apache.org/jira/browse/DIRSTUDIO-156) - useability improvement: when exporting an OU use the applied filter by default
-* [DIRSTUDIO-187](https://issues.apache.org/jira/browse/DIRSTUDIO-187) - Add the ability to organize connections in folders
-* [DIRSTUDIO-189](https://issues.apache.org/jira/browse/DIRSTUDIO-189) - Replace connection combo-box with BrowserConnectionWidget
-* [DIRSTUDIO-195](https://issues.apache.org/jira/browse/DIRSTUDIO-195) - Add key bindings to the Schema Editor
-* [DIRSTUDIO-199](https://issues.apache.org/jira/browse/DIRSTUDIO-199) - Add scopes for OC and AT in search
-* [DIRSTUDIO-200](https://issues.apache.org/jira/browse/DIRSTUDIO-200) - Add an OC and AT hierarchical global view
-* [DIRSTUDIO-202](https://issues.apache.org/jira/browse/DIRSTUDIO-202) - Add help contexts to the help plugin of the Schema Editor
-* [DIRSTUDIO-216](https://issues.apache.org/jira/browse/DIRSTUDIO-216) - Improve Type Hierarchy View
-* [DIRSTUDIO-221](https://issues.apache.org/jira/browse/DIRSTUDIO-221) - Improve Object Class selection in the New Entry Wizard
-* [DIRSTUDIO-227](https://issues.apache.org/jira/browse/DIRSTUDIO-227) - Add the ability to select OpenLDAP schema files as core schemas when creating a project
-* [DIRSTUDIO-237](https://issues.apache.org/jira/browse/DIRSTUDIO-237) - It would be good to be able to import 'core' schemas into an existing project
-* [DIRSTUDIO-238](https://issues.apache.org/jira/browse/DIRSTUDIO-238) - Automatically add an alias when the 'ok' button is selected
-* [DIRSTUDIO-240](https://issues.apache.org/jira/browse/DIRSTUDIO-240) - Memorize the last import's path
-* [DIRSTUDIO-251](https://issues.apache.org/jira/browse/DIRSTUDIO-251) - Replace the Text Widget for the OID in the new AT and OC wizards by a Drop-Down Combo with history of the last used OIDs
-* [DIRSTUDIO-254](https://issues.apache.org/jira/browse/DIRSTUDIO-254) - schema import does not provide error reporting when parsing schema file
-* [DIRSTUDIO-257](https://issues.apache.org/jira/browse/DIRSTUDIO-257) - Use system small fonts on Mac OS X
-* [DIRSTUDIO-275](https://issues.apache.org/jira/browse/DIRSTUDIO-275) - Import/Export wizards should display an error if no Schema Project is open
-
-**New Feature**
-
-* [DIRSTUDIO-192](https://issues.apache.org/jira/browse/DIRSTUDIO-192) - Add an extension point in the Schema Editor for SchemaConnectors
-* [DIRSTUDIO-193](https://issues.apache.org/jira/browse/DIRSTUDIO-193) - Add the abitilty to import/export the Schema from/to a directory Server
-* [DIRSTUDIO-194](https://issues.apache.org/jira/browse/DIRSTUDIO-194) - Add a SchemaConnector for Apache Directory Server
-* [DIRSTUDIO-246](https://issues.apache.org/jira/browse/DIRSTUDIO-246) - Add support for simulated renaming of non-leaf entries
-* [DIRSTUDIO-248](https://issues.apache.org/jira/browse/DIRSTUDIO-248) - Add support for simulated moving of non-leaf entries
-
-**Task**
-
-* [DIRSTUDIO-218](https://issues.apache.org/jira/browse/DIRSTUDIO-218) - Some packages are not signed
-* [DIRSTUDIO-225](https://issues.apache.org/jira/browse/DIRSTUDIO-225) - Update documentation for Schema Editor Plugin
-* [DIRSTUDIO-229](https://issues.apache.org/jira/browse/DIRSTUDIO-229) - Replace internal DN/RDN/RDNPart with LdapDN/Rdn/ATAV of shared-ldap
-* [DIRSTUDIO-236](https://issues.apache.org/jira/browse/DIRSTUDIO-236) - Update the Apache DS Configuration plugin to work with the server.xml file of Apache DS 1.5.1
-* [DIRSTUDIO-265](https://issues.apache.org/jira/browse/DIRSTUDIO-265) - Migrate our build system from Ant+Ivy to Maven
-
-***
-
-## Apache Directory Studio 1.0.1 (September 18th 2007)
-
-**Bug**
-
-* [DIRSTUDIO-162](https://issues.apache.org/jira/browse/DIRSTUDIO-162) - Delete old RDN on rename has no effect
-* [DIRSTUDIO-180](https://issues.apache.org/jira/browse/DIRSTUDIO-180) - Connection wizard and properties tabs are out of order
-* [DIRSTUDIO-183](https://issues.apache.org/jira/browse/DIRSTUDIO-183) - It's not possible to select a Connection in a New Search
-* [DIRSTUDIO-186](https://issues.apache.org/jira/browse/DIRSTUDIO-186) - When copying an entry it isn't displayed correctly in the browser tree
-* [DIRSTUDIO-190](https://issues.apache.org/jira/browse/DIRSTUDIO-190) - SSL connections are no longer working
-
-**Improvement**
-
-* [DIRSTUDIO-185](https://issues.apache.org/jira/browse/DIRSTUDIO-185) - Provide completion for all attribute types in the attribute wizard
-
-**Task**
-
-* [DIRSTUDIO-181](https://issues.apache.org/jira/browse/DIRSTUDIO-181) - Update the documentation of the Schema Editor Plugin
-* [DIRSTUDIO-188](https://issues.apache.org/jira/browse/DIRSTUDIO-188) - Move LDIF Editor help to its own help plugin
-
-***
-
-## Apache Directory Studio 1.0.0 (September 4th 2007)
-
-**Sub-task**
-
-* [DIRSTUDIO-131](https://issues.apache.org/jira/browse/DIRSTUDIO-131) - Rename package names and plugin IDs for ldap browser plugins and features
-* [DIRSTUDIO-140](https://issues.apache.org/jira/browse/DIRSTUDIO-140) - Add Eclipse Intro mecanism to the Apache Directory Studio RCP plugin
-* [DIRSTUDIO-141](https://issues.apache.org/jira/browse/DIRSTUDIO-141) - Add content to Apache Directory Studio Intro
-* [DIRSTUDIO-177](https://issues.apache.org/jira/browse/DIRSTUDIO-177) - Update dependencies on Apache DS jars
-
-**Bug**
-
-* [DIRSTUDIO-73](https://issues.apache.org/jira/browse/DIRSTUDIO-73) - Password appears in clear
-* [DIRSTUDIO-96](https://issues.apache.org/jira/browse/DIRSTUDIO-96) - installation into existing Eclipse ruins key bindings for JDT
-* [DIRSTUDIO-101](https://issues.apache.org/jira/browse/DIRSTUDIO-101) - Configuration lost on brutal exit
-* [DIRSTUDIO-110](https://issues.apache.org/jira/browse/DIRSTUDIO-110) - No DIT shown when opening a connection with the 'open' icon
-* [DIRSTUDIO-117](https://issues.apache.org/jira/browse/DIRSTUDIO-117) - Double click attribute to rename entry displays two dialog boxes
-* [DIRSTUDIO-127](https://issues.apache.org/jira/browse/DIRSTUDIO-127) - Missing ASL 2.0 headers in package-info.java files for ACIEditor
-* [DIRSTUDIO-149](https://issues.apache.org/jira/browse/DIRSTUDIO-149) - Problems with the slash / in DN
-* [DIRSTUDIO-168](https://issues.apache.org/jira/browse/DIRSTUDIO-168) - NPE when opening search dialog and connection is closed
-* [DIRSTUDIO-172](https://issues.apache.org/jira/browse/DIRSTUDIO-172) - Syntax length definitions in schemas exported from LDAP Studio throws exception on Apache DS start-up.
-
-**Improvement**
-
-* [DIRSTUDIO-47](https://issues.apache.org/jira/browse/DIRSTUDIO-47) - Improve filter widget and filter editor dialog
-* [DIRSTUDIO-67](https://issues.apache.org/jira/browse/DIRSTUDIO-67) - Clear "Modification Logs" functionality missing
-* [DIRSTUDIO-75](https://issues.apache.org/jira/browse/DIRSTUDIO-75) - Improve LDAP Studio build system
-* [DIRSTUDIO-93](https://issues.apache.org/jira/browse/DIRSTUDIO-93) - Add server detection for ApacheDS and TivoliDS on RootDSE property page
-* [DIRSTUDIO-99](https://issues.apache.org/jira/browse/DIRSTUDIO-99) - Display both OID and text for controls etc. in the property page of the Root DSE
-* [DIRSTUDIO-102](https://issues.apache.org/jira/browse/DIRSTUDIO-102) - Add descriptions for OIDs for LDAP controls and extended ops specific to IBM Tivoli Directory Server
-* [DIRSTUDIO-103](https://issues.apache.org/jira/browse/DIRSTUDIO-103) - Include Apache brand in splash screen of RCP application
-* [DIRSTUDIO-104](https://issues.apache.org/jira/browse/DIRSTUDIO-104) - Add "Apache" prefix to window title of RCP Application
-* [DIRSTUDIO-105](https://issues.apache.org/jira/browse/DIRSTUDIO-105) - Add descriptions for OIDs for LDAP controls and extended ops specific to Netscape Directory Server
-* [DIRSTUDIO-106](https://issues.apache.org/jira/browse/DIRSTUDIO-106) - Add descriptions for OIDs for LDAP controls and extended ops specific to MS Active Directory
-* [DIRSTUDIO-108](https://issues.apache.org/jira/browse/DIRSTUDIO-108) - Superlasses
-* [DIRSTUDIO-122](https://issues.apache.org/jira/browse/DIRSTUDIO-122) - Schema editor should allow a user to add an OID in the Syntax input box
-* [DIRSTUDIO-125](https://issues.apache.org/jira/browse/DIRSTUDIO-125) - Bootstrap Ivy
-* [DIRSTUDIO-151](https://issues.apache.org/jira/browse/DIRSTUDIO-151) - Simplify IValueEditor interface
-* [DIRSTUDIO-158](https://issues.apache.org/jira/browse/DIRSTUDIO-158) - Create a separte connection plugin
-* [DIRSTUDIO-165](https://issues.apache.org/jira/browse/DIRSTUDIO-165) - Add the version number of Apache Directory Studio in the "About window" of the RCP application
-* [DIRSTUDIO-169](https://issues.apache.org/jira/browse/DIRSTUDIO-169) - Make connection parameters editable even if the connection is opened
-* [DIRSTUDIO-174](https://issues.apache.org/jira/browse/DIRSTUDIO-174) - Use an unique ID as connection identifier instead of the connection name
-
-**New Feature**
-
-* [DIRSTUDIO-90](https://issues.apache.org/jira/browse/DIRSTUDIO-90) - Add a Welcome view that is displayed at first launch
-
-**Task**
-
-* [DIRSTUDIO-113](https://issues.apache.org/jira/browse/DIRSTUDIO-113) - Rename "LDAP Studio" to "Apache Directory Studio"
-* [DIRSTUDIO-129](https://issues.apache.org/jira/browse/DIRSTUDIO-129) - Rename project names in trunk
-* [DIRSTUDIO-130](https://issues.apache.org/jira/browse/DIRSTUDIO-130) - Rename package names and plugin IDs
-* [DIRSTUDIO-159](https://issues.apache.org/jira/browse/DIRSTUDIO-159) - Create a separte feature project for the LDIF Editor
-* [DIRSTUDIO-175](https://issues.apache.org/jira/browse/DIRSTUDIO-175) - Verify and add if needed the Notice.txt and Licence.txt files of all plugins
-* [DIRSTUDIO-176](https://issues.apache.org/jira/browse/DIRSTUDIO-176) - Edit Release Notes.txt files for the 1.0 release
-* [DIRSTUDIO-178](https://issues.apache.org/jira/browse/DIRSTUDIO-178) - Edit features and update site with the new update site URL
-
-**Wish**
-
-* [DIRSTUDIO-100](https://issues.apache.org/jira/browse/DIRSTUDIO-100) - Interface IRootDSE does not sufficiently define return values of methods
-
-***
-
-## Apache LDAP Studio 0.8.1 (July 24th 2007)
-
-**Bug**
-
-* [DIRSTUDIO-80](https://issues.apache.org/jira/browse/DIRSTUDIO-80) - LDAP Studio does not work on x86_64
-* [DIRSTUDIO-144](https://issues.apache.org/jira/browse/DIRSTUDIO-144) - Unable to install plugins from updatesite on x86_64 architecture
-
-***
-
-## Apache LDAP Studio 0.8.0 (May 4th 2007)
-
-**Bug**
-
-* [DIRSTUDIO-71](https://issues.apache.org/jira/browse/DIRSTUDIO-71) - LDAP Studio installer creates bad shortcuts
-* [DIRSTUDIO-74](https://issues.apache.org/jira/browse/DIRSTUDIO-74) - empty DN does not work
-* [DIRSTUDIO-82](https://issues.apache.org/jira/browse/DIRSTUDIO-82) - Export to XLS or CSV
-* [DIRSTUDIO-83](https://issues.apache.org/jira/browse/DIRSTUDIO-83) - Generated LDIF of a schema doesn't support the m-dependencies attribute
-* [DIRSTUDIO-84](https://issues.apache.org/jira/browse/DIRSTUDIO-84) - Binding with a bad DN is accepted
-* [DIRSTUDIO-86](https://issues.apache.org/jira/browse/DIRSTUDIO-86) - No way to specify search on rootDSE in search dialog
-* [DIRSTUDIO-88](https://issues.apache.org/jira/browse/DIRSTUDIO-88) - Schema export to Apache DS has a spelling error which causes the import to fail.
-
-**Improvement**
-
-* [DIRSTUDIO-78](https://issues.apache.org/jira/browse/DIRSTUDIO-78) - Refactor browser-ui plugin
-
-**New Feature**
-
-* [DIRSTUDIO-12](https://issues.apache.org/jira/browse/DIRSTUDIO-12) - Editor for editing ACIs
-* [DIRSTUDIO-76](https://issues.apache.org/jira/browse/DIRSTUDIO-76) - Value editor for administrativeRole
-* [DIRSTUDIO-79](https://issues.apache.org/jira/browse/DIRSTUDIO-79) - Value editor for subtreeSpecification
-* [DIRSTUDIO-91](https://issues.apache.org/jira/browse/DIRSTUDIO-91) - Add a new plugin for handling the Apache DS server configuration file
-
-***
-
-## Apache LDAP Studio 0.7.0 (April 6th 2007)
-
-**Bug**
-
-* [DIRSTUDIO-1](https://issues.apache.org/jira/browse/DIRSTUDIO-1) - DSML Parser does not throw an exception when it doesn't find a requestID attribute when processing=parallel and responseOrder=unordered
-* [DIRSTUDIO-4](https://issues.apache.org/jira/browse/DIRSTUDIO-4) - Selection in Schema
-* [DIRSTUDIO-31](https://issues.apache.org/jira/browse/DIRSTUDIO-31) - Source Code View of a schema is not refreshed when one of its objectclasses or attributetypes is updated.
-* [DIRSTUDIO-57](https://issues.apache.org/jira/browse/DIRSTUDIO-57) - Search Result editor isn't initialized properly
-* [DIRSTUDIO-63](https://issues.apache.org/jira/browse/DIRSTUDIO-63) - Should not package ui-forms in org.apache.directory.ldapstudio.schemas_0.6.0jar
-* [DIRSTUDIO-64](https://issues.apache.org/jira/browse/DIRSTUDIO-64) - Unable to modify an Attribute Type's OID
-* [DIRSTUDIO-69](https://issues.apache.org/jira/browse/DIRSTUDIO-69) - Problems with search base and DN serialization
-
-**Improvement**
-
-* [DIRSTUDIO-33](https://issues.apache.org/jira/browse/DIRSTUDIO-33) - Add syntax coloring to the Source Code view of AT, OC & Schema editors
-* [DIRSTUDIO-35](https://issues.apache.org/jira/browse/DIRSTUDIO-35) - Disable action icons of the Schemas view when actions are not available
-* [DIRSTUDIO-39](https://issues.apache.org/jira/browse/DIRSTUDIO-39) - Allow the user to switch between 'Standard schemas files' and 'Use specific schemas files' without having to relaunch the application.
-* [DIRSTUDIO-40](https://issues.apache.org/jira/browse/DIRSTUDIO-40) - Source Code view of an AT or OC should reflect the changes made in the graphical editor
-* [DIRSTUDIO-44](https://issues.apache.org/jira/browse/DIRSTUDIO-44) - Add small hover icon identifiers for OC and AC to differenciate them
-* [DIRSTUDIO-49](https://issues.apache.org/jira/browse/DIRSTUDIO-49) - Improve history navigation
-* [DIRSTUDIO-51](https://issues.apache.org/jira/browse/DIRSTUDIO-51) - Add a way to get the OC which use an AT
-* [DIRSTUDIO-52](https://issues.apache.org/jira/browse/DIRSTUDIO-52) - may and must ATs are not sorted
-* [DIRSTUDIO-53](https://issues.apache.org/jira/browse/DIRSTUDIO-53) - Bad search incon in the Schema perspective
-* [DIRSTUDIO-55](https://issues.apache.org/jira/browse/DIRSTUDIO-55) - Adding 'instant search' into entry creation
-* [DIRSTUDIO-56](https://issues.apache.org/jira/browse/DIRSTUDIO-56) - Automatic completion of inherited OC
-* [DIRSTUDIO-58](https://issues.apache.org/jira/browse/DIRSTUDIO-58) - Improve the Hierarchy View
-* [DIRSTUDIO-59](https://issues.apache.org/jira/browse/DIRSTUDIO-59) - Add a Schema Field in the AT/OC editors
-* [DIRSTUDIO-61](https://issues.apache.org/jira/browse/DIRSTUDIO-61) - Pressing the down key in the search field of the Search View should pass the focus to the search results table
-* [DIRSTUDIO-66](https://issues.apache.org/jira/browse/DIRSTUDIO-66) - Refresh of the LDAP Browser viewer after import
-
-**New Feature**
-
-* [DIRSTUDIO-7](https://issues.apache.org/jira/browse/DIRSTUDIO-7) - OID View
-* [DIRSTUDIO-41](https://issues.apache.org/jira/browse/DIRSTUDIO-41) - Add an Overview page on the Schema Editor that displays all ATs and OCs of the schema
-
-***
-
-## Apache LDAP Studio 0.6.0 (February 13th 2007)
-
-Initial Release.
diff --git a/content/studio/developers-guide.mdtext b/content/studio/developers-guide.mdtext
deleted file mode 100644
index 88302ae..0000000
--- a/content/studio/developers-guide.mdtext
+++ /dev/null
@@ -1,46 +0,0 @@
-Title: Developer's Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Developer's Guide
-
-This is a simple guide to various Apache Directory Studio resources to help developers get going. This guide can be found in the [README][README.md] file at the top level of the source tree.
-
-## Source Repository
-
-The [Source repository](source-repository.html) page describes source code location and organization.
-
-## Build
-
-The [README][README.md] describes how to build from source.
-
-## Issue Tracker
-
-[Jira](https://issues.apache.org/jira/browse/DIRSTUDIO).
-
-## Release
-
-The release process is described within the [README][README.md].
-
-## Internationalization
-
-The [Internationalization](internationalization.html) page describes how to enable multi-language support in the GUI (I18n).
-
-
-[README.md]: https://github.com/apache/directory-studio/blob/master/README.md
-
-
diff --git a/content/studio/developers-howtos/developers-howtos.mdtext b/content/studio/developers-howtos/developers-howtos.mdtext
deleted file mode 100644
index 60d4e1c..0000000
--- a/content/studio/developers-howtos/developers-howtos.mdtext
+++ /dev/null
@@ -1,47 +0,0 @@
-Title: Developers' Howtos
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Studio Developers' Howtos
-
-Theses guides give some insight about how is developped Studio, so that some new comers can jump in at a limited cost (well, sort of...)
-
-
-## Introduction
-
-Studio is an Eclipse&tm; RCP application, which can also be loaded into an Eclipse&tm; instance. It's a set of plugins :
-
-* a LDAP Browser
-* a LDAP Schema Editor
-* an embedded ApacheDS 2.0 server
-* an LDIF editor
-* an ApacheDS 2.0 configuration editor
-* an OpenDLAP&tm; 2.4 configuration editor
-
-and various utility plugins.
-
-## Prerequisites
-
-You can check about what is needed to be able to start coding on [the Developers' guide](../devezlopers-guide.mdtext).
-
-In any case, you need a Java JDK 7, Eclipse Luna-SR2, Maven 3.2.5, subversion 1.8.8.
-
-## Howtos
-
-* [1 - Using the TableWidget<E> widget](howtos/table-widget.html)
-
-
diff --git a/content/studio/developers-howtos/howtos/table-widget.mdtext b/content/studio/developers-howtos/howtos/table-widget.mdtext
deleted file mode 100644
index f6b32fb..0000000
--- a/content/studio/developers-howtos/howtos/table-widget.mdtext
+++ /dev/null
@@ -1,478 +0,0 @@
-Title: Table widget
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Table Widget
-
-It's sometime convenient to use a Table which is associated with a list of optionnally ordered elements, with Add/Edit/Delete actions, and up/down actions if the table is ordered. We have such a widget in _org.org.apache.directory.studio.common.ui.widgets_.
-
-The Table which will be exposed looks like this :
-
- +--------------------------------------+
- | Element 1 | (Add... )
- | Element 2 | (Edit...)
- | | (Delete )
- +--------------------------------------+
-
-or this, if the elements are ordered
-
- +--------------------------------------+
- | Element 1 | (Add... )
- | Element 2 | (Edit...)
- | | (Delete )
- | | ---------
- | | (Up )
- | | (Down )
- +--------------------------------------+
-
-Optionally, the _Edit_ button might be disabled.
-
-Clicking on an element will select it, so that one can delete it.
-
-Last, not least, double clicking on an element will edit it, if allowed. In this case, a dedicated Dialog will be opened.
-
-## Ordered table
-
-Here, we are not talking about the fact that the elements are ordered using some comparator, but the fact that the elements have an associated numeral prefix which is used to order the elements, regardeless of the element's content. This is an OpenLDAP extension, where elements are prefixed with a _{n}_ String, where 'n' is a vlaue between 0 to MAX_INTEGER (but it can also be -1, in one specific case).
-
-Bottom line, when a table is declared as Ordered, we use this prefix (which is shown) to order the elements in the tbale, otherwise we use the _compareTo_ method.
-
-## The Element requirements
-
-First of all, we have to focus on the elements. There are some requirements that such Objects much fulfill :
-
-* Either the element can be compared and cloned natively (like an Enum)
-* or it has to implement those methods (and the _Cloneable_ and _Comparable_ interfaces):
- * clone
- * hashCode
- * equals
- * compareTo
- * toString
-
-
-The idea is to be able to find an element in the table using the _equals()_ method, to copy an element, and to order the table content.
-
-## How it works
-
-Basically, we assemble 5 different elements :
- * A Table
- * A listener to handle the actions on the table
- * A Decorator to show the elements in the Table
- * A Dialog to edit the elements, or to add them
- * A Wrapper to hold the elements that are stored in the Table
-
-Let see with some examples
-
-### Table with Add/Edit/Delete, no dialog
-
-Internally, we store the data in a _List<E>_ where *E* is the element's type (_TableWidget_ is a generic class). The only thing you need to do when you want to use this widget is to add this code snippet :
-
-
- /** A TableWidget containing some RootDSE elements */
- private TableWidget<StringValueWrapper> rootDseTableWidget;
- ...
- // Instanciate the TableWidget, associated with a Decorator
- rootDseTableWidget = new TableWidget<StringValueWrapper>(
- new StringValueDecorator( composite.getShell(), Messages.getString( "OpenLDAPOptionsPage.RootDSE" ) ) );
-
- // We want an Edit button, but no Up/Down buttons
- rootDseTableWidget.createWidgetWithEdit( composite, toolkit );
- rootDseTableWidget.getControl().setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
-
- // Associate a listener to this table
- addModifyListener( rootDseTableWidget, rootDseTableListener );
-
-
-Here, we declare a _TableWidget_, a type of elements (StringValueWrapper), a label provider (used to decorate the elements in the table, if needed).
-
-Last, not least, you create the widget and set its position in your screen.
-
-### The element wrapper
-
-We need to wrap the element in the table in order to expose a few basic functions :
- * clone
- * hashCode
- * equals
- * compareTo
- * toString
-
-Here is an exemple, the _StringValueWrapper_, which wrap a simple value, which is itself a String :
-
- public class StringValueWrapper implements Cloneable, Comparable<StringValueWrapper>
- {
- /** The value */
- private String value;
-
- /** A flag to tell if the compare should be case sensitive or not */
- private boolean caseSensitive = true;
-
- /**
- * Creates a new instance of StringValueWrapper.
- *
- * @param value the value
- */
- public StringValueWrapper( String value, boolean caseSensitive )
- {
- this.value = value;
- this.caseSensitive = caseSensitive;
- }
-
-
- /**
- * @return the value
- */
- public String getValue()
- {
- return value;
- }
-
- /**
- * @param value the value to set
- */
- public void setValue( String value )
- {
- this.value = value;
- }
-
-
- /**
- * Clone the current object
- */
- public StringValueWrapper clone()
- {
- try
- {
- return (StringValueWrapper)super.clone();
- }
- catch ( CloneNotSupportedException e )
- {
- return null;
- }
- }
-
-
- /**
- * @see Object#equals(Object)
- */
- public boolean equals( Object that )
- {
- // Quick test
- if ( this == that )
- {
- return true;
- }
-
- if ( that instanceof StringValueWrapper )
- {
- StringValueWrapper thatInstance = (StringValueWrapper)that;
-
- if ( caseSensitive )
- {
- return value.equals( thatInstance.value );
- }
- else
- {
- return value.equalsIgnoreCase( thatInstance.value );
- }
- }
- else
- {
- return false;
- }
- }
-
-
- /**
- * @see Object#hashCode()
- */
- public int hashCode()
- {
- int h = 37;
-
- if ( value != null )
- {
- h += h*17 + value.hashCode();
- }
-
- return h;
- }
-
-
- /**
- * @see Comparable#compareTo()
- */
- public int compareTo( StringValueWrapper that )
- {
- if ( that == null )
- {
- return 1;
- }
-
- // Check the value
- if ( Strings.isEmpty( value ) )
- {
- return -1;
- }
- else
- {
- return value.compareToIgnoreCase( that.value );
- }
- }
-
-
- /**
- * @see Object#toString()
- */
- public String toString()
- {
- return value;
- }
- }
-
-Of course, your implementation may be way more complex, but all in all, the API contract is the same.
-
-### The Decorator
-
-This is just a class that extends the _TableDecorator_ abstract class. The _TableDecorator_ extendss the _LabelProvider_ class and implements the _Comparator_ interface.
-
-Here is an example :
-
- public class StringValueDecorator extends TableDecorator<StringValueWrapper>
- {
- /**
- * Create a new instance of StringValueDecorator
- * @param parentShell The parent Shell
- * @param attributeName the name of the attribute which will contain the value
- */
- public StringValueDecorator( Shell parentShell, String attributeName )
- {
- setDialog( new StringValueDialog( parentShell, attributeName ) );
- }
-
-
- /**
- * Construct the label for a String.
- * @param element the Element for which we want the value
- * @return a String representation of the element
- */
- public String getText( Object element )
- {
- if ( element instanceof StringValueWrapper )
- {
- return ( ( StringValueWrapper ) element ).getValue();
- }
-
- return super.getText( element );
- };
-
-
- /**
- * Get the image. We have none
- * @param element The element for which we want the image
- * @return The associated Image, or Null
- */
- public Image getImage( Object element )
- {
- return null;
- };
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int compare( StringValueWrapper e1, StringValueWrapper e2 )
- {
- if ( e1 != null )
- {
- if ( e2 == null )
- {
- return 1;
- }
- else
- {
- return e1.compareTo( e2 );
- }
- }
- else
- {
- if ( e2 == null )
- {
- return 0;
- }
- else
- {
- return 1;
- }
- }
- }
- }
-
-Here, each line in the Table will represent an instance of a _WtringValueWrapper_, with no image. Would you need to add an image before the text, it's just a matter to return this image in the _getImage()_ method.
-
-The constructor takes 2 arguments, the second one will be used in the default Dialog we use to create new String values.
-
-The text is simply constructed using the _toString()_ method, but you may use whatever fits your need.
-
-### The Dialog
-
-This is the complex part, which totally depends on what you want to do. In any case, all the User's Dialog will inherit from the _AddEditDialog_ class, which defines some default actions.
-
-Here is a quick description of this abstract class :
-
- AddEditDialog<E> extends Dialog
-
- fields :
- E editedElement : The element that is edited, if one clicked on the Edit button, or the new element to create for the Add action
- List<E> elements : The list of elements already in the Table
- int selectedPosition : If an element has been selected in the Table, contain its position in the _elements_ list
- boolean isAdd : A flag set to true if the Add button has been clicked.
- boolean okDisabled : A flag to tell if the OK button has to be disabled (for instance, if the data are invalid while creating or editing an element)
-
- abstract methods :
- void addNewElement() : If the Add button is clicked, we ask the specific Dialog to create an empty instance of Element. This method has to be implemented.
- void initDialog() : read the wrapped element into the dialog's Widgets
-
-
- public methods :
- E getEditedElement() : Get the element that is currently being edited.
- int getSelectedPosition() : Get the selected position, if any
- boolean isAdd() : Tells if the element is an addition or an edition
- void setAdd() : This is an Addition
- void setEdit() : This is an Edition
- void setEditedElement( E editedElement ) : Set the element that will be edited. Actually, a new instance is created, that will contain a copy of the edited element.
- void setElements( List<E> elements ) : Keep a copy (not shallow) of the Table content.
- void setSelectedPosition( int selectedPosition ) : Store the selected position
-
- protected methods :
- Control createButtonBar( Composite parent ) : Used to hide the OK button if needed
- List<E> getElements() : Returns the list of elements
- void initDialog() : Can be overloaded if the Dialog needs to inject an edited element in the Dialog widgets. Optional.
-
-You generally have to implement the _addNewElement()_ and _initDialog()_ methods in your own Dialog class, then implement all the logic to render your dialog.
-
-Here is how you set up your Dialog instance :
-
- protected Control createDialogArea( Composite parent )
- {
- Composite composite = ( Composite ) super.createDialogArea( parent );
- GridData gd = new GridData( GridData.FILL_BOTH );
- composite.setLayoutData( gd );
-
- // StringValue Group
- Group stringValueGroup = BaseWidgetUtils.createGroup( parent, null, 1 );
- GridLayout stringValueGroupGridLayout = new GridLayout( 2, false );
- stringValueGroup.setLayout( stringValueGroupGridLayout );
- stringValueGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
-
- // String Text
- BaseWidgetUtils.createLabel( stringValueGroup, attributeName + ":", 1 );
- stringValue = BaseWidgetUtils.createText( stringValueGroup, "", 1 );
- stringValue.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
-
- initDialog();
- addListeners();
-
- applyDialogFont( composite );
-
- return composite;
- }
-
-Here is what you'll get on the screen when an element is selected :
-
- +---------------------------------------+
- | .-----------------------------------. |
- | | Value : [ ] | |
- | '-----------------------------------' |
- | |
- | (cancel) (OK) |
- +---------------------------------------+
-
-The rendering can be way more complex though.
-
-### Actions
-
-There are two, three, four or five possible actions on this table :
-* Add
-* Edit (optional)
-* Delete
-* Up (optional)
-* Down (optional)
-
-Let's see how it works.
-
-#### Add action
-
-We will open the Dialog that is provided, and get back a new element which will be exposed in the Table. We also will check that the element is not already present, and if so, no duplicate will be added, except if the table is ordered.
-
-If the table is not ordered, the newly created element will be injected at the right place in the Table : we use the _compareTo_ method to find the position it as to be added in. If the element already exists, it's not added.
-
-If the table is ordered, this is a different story :
-* there is a selected element : the newly created element is added _after_ the selection, and all the following elements' prefix are incremented.
-* we don't have any selected element : the newly created element is added at the end of the Table, and its prefix is the laset element's prefix, plus one.
-
-#### Delete action
-
-The delete action only works for a selected element.
-
-If the Table is ordered, we will update the prefix of the elements after the deleted one, decrementing all of them.
-
-#### Edit action
-
-The edition of an element will replace the selected element by its new value.
-
-If the Table is ordered, the prefix will not be changed. Otherwise, the edited element might be moved to another position, depending on where it fits accordingly to the _compareTo_ method.
-
-#### Up Action
-
-The Up action will move one element up in the table. It's only valid for an ordered Table. Basically, it does nothing more than just exchanging two elements, and sapping their prefix.
-
-#### Down action
-
-The Up action will move one element down in the table. It's only valid for an ordered Table. Basically, it does nothing more than just exchanging two elements, and sapping their prefix.
-### The listener
-
-Last, not least, we have to add a Listener to react on what happens on the table itself.
-
-It's all about post-modification actions. In our case, we want to update the underlaying OpenLDAP configuration :
-
- private WidgetModifyListener rootDseTableListener = new WidgetModifyListener()
- {
- public void widgetModified( WidgetModifyEvent e )
- {
- List<String> rootDses = new ArrayList<String>();
-
- for ( StringValueWrapper rootDse : rootDseTableWidget.getElements() )
- {
- rootDses.add( rootDse.getValue() );
- }
-
- getConfiguration().getGlobal().setOlcRootDSE( rootDses );
- }
- };
-
-But it can be hatever fits your need.
-## Creating a Table with no edit button, or an Ordered table
-
-We have seen how to create a Table with an Edit button. Creating teh other Table's flawors is easy :
-
-* With edit : TableWidget.createWidgetWithEdit( Composite, FormToolkit );
-* No edit : TableWidget.createWidgetNoEdit( Composite, FormToolkit );
-* Ordered, No edit : TableWidget.createOrderedWidgetNoEdit( Composite, FormToolkit );
-* Ordered, with edit : TableWidget.createOrderedWidgetWithEdit( Composite, FormToolkit );
-
-Everything else is the same.
\ No newline at end of file
diff --git a/content/studio/download-old-versions.mdtext b/content/studio/download-old-versions.mdtext
deleted file mode 100644
index 618e22d..0000000
--- a/content/studio/download-old-versions.mdtext
+++ /dev/null
@@ -1,45 +0,0 @@
-Title: Download Old Versions
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Download Old Versions
-
-Old version can be found in the [archive](https://archive.apache.org/dist/directory/studio/).
-
-> **Note:** We encourage you to verify the integrity of the downloaded file using:
->
-> * the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
-> * the MD5 file (checksum).
-
-## Verify the integrity of the file
-
-The PGP signatures can be verified using PGP or GPG. First download the [KEYS file](https://downloads.apache.org/directory/KEYS) as well as the asc signature file for the relevant distribution. Then verify the signatures using:
-
- $ pgpk -a KEYS
- $ pgpv apache_1.3.24.tar.gz.asc
-
-or
-
- $ pgp -ka KEYS
- $ pgp apache_1.3.24.tar.gz.asc
-
-or
-
- $ gpg --import KEYS
- $ gpg --verify apache_1.3.24.tar.gz.asc
-
-Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/), or [here](http://www.slavasoft.com/fsum/).
diff --git a/content/studio/download/download-linux.mdtext b/content/studio/download/download-linux.mdtext
deleted file mode 100644
index ddcade6..0000000
--- a/content/studio/download/download-linux.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Linux
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/studio/download/download-macosx.mdtext b/content/studio/download/download-macosx.mdtext
deleted file mode 100644
index 5850b25..0000000
--- a/content/studio/download/download-macosx.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for macOS
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
diff --git a/content/studio/download/download-sources.mdtext b/content/studio/download/download-sources.mdtext
deleted file mode 100644
index 82f23ea..0000000
--- a/content/studio/download/download-sources.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Download for Sources
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/studio/download/download-windows.mdtext b/content/studio/download/download-windows.mdtext
deleted file mode 100644
index 5dab1ea..0000000
--- a/content/studio/download/download-windows.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Downloads for Windows
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/studio/downloads.mdtext b/content/studio/downloads.mdtext
deleted file mode 100644
index 387cbfb..0000000
--- a/content/studio/downloads.mdtext
+++ /dev/null
@@ -1,56 +0,0 @@
-Title: Downloads
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Downloads
-
-Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with the ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.
-
-## Apache Directory Studio RCP Application
-
-Apache Directory Studio is a multi-platform application and runs on macOS, Linux and Windows.
-
-Please select the download corresponding to your operating system:
-
-* ![Download](../images/download-macosx.png) [Download for macOS](download/download-macosx.html)
-
-* ![Download](../images/download-linux.png) [Download for Linux](download/download-linux.html)
-
-* ![Download](../images/download-windows.png) [Download for Windows](download/download-windows.html)
-
-On macOS you can also install Apache Directory Studio via [MacPorts][1]:
-
-> `# sudo port install directory-studio`
-
-## Plugins for Eclipse
-
-You can also install plugins for Eclipse using our update site (requires Java 8 or newer and a recent Eclipse version).
-
-The URL of our update site is **[https://directory.apache.org/studio/update](http://directory.apache.org/studio/update)**
-
-Learn how to [install Apache Directory Studio plugins in Eclipse](installation-in-eclipse.html) [![Download](../images/download-eclipse.png)](installation-in-eclipse.html)
-
-## Sources
-
-The sources of Apache Directory Studio and its plugins are available [here](download/download-sources.html) [![Download](../images/download-sources.png)](download/download-sources.html).
-
-## Old Versions
-
-You can download old versions of Apache Directory Studio (or Apache LDAP Studio) [here](download-old-versions.html).
-
-
- [1]: https://www.macports.org/
\ No newline at end of file
diff --git a/content/studio/faqs.mdtext b/content/studio/faqs.mdtext
deleted file mode 100644
index 6611d97..0000000
--- a/content/studio/faqs.mdtext
+++ /dev/null
@@ -1,99 +0,0 @@
-Title: FAQs
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-<h1>FAQs</h1>
-
-[TOC]
-
-### How to set the language of Studio?
-
-Studio currentlly is translated in three languages: English (en), French (fr) and German (de). When starting Studio, the language setting of your operation system is used to determine the language of Studio (On linux, the LC_CTYPE environment variable is used to determinate the default language).
-
-However it is possible to force another language. Add the following content to the _ApacheDirectoryStudio.ini_ file (before the "-vmargs" line):
-
- -nl
- en
-
-Please notice the line break between -nl and the language.
-
-
-### When browsing and expanding an entry, Studio only shows 1000 child entries.
-
-Studio uses a client-side count limit when browsing the DIT. This limit is defined in the connection properties. See
-[Connection Properties](./users-guide/ldap_browser/tools_connection_properties.html#tools_connection_properties_browser_options) how to change it.
-
-
-### How to set the Java VM to use?
-
-Add the following content to _ApacheDirectoryStudio.ini_ file (before the "-vmargs" line):
-
- -vm
- <path to java executable>
-
-Please notice the line break between -vm and the path.
-
-Studio requires Java 8 or newer.
-
-MacOS notes:
-
-* You need to install the JDK (Java Development Kit), the JRE is not enough!
-* You can find out the Java home directories with `/usr/libexec/java_home -V`, append `/bin/java` to the path
-
-
-### How to increase the heap memory?
-
-Add the following content to _ApacheDirectoryStudio.ini_ file:
-
- -vmargs
- -Xms128m
- -Xmx512m
-
-Please notice the line breaks.
-
-
-### Location of `ApacheDirectoryStudio.ini` file
-
-* On Linux: in the installation folder
-* On macOS: `/Applications/ApacheDirectoryStudio.app/Contents/Eclipse/ApacheDirectoryStudio.ini`
-* On Windows: in the installation folder
-
-
-### Location of Apache Directory Studio settings
-
-The settings are located per default in your home directory under the directory _.ApacheDirectoryStudio_.
-
-The file containing all connections is:
-
- ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.connection.core/connections.xml
-
-The file containing all searches and bookmarks is:
-
- ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.ldapbrowser.core/browserconnections.xml
-
-The file containing the history of the connection wizard (recently used hosts and bind users) is:
-
- ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.connection.ui/dialog_settings.xml
-
-The file containing the history of search settings (recently used DNs, filters, returning attributes) is:
-
- ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.ldapbrowser.common/dialog_settings.xml
-
-There are some more _dialog_settings.xml_ files in the other plugins directories.
-
-Note: the location of the settings directory could be configured by changing the parameter "osgi.instance.area.default" in configuration/config.ini.
-
diff --git a/content/studio/index.mdtext b/content/studio/index.mdtext
deleted file mode 100644
index 7a5d97d..0000000
--- a/content/studio/index.mdtext
+++ /dev/null
@@ -1,17 +0,0 @@
-Title: Welcome to Apache Directory Studio
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
\ No newline at end of file
diff --git a/content/studio/installation-in-eclipse.mdtext b/content/studio/installation-in-eclipse.mdtext
deleted file mode 100644
index c050c44..0000000
--- a/content/studio/installation-in-eclipse.mdtext
+++ /dev/null
@@ -1,90 +0,0 @@
-Title: Installing Apache Directory Studio in Eclipse
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Installing Apache Directory Studio in Eclipse
-
-> **Note:**
->
-> The Apache Directory Studio plugins require Java 8 or newer and a recent Eclipse version.
-
-From workbench menu choose **Help > Install New Software...**.
-
-<center>![Help -> Install New Software...](installation-in-eclipse.data/1-menu.png)</center>
-
-In the opened wizard input `https://directory.apache.org/studio/update` into the **Work with:** text field and press **Enter**.
-
-
-After a while the table below will show the available categories.
-
-Choose **Apache Directory Studio**. You don't need to choose **Apache Directory Studio Dependencies**, the required dependencies will be automatically installed if required. Click **Next**.
-
-<center>![Available Software](installation-in-eclipse.data/2-available-software.png)</center>
-
-Review the installation details and click **Next**.
-
-<center>![Install Details](installation-in-eclipse.data/3-install-details.png)</center>
-
-Accept the license agreement, Apache Directory Studio is licensed under the Apache License, Version 2.0. Click **Finish**.
-
-<center>![Review Licenses](installation-in-eclipse.data/4-review-licenses.png)</center>
-
-Apache Directory Studio plugins are not signed yet, so you have to agree to the warning.
-
-<center>![Warning](installation-in-eclipse.data/5-warning.png)</center>
-
-You also have to trust the JCE Code Signing CA.
-
-<center>![Certificates](installation-in-eclipse.data/6-certificates.png)</center>
-
-After installation it is recommended to restart Eclipse.
-
-<!--
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_1.png)</center>
-
-Next, please specify the Apache Directory Studio update site. Click the **New Remote Site...** button. In the dialog input the following and press **OK**:
-
-Name: **Apache Directory Studio Update Site**
-URL: **[https://directory.apache.org/studio/update](http://directory.apache.org/studio/update)**
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_2.png)</center>
-
-Make sure the new update site is checked an press **Finish**.
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_3.png)</center>
-
-Now the install manager checks the update site and presents the search results. Select the feature you want to install and click **Next**.
-In our example, we have selected the LDAP Browser.
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_4.png)</center>
-
-Accept the license agreement, the Apache Directory Studio Browser is distributed under the Apache License, Version 2.0 and click **Next**.
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_5.png)</center>
-
-In the next dialog ensure that the Apache Directory Studio features you have choosen are selected (here the LDAP Browser) and click to **Finish**.
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_6.png)</center>
-
-Now the install manager loads the necessary files. When download is finished you have to verify the installation, please click to **Install**.
-
-<center>![Download](installation-in-eclipse.data/gettingstarted_install_7.png)</center>
-
-After installation it is recommended to restart the Eclipse workbench.
-
--->
diff --git a/content/studio/internationalization.mdtext b/content/studio/internationalization.mdtext
deleted file mode 100644
index ca10a41..0000000
--- a/content/studio/internationalization.mdtext
+++ /dev/null
@@ -1,49 +0,0 @@
-Title: Internationalization (i18n)
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Internationalization (i18n)
-
-It exists a good guide on internationalization (and externalizing string) at [How to Internationalize your Eclipse Plug-In](http://www.eclipse.org/articles/Article-Internationalization/how2I18n.html).
-
-## Translating the current code
-
-Translating Studio is not an simple task. There are many files to translate :
-
-* messages.properties
-* plugin.properties
-* help files
-* some other semi-random files ;)
-
-## When writing code...
-
-When doing the translation for a specific language please add in any case the messages_\{language\}.properties file of the language to the resource folder, even if it's empty (meaning all translations are taken from the messages.properties file). This will show to other developers, that you've thought about translation but no one was needed.
-
-Notes:
-
-* The message".properties files are located in the src/main/java/** folder (not following maven's philosophy) to be able to use Eclipse' 'Externalize Strings' wizard also later on. Following maven philosophy (*.properties in src/main/resources) the wizard doesn't finds the created properties files anymore.
-* To replace placeholders we use Eclipse's NLS.bind function, e.g.
-
- From messages.properties:
- EditAliasesDialog.TheAliasBegin=The alias "{0}" is invalid.
-
- Will look like in Java code:
- NLS.bind( Messages.getString( "EditAliasesDialog.TheAliasBegin" ), new String[] { alias } ) );
-
-Hints:
-
-* Using Eclipse' Property-Editor in the 'Properties' view will prevent you from getting into troubles with uncomment characters like e.g. the German 'Umlauts'
\ No newline at end of file
diff --git a/content/studio/news.mdtext b/content/studio/news.mdtext
deleted file mode 100644
index eb45e8f..0000000
--- a/content/studio/news.mdtext
+++ /dev/null
@@ -1,569 +0,0 @@
-# News
-
-<h2 class="news">Apache Directory Studio 2.0-0-M15 released <em>posted on April 18th, 2010</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M15, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M15 as a standalone RCP application for macOS, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using the update site: <https://directory.apache.org/studio/update/>
-
-Here are the release notes for Apache Directory Studio 2.0.0-M15:
-
-* [DIRSTUDIO-648](https://issues.apache.org/jira/browse/DIRSTUDIO-648) - Studio should support the Password Modify Extended Operation according RFC 3062
-* [DIRSTUDIO-1124](https://issues.apache.org/jira/browse/DIRSTUDIO-1124) - Fix the user guide that still show how to configure ApacheDS 1.5.x...
-* [DIRSTUDIO-1150](https://issues.apache.org/jira/browse/DIRSTUDIO-1150) - Add a configation option for the connection timeout
-* [DIRSTUDIO-1160](https://issues.apache.org/jira/browse/DIRSTUDIO-1160) - Attributes silently dropped and not imported when import LDIF and provider is Apache Directory LDAP API
-* [DIRSTUDIO-1165](https://issues.apache.org/jira/browse/DIRSTUDIO-1165) - Table Entry Editor - missing options following documentation
-* [DIRSTUDIO-1194](https://issues.apache.org/jira/browse/DIRSTUDIO-1194) - build looks outside of repo (extra "..")
-* [DIRSTUDIO-1195](https://issues.apache.org/jira/browse/DIRSTUDIO-1195) - LDIF editor, entry editor, search result edtor fail to open with ClassCastException
-* [DIRSTUDIO-1197](https://issues.apache.org/jira/browse/DIRSTUDIO-1197) - Connection Network check fails when using the LDAP API
-* [DIRSTUDIO-1199](https://issues.apache.org/jira/browse/DIRSTUDIO-1199) - 2.0.0-M14 doesn't display objectGUID / objectSid correctly
-* [DIRSTUDIO-1200](https://issues.apache.org/jira/browse/DIRSTUDIO-1200) - LDIF export fails with "Comparison method violates its general contract!"
-* [DIRSTUDIO-1202](https://issues.apache.org/jira/browse/DIRSTUDIO-1202) - Eclipse - No perspective to switch to.
-* [DIRSTUDIO-1203](https://issues.apache.org/jira/browse/DIRSTUDIO-1203) - testConnectFailures fails
-* [DIRSTUDIO-1204](https://issues.apache.org/jira/browse/DIRSTUDIO-1204) - ImageDialog can't read binary data
-* [DIRSTUDIO-1205](https://issues.apache.org/jira/browse/DIRSTUDIO-1205) - Which platforms does Studio work with TLS?
-* [DIRSTUDIO-1207](https://issues.apache.org/jira/browse/DIRSTUDIO-1207) - Remove JNDI provider and JNDI layer
-* [DIRSTUDIO-1210](https://issues.apache.org/jira/browse/DIRSTUDIO-1210) - mixed up documentation bug, in replication section of studio docs
-* [DIRSTUDIO-1211](https://issues.apache.org/jira/browse/DIRSTUDIO-1211) - UserCertificate attribute shown as Invalid Certificate if "Apache... Client API" is used
-* [DIRSTUDIO-1215](https://issues.apache.org/jira/browse/DIRSTUDIO-1215) - Getting invalid certificate for binary certificate field
-* [DIRSTUDIO-1217](https://issues.apache.org/jira/browse/DIRSTUDIO-1217) - Viewing entries broken with newer Eclipse versions
-* [DIRSTUDIO-1222](https://issues.apache.org/jira/browse/DIRSTUDIO-1222) - Update to Eclipse 2020-03
-* [DIRSTUDIO-1231](https://issues.apache.org/jira/browse/DIRSTUDIO-1231) - linux eclipse swt ClassCastException LDAPBrowser TableEditor
-* [DIRSTUDIO-1233](https://issues.apache.org/jira/browse/DIRSTUDIO-1233) - NullPointerException within class EntryEditor.java
-* [DIRSTUDIO-1234](https://issues.apache.org/jira/browse/DIRSTUDIO-1234) - Image Editor (still) does not work correctly
-* [DIRSTUDIO-1236](https://issues.apache.org/jira/browse/DIRSTUDIO-1236) - directory.apache.org refers to outdated "Mac OS X", which is now "macOS"
-* [DIRSTUDIO-1240](https://issues.apache.org/jira/browse/DIRSTUDIO-1240) - Directory Studio displays "Invalid Certificate" after userCertificate upload
-* [DIRSTUDIO-1243](https://issues.apache.org/jira/browse/DIRSTUDIO-1243) - Certificate Parsing Fails under Java 11
-* [DIRSTUDIO-1246](https://issues.apache.org/jira/browse/DIRSTUDIO-1246) - Attribute export is different in version M13 and M14
-* [DIRSTUDIO-1247](https://issues.apache.org/jira/browse/DIRSTUDIO-1247) - Fix high memory usage in clipboard code
-
-<h2 class="news">Apache Directory Studio 2.0-0-M14 released <em>posted on September 8th, 2018</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M14, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M14 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
-
-Backward incompatible changes:
-
-* Existing ApacheDS servers (2.0.0-M24) don't work after update
-* Manual step may be required to make password keystore accessible, see [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179).
-
-Here are the release notes for Apache Directory Studio 2.0.0-M14:
-
-* [DIRSTUDIO-987](https://issues.apache.org/jira/browse/DIRSTUDIO-987) - strange behaviour with multi-valued RDN
-* [DIRSTUDIO-1057](https://issues.apache.org/jira/browse/DIRSTUDIO-1057) - Update site doesn't work with https
-* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
-* [DIRSTUDIO-1148](https://issues.apache.org/jira/browse/DIRSTUDIO-1148) - IOConsole Updater - An internal error has occurred.Java heap space
-* [DIRSTUDIO-1151](https://issues.apache.org/jira/browse/DIRSTUDIO-1151) - DN with backslash not displayed
-* [DIRSTUDIO-1157](https://issues.apache.org/jira/browse/DIRSTUDIO-1157) - Values cannot be modified by text editor
-* [DIRSTUDIO-1163](https://issues.apache.org/jira/browse/DIRSTUDIO-1163) - Apache Directory Studio not starting on my MacBookPro running MacOS 10.13
-* [DIRSTUDIO-1166](https://issues.apache.org/jira/browse/DIRSTUDIO-1166) - Studio crashes frequently Ever since MacOS High Sierra upgrade
-* [DIRSTUDIO-1172](https://issues.apache.org/jira/browse/DIRSTUDIO-1172) - Studio doesn't display entries due to Invalid DN exception, but DN is compliant with RFC4514.
-* [DIRSTUDIO-1174](https://issues.apache.org/jira/browse/DIRSTUDIO-1174) - Directory Studio startup very slow due to schema LDIF processing
-* [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179) - java.io.IOException: Invalid secret key format after Java update
-* [DIRSTUDIO-1180](https://issues.apache.org/jira/browse/DIRSTUDIO-1180) - Value changed by Text Editor doesn't save
-* [DIRSTUDIO-1184](https://issues.apache.org/jira/browse/DIRSTUDIO-1184) - ClassDef not found for @PostConstruct and @PreDestroy for JDK >=9
-* [DIRSTUDIO-1185](https://issues.apache.org/jira/browse/DIRSTUDIO-1185) - OS reported defective Software and needs to be deleted
-* [DIRSTUDIO-1191](https://issues.apache.org/jira/browse/DIRSTUDIO-1191) - Apache Directory Studio (Version: 2.0.0.v20170904-M13) suddenly crashes while browsing in MacOS (10.13.6)
-* [DIRSTUDIO-1156](https://issues.apache.org/jira/browse/DIRSTUDIO-1156) - Text Editor usability improvements
-* [DIRSTUDIO-1175](https://issues.apache.org/jira/browse/DIRSTUDIO-1175) - Description for 1.3.18.0.2.32.102 - 1.3.18.0.2.32.104 missing
-* [DIRSTUDIO-1176](https://issues.apache.org/jira/browse/DIRSTUDIO-1176) - Sign dmg in MacOS release
-* [DIRSTUDIO-1177](https://issues.apache.org/jira/browse/DIRSTUDIO-1177) - Enhance default editor mappings for eDirectory/Identity Manager
-* [DIRSTUDIO-1186](https://issues.apache.org/jira/browse/DIRSTUDIO-1186) - Make Studio Java 11 ready
-* [DIRSTUDIO-1187](https://issues.apache.org/jira/browse/DIRSTUDIO-1187) - Disable JNDI connection provider for Java 9+
-* [DIRSTUDIO-1192](https://issues.apache.org/jira/browse/DIRSTUDIO-1192) - Change update site to use https
-* [DIRSTUDIO-1193](https://issues.apache.org/jira/browse/DIRSTUDIO-1193) - Cleanup documenation
-
-<h2 class="news">Apache Directory Studio 2.0-0-M13 released <em>posted on September 4th, 2017</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M13, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M13 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
-
-Here are the release notes for Apache Directory Studio 2.0.0-M13:
-
-* [DIRSTUDIO-1120](https://issues.apache.org/jira/browse/DIRSTUDIO-1120) - Checkbox active protocols
-* [DIRSTUDIO-1127](https://issues.apache.org/jira/browse/DIRSTUDIO-1127) - Configuration of Kerberos and ChangePassword port is not working
-* [DIRSTUDIO-1129](https://issues.apache.org/jira/browse/DIRSTUDIO-1129) - Referrals do not work in v2
-* [DIRSTUDIO-1130](https://issues.apache.org/jira/browse/DIRSTUDIO-1130) - Password from Keystore not used
-* [DIRSTUDIO-1133](https://issues.apache.org/jira/browse/DIRSTUDIO-1133) - Potential NPE issue
-* [DIRSTUDIO-1134](https://issues.apache.org/jira/browse/DIRSTUDIO-1134) - Boolean Attribute Addition with no value causes Directory Studio crash on Mac
-* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
-* [DIRSTUDIO-1143](https://issues.apache.org/jira/browse/DIRSTUDIO-1143) - Stack trace when saving configuration
-* [DIRSTUDIO-1147](https://issues.apache.org/jira/browse/DIRSTUDIO-1147) - bad links studio welcome overview page
-* [DIRSTUDIO-1131](https://issues.apache.org/jira/browse/DIRSTUDIO-1131) - Update for OIDDescriptions.properties
-* [DIRSTUDIO-1144](https://issues.apache.org/jira/browse/DIRSTUDIO-1144) - Upgrade to Eclipse Neon.3
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M12 released <em>posted on November 1st, 2016</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M12, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M12 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
-
-Here are the release notes for Apache Directory Studio 2.0.0-M12:
-
-* [DIRSTUDIO-738](https://issues.apache.org/jira/browse/DIRSTUDIO-738) - Modular Crypt Format Salts are incorrectly displayed
-* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
-* [DIRSTUDIO-1026](https://issues.apache.org/jira/browse/DIRSTUDIO-1026) - Searching for an AT or an OC using an alternate name does not find it
-* [DIRSTUDIO-1050](https://issues.apache.org/jira/browse/DIRSTUDIO-1050) - High CPU load when opening attribute editor with Eclipse Mars
-* [DIRSTUDIO-1075](https://issues.apache.org/jira/browse/DIRSTUDIO-1075) - ADS does not work with Oracle JRE 9
-* [DIRSTUDIO-1080](https://issues.apache.org/jira/browse/DIRSTUDIO-1080) - Unable to save Server-Configuration: ERR_55 Trying to remove an non-existant attribute: attributetype
-* [DIRSTUDIO-1081](https://issues.apache.org/jira/browse/DIRSTUDIO-1081) - Unable to save any configuration with apacheDS 2.0 and apache studio 2.0 M10
-* [DIRSTUDIO-1082](https://issues.apache.org/jira/browse/DIRSTUDIO-1082) - 'Save configuration' encountered a problem
-* [DIRSTUDIO-1083](https://issues.apache.org/jira/browse/DIRSTUDIO-1083) - Unable to save Configuration
-* [DIRSTUDIO-1085](https://issues.apache.org/jira/browse/DIRSTUDIO-1085) - "Show Default Schema" doesn't seem to do anything
-* [DIRSTUDIO-1090](https://issues.apache.org/jira/browse/DIRSTUDIO-1090) - Sorting by value not being applied
-* [DIRSTUDIO-1091](https://issues.apache.org/jira/browse/DIRSTUDIO-1091) - Apache DS M10 hangs at 14% when connectiing on Windows 10
-* [DIRSTUDIO-1095](https://issues.apache.org/jira/browse/DIRSTUDIO-1095) - Preferences : Connections : Certificates => java.lang.NullPointer
-* [DIRSTUDIO-1098](https://issues.apache.org/jira/browse/DIRSTUDIO-1098) - Refresh of entry causes: "Unhandled event loop exception"
-* [DIRSTUDIO-1100](https://issues.apache.org/jira/browse/DIRSTUDIO-1100) - Race condition.
-* [DIRSTUDIO-1101](https://issues.apache.org/jira/browse/DIRSTUDIO-1101) - Can't disable "Allow Anonymous Access"
-* [DIRSTUDIO-1108](https://issues.apache.org/jira/browse/DIRSTUDIO-1108) - Getting Invalid Certificate for userCertificate;binary entry when connecting with LDAPS, LDAP works fine
-* [DIRSTUDIO-1111](https://issues.apache.org/jira/browse/DIRSTUDIO-1111) - Unable to connect to LDS connected to Active Directory over SSL
-* [DIRSTUDIO-1112](https://issues.apache.org/jira/browse/DIRSTUDIO-1112) - NullPointerException when clicking a certificate on the Certificate Validation preference page
-* [DIRSTUDIO-1114](https://issues.apache.org/jira/browse/DIRSTUDIO-1114) - Bad encoding used in text editor for binary data
-* [DIRSTUDIO-1115](https://issues.apache.org/jira/browse/DIRSTUDIO-1115) - Value editor settings are not used and the menu displays wrong entries
-* [DIRSTUDIO-1116](https://issues.apache.org/jira/browse/DIRSTUDIO-1116) - Attribute not sorted alphabetically for multiple entries
-* [DIRSTUDIO-1121](https://issues.apache.org/jira/browse/DIRSTUDIO-1121) - Performance penalty as editor input is always set twice
-* [DIRSTUDIO-1118](https://issues.apache.org/jira/browse/DIRSTUDIO-1118) - Add menu item to repair ApacheDS partitions
-* [DIRSTUDIO-1093](https://issues.apache.org/jira/browse/DIRSTUDIO-1093) - Upgrade to Eclipse Mars.2
-* [DIRSTUDIO-1022](https://issues.apache.org/jira/browse/DIRSTUDIO-1022) - Installers
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M10 released <em>posted on January 2nd, 2016</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M10, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M10 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
-
-Note: This version fixes a security issue (CVE-2015-5349) discovered by Muhammad Shahmeer Amir. The CSV export didn’t escape the fields properly. Malicious users can put specially crafted values into the LDAP server. When a user exports that data into CSV formatted file, and subsequently opens it with a spreadsheet application, the data is interpreted as a formula and executed. Users should upgrade to Apache Directory Studio 2.0.0-M10.
-
-Here are the release notes for Apache Directory Studio 2.0.0-M10:
-
-* CVE-2015-5349 - Command Injection through LDAP CSV export
-* [DIRSTUDIO-1060](https://issues.apache.org/jira/browse/DIRSTUDIO-1060) - Exported OpenLDAP schema has syntax errors
-* [DIRSTUDIO-1061](https://issues.apache.org/jira/browse/DIRSTUDIO-1061) - RawSchemaDefinition always shows single hyphen/dash (empty) for attributes or classes
-* [DIRSTUDIO-1068](https://issues.apache.org/jira/browse/DIRSTUDIO-1068) - Bundles are not resolved on Eclipse Mars
-* [DIRSTUDIO-1077](https://issues.apache.org/jira/browse/DIRSTUDIO-1077) - Logging for embedded ApacheDS servers broken (log4j.properties is deleted)
-* [DIRSTUDIO-1079](https://issues.apache.org/jira/browse/DIRSTUDIO-1079) - Creating a new entry using an existing one fails because teh entryCSN at is being copied
-* [DIRSTUDIO-1065](https://issues.apache.org/jira/browse/DIRSTUDIO-1065) - Have a better error message when the java version is wrong
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M9 released <em>posted on June 11th, 2015</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M9, the ninth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M9 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
-
-Here are a few highlights of this new version:
-
-* The RCP application is based on the latest version of Eclipse (4.4 aka Luna).
-* Changed the update site to 'p2' format.
-* Added support for ApacheDS 2.0.0-M20 configuration and integrated it in the LDAP Servers plugin.
-
-Here are the release notes for Apache Directory Studio 2.0.0-M9:
-
-Bug
-
-* [DIRSTUDIO-815](https://issues.apache.org/jira/browse/DIRSTUDIO-815) - Tiny translation error [DE]
-* [DIRSTUDIO-819](https://issues.apache.org/jira/browse/DIRSTUDIO-819) - Cannot open entries with DNs with UTF8 characters (Active Directory)
-* [DIRSTUDIO-836](https://issues.apache.org/jira/browse/DIRSTUDIO-836) - Search for attributes with underscore "_" in attribute name eg. attr_name is not possible
-* [DIRSTUDIO-855](https://issues.apache.org/jira/browse/DIRSTUDIO-855) - Some logical site artifact paths do not exist in site.xml / Apache Directory Studio 2.X Update Site / Nexus P2 Update Site Proxy
-* [DIRSTUDIO-860](https://issues.apache.org/jira/browse/DIRSTUDIO-860) - Apache Directory Studio Update Site ZIP Archive not installable in Eclipse Indigo
-* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
-* [DIRSTUDIO-922](https://issues.apache.org/jira/browse/DIRSTUDIO-922) - Eclipse plugin for version 2.0.0-M7 not installing correctly
-* [DIRSTUDIO-932](https://issues.apache.org/jira/browse/DIRSTUDIO-932) - NPE while importing an ApacheDS 2.0 configuration from within the editor
-* [DIRSTUDIO-934](https://issues.apache.org/jira/browse/DIRSTUDIO-934) - Exporting the configuration from the ApacheDS 2.0 Configuration Editor should not change the input
-* [DIRSTUDIO-938](https://issues.apache.org/jira/browse/DIRSTUDIO-938) - LDAP Browser shows non ascii symbols as escaped
-* [DIRSTUDIO-948](https://issues.apache.org/jira/browse/DIRSTUDIO-948) - Sorting search results does not work with over 1000 results
-* [DIRSTUDIO-950](https://issues.apache.org/jira/browse/DIRSTUDIO-950) - Add support for PKCS5S2 hashing mechanism in Password Dialog
-* [DIRSTUDIO-955](https://issues.apache.org/jira/browse/DIRSTUDIO-955) - Quick search one/subtree scope button is not sticky/always defaults to "one" when starting DS
-* [DIRSTUDIO-958](https://issues.apache.org/jira/browse/DIRSTUDIO-958) - Exporting schemas as OpenLDAP files outputs entries in random order
-* [DIRSTUDIO-959](https://issues.apache.org/jira/browse/DIRSTUDIO-959) - Exporting schemas as OpenLDAP files does not use proper escaping
-* [DIRSTUDIO-961](https://issues.apache.org/jira/browse/DIRSTUDIO-961) - Crash during loading after recent uplate of libraries on Ubuntu
-* [DIRSTUDIO-962](https://issues.apache.org/jira/browse/DIRSTUDIO-962) - Crash at startup : gtk_widget_get_tooltip_text
-* [DIRSTUDIO-963](https://issues.apache.org/jira/browse/DIRSTUDIO-963) - Why UTF-8 is escaped in DN strings since 2.0.0?
-* [DIRSTUDIO-964](https://issues.apache.org/jira/browse/DIRSTUDIO-964) - Fonts look ugly on Mac with Retina Display
-* [DIRSTUDIO-965](https://issues.apache.org/jira/browse/DIRSTUDIO-965) - SIGSEGV on Startup
-* [DIRSTUDIO-966](https://issues.apache.org/jira/browse/DIRSTUDIO-966) - NullPointerException after expanding LDAP tree and "Error notifying a preference change listener" in "attr/val quick filter"
-* [DIRSTUDIO-967](https://issues.apache.org/jira/browse/DIRSTUDIO-967) - Timeout occurs during LDAP search
-* [DIRSTUDIO-970](https://issues.apache.org/jira/browse/DIRSTUDIO-970) - gui quit whithout any prompt
-* [DIRSTUDIO-979](https://issues.apache.org/jira/browse/DIRSTUDIO-979) - Crash with port already in use issues
-* [DIRSTUDIO-983](https://issues.apache.org/jira/browse/DIRSTUDIO-983) - Package org.eclipse.update has been removed in Eclipse 4.2
-* [DIRSTUDIO-988](https://issues.apache.org/jira/browse/DIRSTUDIO-988) - Studio plugins don't work in Eclipse Luna
-* [DIRSTUDIO-993](https://issues.apache.org/jira/browse/DIRSTUDIO-993) - Directory studio stops after a few commands issued
-* [DIRSTUDIO-999](https://issues.apache.org/jira/browse/DIRSTUDIO-999) - Fails to start after upgrade to CentOS 6.6/cairo 1.8.8-3.1
-* [DIRSTUDIO-1000](https://issues.apache.org/jira/browse/DIRSTUDIO-1000) - LDAP perspective not opening on STS 3.6.2
-* [DIRSTUDIO-1001](https://issues.apache.org/jira/browse/DIRSTUDIO-1001) - Unable to install in Luna
-* [DIRSTUDIO-1012](https://issues.apache.org/jira/browse/DIRSTUDIO-1012) - Wrong USAGE for 9 passwordPolicy attributes
-* [DIRSTUDIO-1014](https://issues.apache.org/jira/browse/DIRSTUDIO-1014) - Cannot remove the 'finished operations' in the progress pane
-* [DIRSTUDIO-1018](https://issues.apache.org/jira/browse/DIRSTUDIO-1018) - Adding a new LDIF file directly fails with an error "can't find IDfind.ext"
-* [DIRSTUDIO-1020](https://issues.apache.org/jira/browse/DIRSTUDIO-1020) - Fail to launch
-* [DIRSTUDIO-1038](https://issues.apache.org/jira/browse/DIRSTUDIO-1038) - Dispose the various org.eclipse.swt.graphics.* objects we use
-* [DIRSTUDIO-1039](https://issues.apache.org/jira/browse/DIRSTUDIO-1039) - SWTBot test suite hangs on opening connection
-* [DIRSTUDIO-1040](https://issues.apache.org/jira/browse/DIRSTUDIO-1040) - Job found still running after platform shutdown
-* [DIRSTUDIO-1042](https://issues.apache.org/jira/browse/DIRSTUDIO-1042) - Fix logging system
-* [DIRSTUDIO-1043](https://issues.apache.org/jira/browse/DIRSTUDIO-1043) - First open of LDIF editor fails
-* [DIRSTUDIO-1045](https://issues.apache.org/jira/browse/DIRSTUDIO-1045) - New Connection problem - ERR_04269 ATTRIBUTE_TYPE for OID ads-basedn does not exist
-* [DIRSTUDIO-1047](https://issues.apache.org/jira/browse/DIRSTUDIO-1047) - No BrowserViewUniversalListener.connectionOpened null checks
-
-Improvement
-
-* [DIRSTUDIO-425](https://issues.apache.org/jira/browse/DIRSTUDIO-425) - Please provide the eclipse update site as zipfile
-* [DIRSTUDIO-937](https://issues.apache.org/jira/browse/DIRSTUDIO-937) - No password confirmation while changing it
-* [DIRSTUDIO-940](https://issues.apache.org/jira/browse/DIRSTUDIO-940) - Have schema editor populate creatorsName attribute for new objects (needed by ApacheDS)
-* [DIRSTUDIO-941](https://issues.apache.org/jira/browse/DIRSTUDIO-941) - Friendly name for attribute syntax not shown when creating new attribute
-* [DIRSTUDIO-942](https://issues.apache.org/jira/browse/DIRSTUDIO-942) - Description for OID 1.3.18.0.2.32.99 missing
-* [DIRSTUDIO-980](https://issues.apache.org/jira/browse/DIRSTUDIO-980) - Make the new schema element visible withoit needing to click refresh in an obscure popup...
-* [DIRSTUDIO-985](https://issues.apache.org/jira/browse/DIRSTUDIO-985) - member;Range
-* [DIRSTUDIO-1003](https://issues.apache.org/jira/browse/DIRSTUDIO-1003) - The "Open Configuration" function is broken and doesn't work
-* [DIRSTUDIO-1041](https://issues.apache.org/jira/browse/DIRSTUDIO-1041) - Headless run of SWTBot tests
-
-New Feature
-
-* [DIRSTUDIO-756](https://issues.apache.org/jira/browse/DIRSTUDIO-756) - Provide a P2 repository
-* [DIRSTUDIO-949](https://issues.apache.org/jira/browse/DIRSTUDIO-949) - Add the ability to configure a Mavibot partition
-
-Task
-
-* [DIRSTUDIO-646](https://issues.apache.org/jira/browse/DIRSTUDIO-646) - Exclude ".gitignore" from source distribution
-* [DIRSTUDIO-995](https://issues.apache.org/jira/browse/DIRSTUDIO-995) - Migrate build system to use Tycho
-* [DIRSTUDIO-1005](https://issues.apache.org/jira/browse/DIRSTUDIO-1005) - Cleanup ApacheDS plugins
-* [DIRSTUDIO-1006](https://issues.apache.org/jira/browse/DIRSTUDIO-1006) - Fix ODF export
-* [DIRSTUDIO-1007](https://issues.apache.org/jira/browse/DIRSTUDIO-1007) - Replace org.eclipse.update.*
-* [DIRSTUDIO-1009](https://issues.apache.org/jira/browse/DIRSTUDIO-1009) - Check legal files
-* [DIRSTUDIO-1010](https://issues.apache.org/jira/browse/DIRSTUDIO-1010) - Hide unwanted UI items contributed by org.eclipse.* plugins
-* [DIRSTUDIO-1016](https://issues.apache.org/jira/browse/DIRSTUDIO-1016) - Adapt ApacheDS plugins to new configuration scheme
-* [DIRSTUDIO-1051](https://issues.apache.org/jira/browse/DIRSTUDIO-1051) - Update developer documentation
-* [DIRSTUDIO-1021](https://issues.apache.org/jira/browse/DIRSTUDIO-1021) - Enable tests
-* [DIRSTUDIO-1023](https://issues.apache.org/jira/browse/DIRSTUDIO-1023) - Generate P2 repository / update site
-* [DIRSTUDIO-1024](https://issues.apache.org/jira/browse/DIRSTUDIO-1024) - Define release process
-* [DIRSTUDIO-1025](https://issues.apache.org/jira/browse/DIRSTUDIO-1025) - Cleanup after Tycho Migration
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M8 released <em>posted on July 4th, 2013</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M8, the eighth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M8 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are a few highlights of this new version:
-
-* Fixed major issues related to the Schema Editor and object classes not displaying properly.
-* Fixed the support for SSHA2 in Password Editor.
-* Added support for ApacheDS 2.0.0-M14 configuration and integrated it in the LDAP Servers plugin.
-
-Here are the release notes for Apache Directory Studio 2.0.0-M8:
-
-Bug
-
-* [DIRSTUDIO-788](https://issues.apache.org/jira/browse/DIRSTUDIO-788) - Date and Time editor incorrect time format for eDirectory
-* [DIRSTUDIO-792](https://issues.apache.org/jira/browse/DIRSTUDIO-792) - Batch operation Next button inactive
-* [DIRSTUDIO-868](https://issues.apache.org/jira/browse/DIRSTUDIO-868) - Do not send an unbind request if the authentication fails
-* [DIRSTUDIO-911](https://issues.apache.org/jira/browse/DIRSTUDIO-911) - Object classes not visible within Schema View of OS X
-* [DIRSTUDIO-912](https://issues.apache.org/jira/browse/DIRSTUDIO-912) - No connection pre-selected when DIT, Searches or Bookmarks is selected in the LDAP Brower view and the wizard is accessed via 'File' > 'Import' menu
-* [DIRSTUDIO-917](https://issues.apache.org/jira/browse/DIRSTUDIO-917) - Exporting for ApacheDS an AT with a not-set syntax length results in 'm-length: 0' output in the resulting LDIF file
-* [DIRSTUDIO-918](https://issues.apache.org/jira/browse/DIRSTUDIO-918) - Wrong error message in Import LDIF wizard when no connection is selected
-* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
-* [DIRSTUDIO-921](https://issues.apache.org/jira/browse/DIRSTUDIO-921) - Schema Pane does not refresh when creating a new object class
-* [DIRSTUDIO-927](https://issues.apache.org/jira/browse/DIRSTUDIO-927) - The "options... Advanced Options Configuration" link on the "Overview" age does not work
-
-Improvement
-
-* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
-* [DIRSTUDIO-929](https://issues.apache.org/jira/browse/DIRSTUDIO-929) - Improve Hex Value Editor to allow text edition
-
-Task
-
-* [DIRSTUDIO-925](https://issues.apache.org/jira/browse/DIRSTUDIO-925) - Add new mandatory and optional attributes introduced for the 'ads-delegatingAuthenticator' object class
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M7 released <em>posted on May 31rd, 2013</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M7, the seventh milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M7 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are a few highlights of this new version:
-
-* A major new addition is the ability to store connection passwords in a password-protected keystore, rather than in plain text on disk.
-* The LDAP Servers and ApacheDS 2.0 Configuration plugins have been updated with the latest and greatest ApacheDS (version 2.0.0-M12).
-* The update site problem where Apache Directory Studio fails to install correctly has been fixed.
-
-Here are the release notes for Apache Directory Studio 2.0.0-M7:
-
-Bug
-
-* [DIRSTUDIO-865](https://issues.apache.org/jira/browse/DIRSTUDIO-865) - NullPointerException thrown when connecting to Domino 8.5.2FP3 LDAP
-* [DIRSTUDIO-888](https://issues.apache.org/jira/browse/DIRSTUDIO-888) - Improve editing of boolean values to allow lowercased values and shortcuts
-* [DIRSTUDIO-891](https://issues.apache.org/jira/browse/DIRSTUDIO-891) - A schema project containing a reference to a deleted connection makes the perspective completely unusable
-* [DIRSTUDIO-892](https://issues.apache.org/jira/browse/DIRSTUDIO-892) - Unable to import ApacheDS core schemas
-* [DIRSTUDIO-893](https://issues.apache.org/jira/browse/DIRSTUDIO-893) - ConcurrentModificationException thrown while deleting multiple schema elements
-* [DIRSTUDIO-899](https://issues.apache.org/jira/browse/DIRSTUDIO-899) - Unable to install Studio using the update site: "Missing requirement: ApacheDS Core 2.0.0.M11"
-* [DIRSTUDIO-902](https://issues.apache.org/jira/browse/DIRSTUDIO-902) - Unusable configuration of the HashingPasswordInterceptor with recent milestone of ApacheDS 2.0
-* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
-* [DIRSTUDIO-904](https://issues.apache.org/jira/browse/DIRSTUDIO-904) - Directory Studio create files with french "accents"
-* [DIRSTUDIO-905](https://issues.apache.org/jira/browse/DIRSTUDIO-905) - IOException (Document is closed) thrown when quitting Apache Directory Studio with an LDAP Server running
-* [DIRSTUDIO-907](https://issues.apache.org/jira/browse/DIRSTUDIO-907) - ERR_04269 ATTRIBUTE_TYPE for OID ads-replpingersleep does not exist!
-* [DIRSTUDIO-916](https://issues.apache.org/jira/browse/DIRSTUDIO-916) - Can not open configuration for fresh installed ApacheDS and Studio
-
-Improvement
-
-* [DIRSTUDIO-857](https://issues.apache.org/jira/browse/DIRSTUDIO-857) - Add support for PasswordPolicy configuration
-* [DIRSTUDIO-884](https://issues.apache.org/jira/browse/DIRSTUDIO-884) - Add new MessageDigest algorithm for passwords
-* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
-* [DIRSTUDIO-895](https://issues.apache.org/jira/browse/DIRSTUDIO-895) - Add a 'Show password' checkbox to the CredentialsDialog used to ask the connection's password when it's not saved
-* [DIRSTUDIO-897](https://issues.apache.org/jira/browse/DIRSTUDIO-897) - Active Directory attribute type 'lockoutTime' should be linked with the 'MS AD Date and Time Editor'
-* [DIRSTUDIO-898](https://issues.apache.org/jira/browse/DIRSTUDIO-898) - Add case-insensitive support for the attribute types aliases in the 'Value Editors' preferences page
-
-New Feature
-
-* [DIRSTUDIO-901](https://issues.apache.org/jira/browse/DIRSTUDIO-901) - Add the ability to store connection passwords in a password-protected keystore
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M6 released <em>posted on March 14th, 2013</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M6, the sixth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M6 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are a few highlights of this new version:
-
-* The integrated Apache Directory LDAP API has been upgraded to the latest version (1.0.0-M16).
-* The LDAP Servers plugin has been updated with the latest and greatest ApacheDS (version 2.0.0-M11).
-
-Here are the release notes for Apache Directory Studio 2.0.0-M6:
-
-Bug
-
-* [DIRSTUDIO-861](https://issues.apache.org/jira/browse/DIRSTUDIO-861) - Errors with DNs containing non-ASCII values on Active Directory
-* [DIRSTUDIO-873](https://issues.apache.org/jira/browse/DIRSTUDIO-873) - Kerberos encryption types are not saved correctly
-* [DIRSTUDIO-876](https://issues.apache.org/jira/browse/DIRSTUDIO-876) - Integer Editor should focus on the value text field upon opening
-* [DIRSTUDIO-878](https://issues.apache.org/jira/browse/DIRSTUDIO-878) - Generation of the user guides as PDF and standalone HTML is broken
-* [DIRSTUDIO-879](https://issues.apache.org/jira/browse/DIRSTUDIO-879) - Flags for an attribute type in the Schema Browser are not correctly rendered on OS X
-* [DIRSTUDIO-889](https://issues.apache.org/jira/browse/DIRSTUDIO-889) - Error "Changes could not be saved to the connection" when saving server configuration on stock server and studio
-
-Improvement
-
-* [DIRSTUDIO-872](https://issues.apache.org/jira/browse/DIRSTUDIO-872) - The list of possible Kerberos encryption type should be available
-
-Task
-
-* [DIRSTUDIO-874](https://issues.apache.org/jira/browse/DIRSTUDIO-874) - Remove all ApacheDS and Apache Mina libraries plugins from trunk in '/libraries'
-* [DIRSTUDIO-877](https://issues.apache.org/jira/browse/DIRSTUDIO-877) - Update ApacheDS schema files to the latest version
-* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M5 released <em>posted on February 12th, 2013</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M5, the fifth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M5 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are the release notes for Apache Directory Studio 2.0.0-M5:
-
-* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
-
-
-<h2 class="news">Apache Directory Studio 2.0-0-M4 released <em>posted on January 30th, 2013</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M4, the fourth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M4 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can also install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are a few highlights of this new version:
-
-* The integrated Apache Directory LDAP API has been upgraded to the latest version (1.0.0-M15), fixing bugs and bringing performances improvements.
-* The LDAP Servers plugin has been updated with the latest and greatest ApacheDS (version 2.0.0-M10), which supports Multi-Master Replication.
-* The ApacheDS 2.0 Configuration plugin has also been updated to support ApacheDS 2.0.0-M10 and offers configuration for replication.
-* The RCP application is based on the latest version of Eclipse (3.8.1).
-* There are a lot more new additions, improvements and bug fixes (see release notes).
-
-Here are the release notes for Apache Directory Studio 2.0.0-M4:
-
-Bug
-
-* [DIRSTUDIO-775](https://issues.apache.org/jira/browse/DIRSTUDIO-775) - Display issues in Image Editor
-* [DIRSTUDIO-795](https://issues.apache.org/jira/browse/DIRSTUDIO-795) - Unable to delete multiple schema elements (attribute type, object class or schema)
-* [DIRSTUDIO-796](https://issues.apache.org/jira/browse/DIRSTUDIO-796) - Unable to open multiple schema elements (attribute type, object class or schema)
-* [DIRSTUDIO-799](https://issues.apache.org/jira/browse/DIRSTUDIO-799) - Unable to move object with Apache LDAP API
-* [DIRSTUDIO-802](https://issues.apache.org/jira/browse/DIRSTUDIO-802) - Confusion between ISO-8859-1 and UTF-8 in the Encode/Decode dialog
-* [DIRSTUDIO-808](https://issues.apache.org/jira/browse/DIRSTUDIO-808) - "Update existing entries" checkbox in "LDIF Import" wizard fails to work with the Apache Directory LDAP API
-* [DIRSTUDIO-810](https://issues.apache.org/jira/browse/DIRSTUDIO-810) - Fullscreen plugin is /not/ under the Apache license
-* [DIRSTUDIO-812](https://issues.apache.org/jira/browse/DIRSTUDIO-812) - Error while performing search
-* [DIRSTUDIO-822](https://issues.apache.org/jira/browse/DIRSTUDIO-822) - Typo in one of the default indexed attributes when creating a new partition in the ApacheDS Configuration Editor v2
-* [DIRSTUDIO-823](https://issues.apache.org/jira/browse/DIRSTUDIO-823) - Integer Value Editor only selects values of Java Integer magnitude
-* [DIRSTUDIO-827](https://issues.apache.org/jira/browse/DIRSTUDIO-827) - Quick Search is not displayed when folding is activated
-* [DIRSTUDIO-829](https://issues.apache.org/jira/browse/DIRSTUDIO-829) - NPE when trying to add a 'subtreeSpecification' value
-* [DIRSTUDIO-833](https://issues.apache.org/jira/browse/DIRSTUDIO-833) - NPE in ACI Item Editor when adding AttributeType permission
-* [DIRSTUDIO-834](https://issues.apache.org/jira/browse/DIRSTUDIO-834) - Unable to edit subtreeSpecification
-* [DIRSTUDIO-835](https://issues.apache.org/jira/browse/DIRSTUDIO-835) - Display issues in the Password Editor on OS X
-* [DIRSTUDIO-840](https://issues.apache.org/jira/browse/DIRSTUDIO-840) - Help system is not working
-* [DIRSTUDIO-850](https://issues.apache.org/jira/browse/DIRSTUDIO-850) - The "Remove" button for mandatory ATs in the OC Editor does nothing
-* [DIRSTUDIO-858](https://issues.apache.org/jira/browse/DIRSTUDIO-858) - The Entry Editor's Outline view should be unavailable when the selection isn't an entry or a bookmark
-* [DIRSTUDIO-864](https://issues.apache.org/jira/browse/DIRSTUDIO-864) - Error message appears: "ERR_04269 ATTRIBUTE_TYPE for OID ads-replenabled does not exist!" when trying to open configuration
-
-Improvement
-
-* [DIRSTUDIO-657](https://issues.apache.org/jira/browse/DIRSTUDIO-657) - Add options to output the resulting LDIF of a batch operation to a file or to the clipboard
-* [DIRSTUDIO-793](https://issues.apache.org/jira/browse/DIRSTUDIO-793) - Batch Operation define modification slowdown, needs scrollbar
-* [DIRSTUDIO-797](https://issues.apache.org/jira/browse/DIRSTUDIO-797) - Two different 'HistoryUtils' classes should be merged into a single one in 'common.ui' plugin
-* [DIRSTUDIO-809](https://issues.apache.org/jira/browse/DIRSTUDIO-809) - Improve the behavior of the "Execute LDIF" action of the LDIF Editor
-* [DIRSTUDIO-813](https://issues.apache.org/jira/browse/DIRSTUDIO-813) - Add default value editors for eDirectory
-* [DIRSTUDIO-828](https://issues.apache.org/jira/browse/DIRSTUDIO-828) - The Quick Search context menu item could reuse the currently selected entry in the Browser view as search base
-* [DIRSTUDIO-838](https://issues.apache.org/jira/browse/DIRSTUDIO-838) - Add support for configuring the context entry of a partition in the ApacheDS 2.0 Configuration Editor
-* [DIRSTUDIO-841](https://issues.apache.org/jira/browse/DIRSTUDIO-841) - When creating a connection from an existing ApacheDS 2.0 server, the "Open Configuration" item is not available
-* [DIRSTUDIO-851](https://issues.apache.org/jira/browse/DIRSTUDIO-851) - Add a hint in the Connection Properties dialog about Certifcate Validation with a link to the corresponding preference page
-* [DIRSTUDIO-852](https://issues.apache.org/jira/browse/DIRSTUDIO-852) - Display issues in the Certificate Validation preference page on OS X
-
-New Feature
-
-* [DIRSTUDIO-804](https://issues.apache.org/jira/browse/DIRSTUDIO-804) - Interpret Active Directory Timestamps
-* [DIRSTUDIO-806](https://issues.apache.org/jira/browse/DIRSTUDIO-806) - Editing Multiple Directory Objects at once
-* [DIRSTUDIO-843](https://issues.apache.org/jira/browse/DIRSTUDIO-843) - There is no place we can configure the KeyStore to use while configuring an ApacheDS server
-
-Task
-
-* [DIRSTUDIO-736](https://issues.apache.org/jira/browse/DIRSTUDIO-736) - Implement the "Execute Online" button of the BatchOperationWizard
-* [DIRSTUDIO-791](https://issues.apache.org/jira/browse/DIRSTUDIO-791) - Update supportedControl and supportedExtension descriptions
-* [DIRSTUDIO-811](https://issues.apache.org/jira/browse/DIRSTUDIO-811) - Review and remove any source file under Eclipse Public License (EPL) v 1.0
-* [DIRSTUDIO-816](https://issues.apache.org/jira/browse/DIRSTUDIO-816) - Update OIDs to Descriptions properties file
-* [DIRSTUDIO-839](https://issues.apache.org/jira/browse/DIRSTUDIO-839) - Update Eclipse dependencies to version 3.8.1
-
-
-<h2 class="news">Apache Directory Studio 2.0.0-M3 released <em>posted on March 12, 2012</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M3, the third milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M3 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here is the release note for Apache Directory Studio 2.0.0-M3:
-
-Bug
-
-* [DIRSTUDIO-764](https://issues.apache.org/jira/browse/DIRSTUDIO-764) - Image Editor does not work correctly
-* [DIRSTUDIO-765](https://issues.apache.org/jira/browse/DIRSTUDIO-765) - Can not export DSML
-* [DIRSTUDIO-767](https://issues.apache.org/jira/browse/DIRSTUDIO-767) - All attribute names are lowercase when using Apache Directory LDAP Client API
-* [DIRSTUDIO-768](https://issues.apache.org/jira/browse/DIRSTUDIO-768) - Error while searching using a filter on a binary attribute
-* [DIRSTUDIO-769](https://issues.apache.org/jira/browse/DIRSTUDIO-769) - Alt-S shortkey does not work in Search Dialog
-* [DIRSTUDIO-770](https://issues.apache.org/jira/browse/DIRSTUDIO-770) - Typos in french translation
-* [DIRSTUDIO-771](https://issues.apache.org/jira/browse/DIRSTUDIO-771) - Searches are not saved when closing Studio 2.0 M1/M2
-* [DIRSTUDIO-772](https://issues.apache.org/jira/browse/DIRSTUDIO-772) - Entry UUID Editor can't display eDirectory GUID
-* [DIRSTUDIO-773](https://issues.apache.org/jira/browse/DIRSTUDIO-773) - IllegalArgumentException thrown when copying the RootDSE
-* [DIRSTUDIO-776](https://issues.apache.org/jira/browse/DIRSTUDIO-776) - Misleading title for action "Open 'Search Result'/'Bookmark'/'Entry' in DIT" in LDAP Browser view context menu
-* [DIRSTUDIO-777](https://issues.apache.org/jira/browse/DIRSTUDIO-777) - Renaming entry fails when using Apache Directory LDAP API
-* [DIRSTUDIO-778](https://issues.apache.org/jira/browse/DIRSTUDIO-778) - NullPointerException when refreshing a TableEntryEditor
-* [DIRSTUDIO-779](https://issues.apache.org/jira/browse/DIRSTUDIO-779) - Label for folded attributes in TableEntryEditor is not updated when quick filter is used
-* [DIRSTUDIO-783](https://issues.apache.org/jira/browse/DIRSTUDIO-783) - The 'Rename Entry' dialog doesn't resize automatically when adding or removing RDN parts
-
-Improvement
-
-* [DIRSTUDIO-713](https://issues.apache.org/jira/browse/DIRSTUDIO-713) - Improve the 'Show in' sub-menu of the TableEntryEditor
-* [DIRSTUDIO-780](https://issues.apache.org/jira/browse/DIRSTUDIO-780) - Allow Apache Directory Studio to be pinned to Windows 7's taskbar
-* [DIRSTUDIO-782](https://issues.apache.org/jira/browse/DIRSTUDIO-782) - Improve Windows installer with JRE detection and creation of 'Apache Directory Studio.ini' file
-* [DIRSTUDIO-784](https://issues.apache.org/jira/browse/DIRSTUDIO-784) - Add the ability to sort searches in the LDAP Browser view
-* [DIRSTUDIO-785](https://issues.apache.org/jira/browse/DIRSTUDIO-785) - Add the ability to sort bookmarks in the LDAP Browser view
-
-
-Click here to view the full [Release Notes](changelog.html).
-
-
-<h2 class="news">Apache Directory Studio 2.0.0-M2 released <em>posted on February 07, 2012</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M2, the second milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M2as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are the release notes for Apache Directory Studio 2.0.0-M2:
-
-* [DIRSTUDIO-630](https://issues.apache.org/jira/browse/DIRSTUDIO-630) - Importing a Schema project twice shouldn't be possible
-* [DIRSTUDIO-733](https://issues.apache.org/jira/browse/DIRSTUDIO-733) - Error while reading RootDSE on Sun One directory server
-* [DIRSTUDIO-739](https://issues.apache.org/jira/browse/DIRSTUDIO-739) - Using 'Quick Search' in the DN editor while editing some object cancels editing and jumps to 'Quick Search' in the main window
-* [DIRSTUDIO-759](https://issues.apache.org/jira/browse/DIRSTUDIO-759) - Exit confirmation dialog is showed twice when quitting the application by closing the window on Linux and Windows
-* [DIRSTUDIO-760](https://issues.apache.org/jira/browse/DIRSTUDIO-760) - Unable to bind on an Active Directory server using 'domain\userid'
-* [DIRSTUDIO-763](https://issues.apache.org/jira/browse/DIRSTUDIO-763) - Typo in some English error messages ('occured' instead of 'occurred')
-
-Click here to view the full [Release Notes](changelog.html).
-
-
-<h2 class="news">Apache Directory Studio 2.0.0-M1 released <em>posted on January 18, 2012</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M1, a first milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 2.0.0-M1 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
-
-You can install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/2.x/>
-
-Here are a few highlights of this new version:
-
-* The Apache Directory LDAP API has now been integrated in Apache Directory Studio:
- * it is used as default network provider (as a replacement for JNDI - which is still selectable)
- * and also in the Schema Editor plugin for checking the schema inconsistencies
-* A new LDAP Servers plugin has been introduced and replaces the ApacheDS plugin:
- * it provides an open way to include LDAP Server adapters which allows you create and run a new LDAP Server within seconds
- * LDAP Server adapters are provided for all ApacheDS versions from 1.5.3 to the latest milestone 2.0 M4).
-* A new ApacheDS 2.0 Configuration plugin takes care of editing the configuration of a 2.0 ApacheDS instance:
- * it reads the configuration from the LDIF configuration file on the filesystem
- * it can also read the configuration via LDAP using a connection defined in the LDAP Browser
-* The RCP application is based on the latest version of Eclipse (3.7.1):
- * it is provided in two versions (32 bit and 64 bit) for each major operating system (Mac OS X, Linux & Windows)
-* There are a lot more new additions, improvements and bug fixes (see release notes)
-
-Click here to view the [Release Notes](changelog.html).
-
-
-<h2 class="news">Apache Directory Studio 1.5.3 released <em>posted on April 05, 2010</em></h2>
-
-The Apache Directory Team is pleased to announce the release of Apache Directory Studio 1.5.3, a bug fix and enhancement update of its Eclipse based LDAP Browser and Directory client.
-
-You can download Apache Directory Studio 1.5.3 as a standalone RCP application for Mac OS X, Linux and Windows here:
-<https://directory.apache.org/studio/downloads.html>
-
-You can install it directly in Eclipse using this update site:
-<https://directory.apache.org/studio/update/1.5.3.v20100330/>
-
-Here are a few highlights of this new version:
-
-* fixed a critical bug that makes Studio gone into an endless event loop
-* Apache DS plugin comes with the latest 1.5.6 version of Apache DS
-* Apache DS Configuration plugin can now handle correctly the latest 1.5.6 version of Apache DS server.xml file
-* editors now warns the user if they contain modifications and the input is changed
-* various improvements in certificates handling
-* added a new 'Delete All' menu item for entries, bookmarks and searches
-
-Click here to view the [Release Notes](changelog.html).
diff --git a/content/studio/screenshots.mdtext b/content/studio/screenshots.mdtext
deleted file mode 100644
index 399099f..0000000
--- a/content/studio/screenshots.mdtext
+++ /dev/null
@@ -1,227 +0,0 @@
-Title: Screenshots
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Screenshots
-
-<script src="static/js/FancyZoom.js" type="text/javascript"></script>
-<script src="static/js/FancyZoomHTML.js" type="text/javascript"></script>
-<script type="text/javascript">
- window.onload = function()
- {
- setupZoom();
- }
-</script>
-
-<style type="text/css" media="all">
- .screenshot_table
- {
- border: 1px #ccc solid;
- border-left: 0px;
- }
-
- .screenshot_table tr td
- {
- width: 140px;
- text-align: center;
- border-left: 1px #ccc solid;
- padding: 5px;
- }
-
- .screenshot_table tr th
- {
- font-weight: bold;
- text-align: center;
- border-left: 1px #ccc solid;
- }
-</style>
-
-## Apache Directory Studio Application
-
-<center>
- <table class="screenshot_table" cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <img src="screenshots.data/studio-icon_128x128.png" align="absmiddle" border="0">
- </td>
- <td>
- <a href="screenshots.data/LDAPStudioApp_Preferences.png" title="Application - Preferences">
- <img src="screenshots.data/LDAPStudioApp_Preferences.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/LDAPStudioApp_Help.png" title="Application - Help">
- <img src="screenshots.data/LDAPStudioApp_Help.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- </tr>
- <tr>
- <th>Icon</th>
- <th>Preferences</th>
- <th>Help</th>
- </tr>
- </table>
-</center>
-
-
-## LDAP Browser
-
-TODO...
-
-<center>
- <table class="screenshot_table" cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <a href="screenshots.data/LDAP_Browser_Plugin.png" title="LDAP Browser - LDAP Perspective">
- <img src="screenshots.data/LDAP_Browser_Plugin.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- </tr>
- <tr>
- <th>LDAP Perspective</th>
- </tr>
- </table>
-</center>
-
-## LDIF Editor
-
-TODO...
-
-## Schema Editor
-
-TODO...
-
-<center>
- <table class="screenshot_table" cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <a href="screenshots.data/SchemasEditor_Plugin.png" title="Schema Editor - Schema Editor Perspective">
- <img src="screenshots.data/SchemasEditor_Plugin.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/SchemasEditor_AttributeTypeEditor.png" title="Schema Editor - Attribute Type Editor">
- <img src="screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png" align="absmiddle" border="0"></a>
- </a>
- </td>
- <td>
- <a href="screenshots.data/SchemasEditor_ObjectClassEditor.png" title="Schema Editor - Object Class Editor">
- <img src="screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/SchemasEditor_SchemaEditor.png" title="Schema Editor - Schema Editor">
- <img src="screenshots.data/SchemasEditor_SchemaEditor.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/SchemasEditor_SourceCodeEditor.png" title="Schema Editor - Source Code Editor">
- <img src="screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/SchemasEditor_PluginOptions.png" title="Schema Editor - Options">
- <img src="screenshots.data/SchemasEditor_PluginOptions.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- </tr>
- <tr>
- <th>Schema Editor Perspective</th>
- <th>Attribute Type Editor</th>
- <th>Object Class Editor</th>
- <th>Schema Editor</th>
- <th>Source Code Editor</th>
- <th>Options</th>
- </tr>
- </table>
-</center>
-
-## Embedded ApacheDS
-
-TODO...
-
-## ApacheDS Configuration
-
-TODO...
-
-<center>
- <table class="screenshot_table" cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <a href="screenshots.data/ads_configuration_general.png" title="Apache DS Configuration - General Page">
- <img src="screenshots.data/ads_configuration_general.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/ads_configuration_partitions.png" title="Apache DS Configuration - Partitions Page">
- <img src="screenshots.data/ads_configuration_partitions.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/ads_configuration_interceptors.png" title="Apache DS Configuration - Interceptors Page">
- <img src="screenshots.data/ads_configuration_interceptors.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/ads_configuration_extop.png" title="Apache DS Configuration - Extended Operations Page">
- <img src="screenshots.data/ads_configuration_extop.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- </tr>
- <tr>
- <th>General Page</th>
- <th>Partitions Page</th>
- <th>Interceptors Page</th>
- <th>Extended Operations Page</th>
- </tr>
- </table>
-</center>
-
-## ACI Editor
-
-<center>
- <table class="screenshot_table" cellpadding="0" cellspacing="0">
- <tr>
- <td>
- <a href="screenshots.data/aci_visual_1.png" title="ACI Editor - Visual Editor">
- <img src="screenshots.data/aci_visual_1.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/aci_visual_2.png" title="ACI Editor - Visual Editor">
- <img src="screenshots.data/aci_visual_2.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/aci_source.png" title="ACI Editor - Source Editor">
- <img src="screenshots.data/aci_source.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- <td>
- <a href="screenshots.data/subtree_editor.png" title="ACI Editor - Subtree Editor">
- <img src="screenshots.data/subtree_editor.thumb.png" align="absmiddle" border="0">
- </a>
- </td>
- </tr>
- <tr>
- <th>ACI Visual Editor</th>
- <th>ACI Visual Editor</th>
- <th>ACI Source Editor</th>
- <th>Subtree Editor</th>
- </tr>
- </table>
-</center>
\ No newline at end of file
diff --git a/content/studio/source-repository.mdtext b/content/studio/source-repository.mdtext
deleted file mode 100644
index a554496..0000000
--- a/content/studio/source-repository.mdtext
+++ /dev/null
@@ -1,81 +0,0 @@
-Title: Source Repository
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Source Repository
-
-## Canonical Source Repository
-
-The canonical source is managed in Apache GitBox. Just type the following command to get the latest development version:
-
- git clone https://gitbox.apache.org/repos/asf/directory-studio.git
-
-## GitHub Mirror
-
-There is a GitHub mirror available: <https://github.com/apache/directory-studio/>
-
-Pull requests welcomed.
-
-## Source Repository Organization
-
-The repository is organized as follows :
-
- |-- pom-first.xml pom.xml to generate the Eclipse Target Platform and the MANIFEST.MF files
- |-- pom.xml The main pom
- |-- eclipse-trgt-platform The target platform, defines Eclipse, ApacheDS, and 3rd party dependencies
- |-- features The features
- | |-- apacheds.feature
- | |-- ldapbrowser.feature
- | |-- ldifeditor.feature
- | |-- openldap.feature
- | |-- rcp.feature
- | |-- schemaeditor.feature
- |-- helps The help plugins in Docbook format
- | |-- apacheds.help
- | |-- ldapbrowser.help
- | |-- ldifeditor.help
- | |-- rcp.help
- | |-- schemaeditor.help
- |-- plugins The real plugins, here is the code
- | |-- aciitemeditor
- | |-- apacheds
- | |-- apacheds-launcher
- | |-- apacheds.configuration
- | |-- common.core
- | |-- common.ui
- | |-- connection.core
- | |-- connection.ui
- | |-- ldapbrowser.common
- | |-- ldapbrowser.core
- | |-- ldapbrowser.ui
- | |-- ldapservers
- | |-- ldapservers.apacheds.v153
- | |-- ldapservers.apacheds.v154
- | |-- ldapservers.apacheds.v155
- | |-- ldapservers.apacheds.v156
- | |-- ldapservers.apacheds.v157
- | |-- ldifeditor
- | |-- ldifparser
- | |-- rcp
- | |-- schemaeditor
- | |-- valueeditors
- |-- tests Integration Tests
- | |-- test.integration.core
- | |-- test.integration.ui
- |-- product The packaged products for all supported platforms
- |-- p2repositories The update sites
-
diff --git a/content/studio/testimonials.mdtext b/content/studio/testimonials.mdtext
deleted file mode 100644
index 38f7f5a..0000000
--- a/content/studio/testimonials.mdtext
+++ /dev/null
@@ -1,70 +0,0 @@
-Title: Testimonials
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Testimonials
-
-This page is dedicated to people using *{_}Apache Directory Studio{_}* and like it \!
-
-### In English:
-
-* <http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-896.html>
-* <http://www.eclipse-plugins.info/eclipse/plugin_details.jsp?id=1752>
-* <http://www.idtopia.com/blog/2007/04/03/ldap-studio-07-released>
-* <http://anothergeekwebsite.com/en/2007/03/ldapstudio-0>
-* <http://www.c-note.dk/2007/03/30/ldapbrowsers/>
-* <http://rcrblog.blogspot.com/2007/08/why-i-love-apaches-ldap-studio.html>
-* <http://blog.fupps.com/2007/09/10/apache-directory-studio/>
-* <http://marksparhawk.com/articles/2007/10/03/apache-does-ldap-well>
-* <http://www.mikeperham.com/2007/09/28/using-apache-ds-part-2/>
-
-### In French:
-
-* <http://anothergeekwebsite.com/fr/2007/03/ldapstudio>
-
-### In Hungarian:
-
-* <http://www.kroy.hu/blog/?p=34#comment-12>
-
-### In Czech:
-
-* <http://www.benak.net/node/33>
-
-### In German:
-
-* <http://blog.dogan.ch/2007/09/28/apache-directory-studio/>
-* <http://www.hare.at/ccldap/index.html>
-
-### George Stoianov says:
-
-> I have spend only a limited time with LDAP Studio maybe 1-2 hours, so
-> far and I am really impressed with the way it works and behaves. I
-> have seen other Linux GUI LDAP clients but they had limited
-> capabilities in some ways, did not work in others or were not very
-> user friendly, as subjective as that is, in my mind. Long story short
-> they kept me wanting more:
-> be it a way to limit the entries returned instead of opening a tree
-> branch and having the whole application freeze, or an easy way to
-> switch connections etc. etc.. All of this kept me going back to a
-> Windows only client.
->
-> LDAP Studio is sleek, fast and responds to user input even when
-> extracting LDIFs with records in the size of hundreds of thousands. It
-> is intuitive to use and has a really nice look and feel to it.
->
-> It simply rocks so far\!\!\! (I do not want to puch my luck :-) but that
-> is how it feels).
\ No newline at end of file
diff --git a/content/studio/update/compositeArtifacts--xml.html b/content/studio/update/compositeArtifacts--xml.html
deleted file mode 100644
index 96c0e37..0000000
--- a/content/studio/update/compositeArtifacts--xml.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<?compositeArtifactRepository version="1.0.0"?>
-<repository name="Apache Directory Studio"
- type="org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository"
- version="1.0.0">
- <properties size="1">
- <property name="p2.timestamp" value="1587200224000" />
- </properties>
- <children size="2">
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/eclipse" />
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/dependencies" />
- </children>
-</repository>
diff --git a/content/studio/update/compositeContent--xml.html b/content/studio/update/compositeContent--xml.html
deleted file mode 100644
index 80a9528..0000000
--- a/content/studio/update/compositeContent--xml.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<?compositeMetadataRepository version="1.0.0"?>
-<repository name="Apache Directory Studio"
- type="org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository"
- version="1.0.0">
- <properties size="1">
- <property name="p2.timestamp" value="1587200224000" />
- </properties>
- <children size="2">
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/eclipse" />
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/dependencies" />
- </children>
-</repository>
diff --git a/content/studio/update/index.mdtext b/content/studio/update/index.mdtext
deleted file mode 100644
index b40caf1..0000000
--- a/content/studio/update/index.mdtext
+++ /dev/null
@@ -1,22 +0,0 @@
-Title: Update Site
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Update Site
-
-This is the update site for Apache Directory Studio. Please visit [Installing Apache Directory Studio in Eclipse](../installation-in-eclipse.html) for instructions how to use it.
-
diff --git a/content/studio/update/product/compositeArtifacts--xml.html b/content/studio/update/product/compositeArtifacts--xml.html
deleted file mode 100644
index 96c0e37..0000000
--- a/content/studio/update/product/compositeArtifacts--xml.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<?compositeArtifactRepository version="1.0.0"?>
-<repository name="Apache Directory Studio"
- type="org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository"
- version="1.0.0">
- <properties size="1">
- <property name="p2.timestamp" value="1587200224000" />
- </properties>
- <children size="2">
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/eclipse" />
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/dependencies" />
- </children>
-</repository>
diff --git a/content/studio/update/product/compositeContent--xml.html b/content/studio/update/product/compositeContent--xml.html
deleted file mode 100644
index 80a9528..0000000
--- a/content/studio/update/product/compositeContent--xml.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<?compositeMetadataRepository version="1.0.0"?>
-<repository name="Apache Directory Studio"
- type="org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository"
- version="1.0.0">
- <properties size="1">
- <property name="p2.timestamp" value="1587200224000" />
- </properties>
- <children size="2">
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/eclipse" />
- <child location="https://downloads.apache.org/directory/studio/2.0.0.v20200411-M15/update/dependencies" />
- </children>
-</repository>
diff --git a/content/studio/update/product/index.mdtext b/content/studio/update/product/index.mdtext
deleted file mode 100644
index dd8271b..0000000
--- a/content/studio/update/product/index.mdtext
+++ /dev/null
@@ -1,21 +0,0 @@
-Title: Update Site
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-## Update Site
-
-This is the update site for Apache Directory Studio. Please visit [Installing Apache Directory Studio in Eclipse](../../installation-in-eclipse.html) for instructions how to use it.
diff --git a/content/studio/users-guide.mdtext b/content/studio/users-guide.mdtext
deleted file mode 100644
index ef1b1d8..0000000
--- a/content/studio/users-guide.mdtext
+++ /dev/null
@@ -1,56 +0,0 @@
-Title: User's Guide
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# User's Guide
-
-Here are the User's Guides available for Apache Directory Studio:
-
-
-## LDAP Browser
-
-![HTML Guide](users-guide.data/html.png) [Click here to consult the LDAP Browser User's Guide](users-guide/2.0.0.v20200411-M15/ldap_browser/)
-
-![PDF Guide](users-guide.data/pdf.png) [The LDAP Browser User's Guide is also available as PDF ](users-guide/2.0.0.v20200411-M15/Apache_Directory_Studio_LDAP_Browser_User_Guide.pdf)
-
-
-## LDIF Editor
-
-![HTML Guide](users-guide.data/html.png) [Click here to consult the LDIF Editor User's Guide](users-guide/2.0.0.v20200411-M15/ldif_editor/)
-
-![PDF Guide](users-guide.data/pdf.png) [The LDIF Editor User's Guide is also available as PDF ](users-guide/2.0.0.v20200411-M15/Apache_Directory_Studio_LDIF_Editor_User_Guide.pdf)
-
-
-## Schema Editor
-
-![HTML Guide](users-guide.data/html.png) [Click here to consult the Schema Editor User's Guide](users-guide/2.0.0.v20200411-M15/schema_editor/)
-
-![PDF Guide](users-guide.data/pdf.png) [The Schema Editor User's Guide is also available as PDF ](users-guide/2.0.0.v20200411-M15/Apache_Directory_Studio_Schema_Editor_User_Guide.pdf)
-
-
-## Apache Directory Server
-
-![HTML Guide](users-guide.data/html.png) [Click here to consult the Apache Directory Server User's Guide](users-guide/2.0.0.v20200411-M15/apacheds/)
-
-![PDF Guide](users-guide.data/pdf.png) [The Apache Directory Server User's Guide is also available as PDF ](users-guide/2.0.0.v20200411-M15/Apache_Directory_Studio_Apache_DS_User_Guide.pdf)
-
-
-## Apache Directory Studio
-
-![HTML Guide](users-guide.data/html.png) [Click here to consult the Apache Directory Studio User's Guide](users-guide/2.0.0.v20200411-M15/apache_directory_studio/)
-
-![PDF Guide](users-guide.data/pdf.png) [The User's Guide is also available as PDF ](users-guide/2.0.0.v20200411-M15/Apache_Directory_Studio_User_Guide.pdf)
diff --git a/content/team.mdtext b/content/team.mdtext
deleted file mode 100644
index 560cc22..0000000
--- a/content/team.mdtext
+++ /dev/null
@@ -1,93 +0,0 @@
-Title: Team
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# The Apache Directory Project Committee
-
-| Name | id | Position | Photo | WebSite | Blog |
-|---|---|---|:-:|:-:|:-:|
-| Alex Karasulu | akarasulu | Founder, PMC | ![Alex Karasulu](images/team/akarasulu.jpg) |||
-| Chris Custine | ccustine | PMC | ![Chris Custine](images/team/ccustine.png) | [![Website](images/team/website.png)](http://www.organicelement.com) | [![Blog](images/team/blog.png)](http://blog.organicelement.com) |
-| Chris Pike | cpike | PMC ||||
-| Christine Koppelt | ckoppelt | PMC ||||
-| Colm O hEigeartaigh | coheiga | PMC ||| [![Blog](images/team/blog.png)](http://coheigea.blogspot.com/) |
-| Emmanuel Lécharny | elecharny | PMC | ![Emmanuel Lécharny](images/team/elecharny.jpg) | [![Website](images/team/website.png)](http://www.iktek.com) | [![Blog](images/team/blog.png)](http://hrabal.blogspot.com) |
-| Jiajia Li | plusplusjiajia | PMC ||||
-| Kai Zheng | drankye | PMC ||||
-| Kiran Ayyagari | kayyagari | PMC ||||
-| Lucas Theisen | lucastheisen | PMC ||||
-| Noel J. Bergman | noel | PMC ||||
-| Pierre Smits | pierresmits | PMC | ![Pierre Smits](images/team/pierresmits.png) | [![Website](images/team/website.png)](http://www.orrtiz.com) ||
-| Pierre-Arnaud Marcelot | pamarcelot | PMC | ![Pierre-Arnaud Marcelot](images/team/pamarcelot.jpg) | [![Website](images/team/website.png)](http://www.pajbam.com)|[![Blog](images/team/blog.png)](http://www.pajbam.com) |
-| Radovan Semancik| semancik | Committer ||||
-| Shawn McKinney | smckinney | PMC | ![Shawn McKinney](images/team/smckinney.jpg) | [![Website](images/team/website.png)](http://symas.com/)|[![Blog](images/team/blog.png)](https://iamfortress.net/) |
-| Stefan Seelmann | seelmann | PMC chair | ![Stefan Seelmann](images/team/seelmann.jpg) | [![Website](images/team/website.png)](http://www.stefan-seelmann.de) | [![Blog](images/team/blog.png)](http://www.stefan-seelmann.de) |
-| Stefan Zoerner | szoerner | PMC | ![Stefan Zoerner](images/team/szoerner.jpg) |||
-
-# The Apache Directory Project Committers
-
-| Name | id | Position | Photo | WebSite | Blog |
-|---|---|---|:-:|:-:|:-:|
-| Alan Cabrera | adc | Committer ||||
-| Aleksander Adamowski | aadomowski | Committer ||||
-| Alex Haskell | aphaskell | Committer ||||
-| Andrea Gariboldi | agariboldi | Committer ||||
-| Antoine Levy Lambert| antoine | Committer ||||
-| Berin Loritsch | bloritsch | Committer ||||
-| Brian Burch | brianb2 | Committer ||||
-| Christopher Harm | charm | Committer ||||
-| David Jencks | djencks | Committer ||||
-| Gerard Gagliano | gg | Committer ||||
-| Göktürk Gezer | gokturk | Committer ||||
-| Jan Rellermeyer | rjan | Committer | ![Jan Rellermeyer](images/team/jan.jpg) | [![Website](images/team/website.png)](http://people.inf.ethz.ch/rjan) ||
-| Jan Sindberg | sindberg | Committer ||||
-| John E. Conlon | jconlon | Committer ||||
-| Lin Chen | hazel | Committer ||||
-| Lothar Haeger | lhaeger | Committer ||||
-| Martin Alderson | malderson | Committer ||||
-| Richerd Feezel| rmf | Committer ||||
-| Selcuk Aya | saya | Committer ||||
-| Shawn E Smith | ussmith | Committer ||||
-| Stephen McConnell | mcconnell | Committer ||||
-| Steve Moyer | smoyer1 | Committer ||||
-| Timothy Bennett | tbennett | Committer ||||
-| Yaning Xu | yaning | Committer ||||
-
-To be continued ...
-
-# Emeritus committers and PMCs
-
-| Name | Position | Photo | WebSite | Blog |
-|---|---|:-:|:-:|:-:|
-| Brett Porter | PMC ||||
-| Ersin Er | PMC ||||
-| Felix Knecht | PMC ||||
-| G. Richard Scott | Committer ||||
-| Jesse McConnell |Committer||||
-| Jim Jagielski | Committer ||||
-| Jörg Henne | Committer ||||
-| John Peacock | Committer ||||
-| Michael E. Rodriguez | Committer ||||
-| Niclas Hedman | Committer ||||
-| Nicola Ken Barozzi | Committer ||||
-| Norval Hope | Committer ||||
-| Ole Ersoy | Committer ||||
-| Phil Steitz | PMC ||||
-| Trustin Lee | PMC ||||
-| Vince Tence | PMC ||||
-| Wes McKean | PMC ||||
-
diff --git a/content/testimonies.mdtext b/content/testimonies.mdtext
deleted file mode 100644
index c8c4160..0000000
--- a/content/testimonies.mdtext
+++ /dev/null
@@ -1,25 +0,0 @@
-Title: Testimonials
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Testimonials
-
-This page collects testimonies from Apache Directory Server users, and expose what they are using it for.
-
-* The openthinclient.org project uses ADS as an embedded directory server to store all kinds of configuration data.
- [http://openthinclient.org](http://openthinclient.org) is an open source thin client management solution allowing thin clients to boot from the network via using a single pure-java server.
-
diff --git a/content/vision.mdtext b/content/vision.mdtext
deleted file mode 100644
index 20f73bc..0000000
--- a/content/vision.mdtext
+++ /dev/null
@@ -1,132 +0,0 @@
-Title: Vision
-Notice: Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- .
- http://www.apache.org/licenses/LICENSE-2.0
- .
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-# Architecting the Modern LDAP Renaissance: The Apache Directory Vision
-
-by Alex Karasulu, Founder of the [Apache Directory Project](https://directory.apache.org), October 2002
-This paper was later, in September 2007, submitted to and accepted by the [1st International Conference on LDAP](http://www.guug.de/veranstaltungen/ldapcon2007/), Cologne (Germany)
-
-[TOC]
-
-## Abstract
-
- Directory technology is an indivisible cornerstone in computing science and LDAP specifically is essential in
- several industries however it is severely underutilized.
-
- One would expect the demand for LDAP to increase as infrastructures and the Internet grow, with more boundaries,
- nodes, services, users and ways of doing business emerging rapidly. Directories inherently solve integration
- problems yet more integration problems appear while complexities of existing problems are compounded. We're not
- witnessing a proportional increase in the adoption rate of directories; namely LDAP directories. This is not a
- coincidence.
-
- It is the result of a lack of several factors: tooling support, courses on directory technology in academia,
- qualified domain experts and rich integration constructs. More specifically, information architects and key
- decision makers incorrectly choose to apply ad hoc solutions to problems rather than opting to using directories.
-
- If these limitations are removed then there would be greater comfort, flexibility and adoption. LDAP could do
- more than it does today namely in the area of provisioning and workflow.
-
- LDAP could potentially experience a Renaissance with renewed interest due to increased demand to solve the
- classical integration problems it was designed for and beyond.
-
- We discuss these limitations, and the proposed means to remove them, all in an effort to express our vision
- at the Apache Directory Project. Our aim is clear; we intend to influence and incite other directory
- implementers and projects by our example to trigger what we envision as the Modern LDAP Renaissance.
-
-## Drivers Leading to the Birth of the Directory
-
-Several systems slowly appeared in the arsenal of tools used daily by those within and across organizations. Data architects quickly could characterized two logical categories of information spanning across all domains:
-
-* Static information shared across applications and systems read frequently yet seldom altered.
-* Information specific to an event within an application (a transaction) read infrequently however written rapidly in volume (data seldom accessed by external systems).
-
-The Directory relates to this first type of data above which has the following general properties:
-
-* Accessed by many clients
-* Partitioned across different locations in different organizations owned by separate authorities
-* Structure data elements with data types (syntaxes) with semantics for matching
-* Data easily fits into hierarchies
-* Highly cross referenced
-
-The telecommunication industry in Europe, in particular, felt this burden while managing shared information, specifically subscriber directories. Telephone companies in Europe, some national providers and other international providers, managed profiles for subscribers, a subset of which, needed to be published for public access.
-
-The ITU responded with the X.500 series of specifications. The Directory specifications addressed these specific concerns for accessing information shared across organizations, located in separate stores and managed by several different authorities. The access model and authoritative model enabled organizations to publish subscriber information and allow others to access it while delegating the management of access control, schema and other aspects to the proper authorities. As a standard it was way ahead of its time.
-
-The X.500 specifications reveal a unique data access and authoritative model designed specifically for the category of static shared data we defined above. It is a cornerstone technology as is the relational database for the second category.
-
-## Demand for Directories Should Be High
-
-Directories expose a unique model for efficiently accessing relatively static information shared across multiple systems. Directory protocol designers intended the protocol to address a class of specific problems through a standard means to access shared information centrally while providing high availability. Existing storage paradigms failed to solve these problems due to inherent limitations in their design.
-
-These data management problems fall under the domain of data integration. To integrate systems one must integrate both the data and the processes. Interoperating systems often need to access the same information however many systems simply duplicate that information (in relational databases) rather than accessing it from a centralized service (the directory). As a result multiple copies of the same information exist across these systems. Data synchronization technologies emerged to address these issues of duplication such as meta-directories (not real directories). These technologies never really solved all the issues of data duplication: they merely facilitated the export, transformation and import of data across systems. The serious issue of determining the authoritative copy still remained.
-
-For some time, commercial entities avoided addressing these integration problems by centralizing access to this shared information. The market fueled the push of OLTP systems since the transaction equated to money. As markets became saturated as several competitors appeared, businesses started focusing on gains through efficiency. To streamline development and maintenance better integration was needed while allowing transactions to span across interoperating systems. This increased the need for directories.
-
-Aspects of growth naturally contribute to the demand for Directory technologies. As the number of users, organizations, systems, services and machines expand the problems of integration only increase without applying the correct remedy. In fact, the vast majority of today's problems are primary integration problems. Hence one would expect the utilization of Directories to increase proportionally with the increased demand. Unfortunately, a proportional increase in demand for Directories has not been observed.
-
-## Barriers of Adoption
-
-Although Directories, namely LDAP Directories, have proliferated over the past two decades, their adoption has not been commensurate with the demand one would expect. Several factors may be attributed to this less than optimal adoption rate.
-
-Directories still feel alien to most developers. Many admit, in theory, to a directory as the ideal access model for shared information in their applications however most fall back to using a relational database instead. Why?
-
-First there is no formal education around directory technologies while several courses around relational database systems exist. This might explain in part why developers are much more comfortable with keeping their Directory information stored and accessed from an RDBMS. As a result, finding qualified Directory experts is difficult. Every generalist knows how to use an RDBMS, yet costly specialists are needed to design, operate and maintain directories. The cost and availability of specialized engineers factor into design decisions especially if the process is formally conducted.
-
-Developers may also fall back to using an RDBMS instead of a Directory because of a lack of rich integration tier constructs (like triggers, views and stored procedures). These very useful constructs are missing in Directories yet have been available in relational databases for decades. Today's heavy integration needs demand these constructs. For example the demand for the event driven provisioning of information could be elegantly solved using triggers and stored procedures as entries are added, updated and deleted. Data architects and developers in this respect have been left in the dark-ages with LDAP while the RDBMS has given them what they wanted/needed at the price of compounding their problems with data duplication.
-
-Perhaps the most significant factor driving these faulty decisions is the lack of LDAP tooling. There are myriads of RDBMS tools for various aspects: tuning, accessing, and designing. Tools for the RDBMS appeared with a vengeance to enable designers to rapidly prototype new OLTP systems and thus bring them to market faster. Less confident generalists could even design databases and manipulate them thanks to these tools which abstracted away the details to just get the job done. The tools made engineers and non-engineers productive in building database driven applications rapidly. Unfortunately, there barely are any good browsers for LDAP much less topology/schema, design and tuning tools. The barren tooling landscape leaves developers and data architects exposed enough to turn back to the RDBMS for immediate comfort. This temporary gain is at the cost of long term data bottle necks or synchronization issues.
-
-Regardless of which factor prevents most the uptake of LDAP, the fact remains: the wrong decisions are being made more often than the right ones. It's a matter of time before Directories are considered antiquated technologies unless they can accommodate modern needs. Directories must be compelling enough for data architects and developers to decide to utilize them for their strengths in theory and in practice.
-
-## Renovating (LDAP) Directories for the 21st Century
-
-Several factors are not under the immediate control of the LDAP community however enough are to bring LDAP to the 21st century. First and foremost, LDAP tooling must improve. We need tools to model LDAP directories properly for topology and schema. Designers should be guided on how they can properly use more of the esoteric constructs to control the naming, and hierarchy of the directory. There's more to directory design than just objectClasses and attributeTypes.
-
-Secondly the protocol must expand LDAP to include standard mechanisms for declaring triggers, stored procedures and views. These two aspects alone contribute to the vast majority of reasons why relational databases store information best accessed from a directory. Allowing these new constructs for a directory will enable virtualization, provisioning, referential integrity, and server interaction with the external environment. Rather than only exposing access to static information (white pages) the directory could be utilized to solve many more problems confronting designers and developers in today's integration era. The Directory would truly become the Swiss Army Knife(TM) of integration tools in the data architect's tool chest.
-
-## Conclusion: The Aim of the Apache Directory Project
-
-At the Apache Directory Project, there are two LDAP specific projects. The first is a pure Java LDAP Server called Apache Directory Server (ApacheDS) which has been written and certified by the Open Group for LDAPv3. It was started in reaction to the often brittle code that was too hard to manage: the code was written in C and had preprocessor directives strewn all over it for porting.
-
-The other LDAP related project is called Apache Directory Studio. It is intended to provide the missing LDAP tooling support in addition to Apache Directory Server specific management utilities.
-
-The general motives for forming the Apache Directory Project can be summarized with the points below:
-
-* Avoid low level compiled language for:
-* Reducing complexity, and increase productivity
-* Enabling portability to other platforms with minimal effort
-* Attracting more contributors with most common language (Java)
-* Devise a more flexible dynamic server designed for:
- * Extension
- * Protocol experimentation
- * Hot plug-ability
- * Simplicity
-* Experiment with and introduce new integration tier constructs for directories:
- * Triggers
- * Views
- * Stored Procedures
- * Queues
-* Provide the missing tooling critical for:
- * LDAP Adoption (general for all LDAP servers)
- * Increasing user comfort with LDAP
- * Lessening the learning curve for those using LDAP
-* Stimulate commercial vendors to adopt these new capabilities to remain competitive.
-
-One of our aims is to induce thought in the LDAP community while stimulating its growth through simple useful products. The more satisfied LDAP users are, the bigger the community using and interested in LDAP. This is where simple intuitive tooling and a server come in hand. More than that, these projects serve as an experimentation platform for devising new constructs in the protocol and evaluating their utility without breaking with the existing protocol. This is why certification is very important to us as we devise new constructs to make LDAP much more useful to its users.
-
-Ultimately we want to see changes appearing in the protocol standard which make LDAP a more familiar hence appealing, and easier to use technology. With standards around these new constructs interoperability could be achieved. Users will not be bound to a specific server. We want to demonstrate the viability and profound effects of these new constructs in the protocol through our example while stimulating commercial vendors to do the same to remain competitive. It does not matter to us which LDAP server is used so long as the users' situation improves with these new productive protocol features to make LDAP serve its intended purpose and go beyond. We strive, in this way, to increase LDAP awareness, comfort and adoption to bring forth what we call the Modern LDAP Renaissance.
\ No newline at end of file
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
new file mode 100644
index 0000000..b07b1e4
--- /dev/null
+++ b/layouts/_default/baseof.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/green.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/server-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "home") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>Latest Downloads</h5>
+ <ul>
+ <li><a href="/apacheds/downloads.html">ApacheDS {{ .Site.Params.version_apacheds }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/studio/downloads.html">Studio {{ .Site.Params.version_studio_name }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/api/downloads-1.html">LDAP API {{ .Site.Params.version_api }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/api/downloads-2.html">LDAP API {{ .Site.Params.version_api2 }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/mavibot/downloads.html">Mavibot {{ .Site.Params.version_mavibot }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/fortress/downloads.html">Fortress {{ .Site.Params.version_fortress }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/scimple/downloads.html">SCIMple {{ .Site.Params.version_scimple }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/kerby/downloads.html">Kerby {{ .Site.Params.version_kerby }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ </ul>
+
+ <h5>Sub-Projects</h5>
+ <ul>
+ <li><a href="/apacheds/">ApacheDS</a></li>
+ <li><a href="/studio/">Apache Directory Studio</a></li>
+ <li><a href="/api/">Apache LDAP API</a></li>
+ <li><a href="/mavibot/">Apache Mavibot</a></li>
+ <li><a href="/scimple/">Apache SCIMple</a></li>
+ <li><a href="/fortress/">Apache Fortress</a></li>
+ <li><a href="/kerby/">Apache Kerby</a></li>
+ </ul>
+ <!--h5>Sandbox</h5>
+ <ul>
+ <li><a href="/triplesec/">Triplesec</a></li>
+ </ul-->
+
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="/references.html">References</a></li>
+ <li><a href="/articles.html">Articles</a></li>
+ <li><a href="/conference-materials.html">Conferences</a></li>
+ <li><a href="/testimonies.html">Testimonials</a></li>
+ <li><a href="/vision.html">Vision</a></li>
+ <li><a href="/security-advisories.html">Security Advisories</a></li>
+ <!--li><a href="/interopability.html">Interropability</a></li-->
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/_default/list.html b/layouts/_default/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/_default/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/_default/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/apacheds/baseof.html b/layouts/apacheds/baseof.html
new file mode 100644
index 0000000..375298b
--- /dev/null
+++ b/layouts/apacheds/baseof.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/green.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/server-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "apacheds") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>ApacheDS 2.0</h5>
+ <ul>
+ <li><a href="/apacheds/">Home</a></li>
+ <li><a href="/apacheds/news.html">News</a></li>
+ <li><a href="/apacheds/features.html">Features</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/apacheds/downloads.html">ApacheDS {{ .Site.Params.version_apacheds }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/apacheds/download-old-versions.html">Older versions</a></li>
+ </ul>
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/apacheds/basic-user-guide.html">Basic User Guide </a></li>
+ <li><a href="/apacheds/advanced-user-guide.html">Advanced User Guide</a></li>
+ <li><a href="/apacheds/developer-guide.html">Developer Guide</a></li>
+ <li><a href="/apacheds/kerberos-user-guide.html">Kerberos User Guide</a></li>
+ <li><a href="/apacheds/configuration/ads-2.0-configuration.html">Configuration</a></li>
+ <li><a href="/apacheds/gen-docs/latest/apidocs">JavaDocs</a></li>
+ <li><a href="/apacheds/gen-docs/latest/xref">Cross-Reference</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/apacheds/list.html b/layouts/apacheds/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/apacheds/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/apacheds/single.html b/layouts/apacheds/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/apacheds/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/api/baseof.html b/layouts/api/baseof.html
new file mode 100644
index 0000000..e07b887
--- /dev/null
+++ b/layouts/api/baseof.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/brown.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/api-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "api") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>LDAP API </h5>
+ <ul>
+ <li><a href="/api/">Home</a></li>
+ <li><a href="/api/news.html">News</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/api/downloads-1.html">Version {{ .Site.Params.version_api }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/api/downloads-2.html">Version {{ .Site.Params.version_api2 }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/api/download-old-versions.html">Older versions</a></li>
+ </ul>
+
+ <h5>Getting Started</h5>
+ <ul>
+ <li><a href="/api/vision.html">Vision</a></li>
+ <li><a href="/api/java-api.html">Java API</a></li>
+ </ul>
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/api/five-minutes-tutorial.html">Five minute tutorial</a></li>
+ <li><a href="/api/user-guide.html">User Guide</a></li>
+ <li><a href="/api/migration-guide.html">API 1 to 2 migration</a></li>
+ <li><a href="/api/gen-docs/latest/apidocs/">JavaDocs</a></li>
+ <li><a href="/api/gen-docs/latest2/apidocs/">JavaDocs 2</a></li>
+ <li><a href="/api/gen-docs/latest/xref/">Cross-Reference</a></li>
+ <li><a href="/api/gen-docs/latest2/xref/">Cross-Reference 2</a></li>
+ <!--li><a href="/api/gen-docs/latest/">Generated Reports</a></li-->
+ <li><a href="/api/developer-guide.html">Developer Guide</a></li>
+ <li><a href="/api/internal-design-guide.html">Internal Guide</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/api/list.html b/layouts/api/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/api/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/api/single.html b/layouts/api/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/api/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/fortress/baseof.html b/layouts/fortress/baseof.html
new file mode 100644
index 0000000..a28ebb2
--- /dev/null
+++ b/layouts/fortress/baseof.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/turquoise.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/fortress-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "fortress") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>Fortress</h5>
+ <ul>
+ <li><a href="/fortress/">Home</a></li>
+ <li><a href="/fortress/history.html">History</a></li>
+ <li><a href="/fortress/news.html">News</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/fortress/downloads.html">Fortress {{ .Site.Params.version_fortress }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/fortress/download-old-versions.html">Older versions</a></li>
+ </ul>
+
+ <!--h5>Getting Started</h5>
+ <ul>
+ <li><a href="/fortress/vision.html">Vision</a></li>
+ <li><a href="/fortress/issues.html">Issues</a></li>
+ </ul-->
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/fortress/overview.html">Overview</a></li>
+ <li><a href="/fortress/installation.html">Installation Guide</a></li>
+ <li><a href="/fortress/user-guide.html">Users Guide</a></li>
+ <li><a href="/fortress/coding-standards.html">Coding Standards</a></li>
+ <li><a href="/fortress/gen-docs/latest/apidocs/">JavaDocs</a></li>
+ <!--li><a href="/fortress/gen-docs/latest/xref/">Cross-Reference</a></li-->
+ <li><a href="/fortress/gen-docs/latest/">Generated Reports</a></li>
+ <li><a href="/fortress/developer-guide.html">Developer Guide</a></li>
+ <li><a href="/fortress/testimonials.html">Testimonials</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/fortress/list.html b/layouts/fortress/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/fortress/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/fortress/single.html b/layouts/fortress/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/fortress/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/kerby/baseof.html b/layouts/kerby/baseof.html
new file mode 100644
index 0000000..a611d61
--- /dev/null
+++ b/layouts/kerby/baseof.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/orange.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/api-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "kerby") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <h5>Kerby</h5>
+ <ul>
+ <li><a href="/kerby/">Home</a></li>
+ <li><a href="/kerby/news.html">News</a></li>
+ <li><a href="/kerby/features.html">Features</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/kerby/downloads.html">Version {{ .Site.Params.version_kerby }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/kerby/download-old-versions.html">Older versions</a></li>
+ </ul>
+
+ <h5>Getting Started</h5>
+ <ul>
+ <!--li><a href="/kerby/vision.html">Vision</a></li-->
+ <li><a href="/kerby/issues.html">Issues</a></li>
+ </ul>
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/kerby/overview.html">Overview</a></li>
+ <!--li><a href="/kerby/quick-start.html">Quick Start</a></li-->
+ <li><a href="/kerby/kerby-asn1.html">Kerby ASN1</a></li>
+ <li><a href="/kerby/user-guide.html">User Guide</a></li>
+ <!--li><a href="/kerby/gen-docs/latest/apidocs/">JavaDocs</a></li-->
+ <!--li><a href="/kerby/gen-docs/latest/xref/">Cross-Reference</a></li-->
+ <!--li><a href="/kerby/gen-docs/latest/">Generated Reports</a></li-->
+ <li><a href="/kerby/developer-guide.html">Developer Guide</a></li>
+ <li><a href="/kerby/tutorials.html">Tutorials</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/kerby/list.html b/layouts/kerby/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/kerby/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/kerby/single.html b/layouts/kerby/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/kerby/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/mavibot/baseof.html b/layouts/mavibot/baseof.html
new file mode 100644
index 0000000..9954180
--- /dev/null
+++ b/layouts/mavibot/baseof.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/turquoise.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/mavibot-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "mavibot") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>Mavibot 1.0</h5>
+ <ul>
+ <li><a href="/mavibot/">Home</a></li>
+ <li><a href="/mavibot/news.html">News</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/mavibot/downloads.html">Version {{ .Site.Params.version_mavibot }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/mavibot/download-old-versions.html">Older versions</a></li>
+ </ul>
+
+ <h5>Getting Started</h5>
+ <ul>
+ <li><a href="/mavibot/vision.html">Vision</a></li>
+ </ul>
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/mavibot/five-minutes-tutorial.html">Five minutes tutorial</a></li>
+ <li><a href="/mavibot/user-guide.html">User Guide</a></li>
+ <li><a href="/mavibot/gen-docs/latest/apidocs/">JavaDocs</a></li>
+ <li><a href="/mavibot/gen-docs/latest/xref/">Cross-Reference</a></li>
+ <!--li><a href="/mavibot/gen-docs/latest/">Generated Reports</a></li-->
+ <li><a href="/mavibot/developer-guide.html">Developer Guide</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/mavibot/list.html b/layouts/mavibot/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/mavibot/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/mavibot/single.html b/layouts/mavibot/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/mavibot/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/partials/common-navigation.html b/layouts/partials/common-navigation.html
new file mode 100644
index 0000000..2222f88
--- /dev/null
+++ b/layouts/partials/common-navigation.html
@@ -0,0 +1,24 @@
+<h5>Support</h5>
+<ul>
+ <li><a href="/mailing-lists-and-irc.html">Mailing Lists & IRC</a></li>
+ <li><a href="/sources.html">Sources</a></li>
+ <li><a href="/issue-tracking.html">Issue Tracking</a></li>
+ <li><a href="/commercial-support.html">Commercial Support</a></li>
+</ul>
+
+<h5>Community</h5>
+<ul>
+ <li><a href="/contribute.html">How to Contribute</a></li>
+ <li><a href="/team.html">Team</a></li>
+ <li><a href="/original-project-proposal.html">Original Project Proposal</a></li>
+ <li><a href="/special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
+</ul>
+
+<h5>About Apache</h5>
+<ul>
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+ <li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..d772d30
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1,7 @@
+<div id="footer">
+ © 2003-{{ now.Year }}, <a href="http://www.apache.org">The Apache Software Foundation</a> - <a href="/privacy-policy.html">Privacy Policy</a><br />
+ Apache Directory, ApacheDS, Apache Directory Server, Apache Directory Studio, Apache LDAP API, Apache Triplesec,
+ Triplesec, Apache Mavibot, Mavibot, Apache eSCIMo, eSCIMo, Apache SCIMple, SCIMple,Fortress, Apache Fortress, EnMasse,
+ Apache EnMasse, Apache Kerby, Kerby, Apache, the Apache feather logo, and the Apache Directory project logos are
+ trademarks of The Apache Software Foundation.
+</div>
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
new file mode 100644
index 0000000..fbe070b
--- /dev/null
+++ b/layouts/partials/header.html
@@ -0,0 +1,67 @@
+<div id="header">
+ <div id="subProjectsNavBar">
+ <a href="/">
+ {{ if eq .project "home" }}
+ <strong>Main</strong>
+ {{ else }}
+ Main
+ {{ end }}
+ </a>
+ |
+ <a href="/apacheds/">
+ {{ if eq .project "apacheds" }}
+ <strong>ApacheDS</strong>
+ {{ else }}
+ ApacheDS
+ {{ end }}
+ </a>
+ |
+ <a href="/studio/">
+ {{ if eq .project "studio" }}
+ <strong>Studio</strong>
+ {{ else }}
+ Studio
+ {{ end }}
+ </a>
+ |
+ <a href="/api/">
+ {{ if eq .project "api" }}
+ <strong>LDAP API</strong>
+ {{ else }}
+ LDAP API
+ {{ end }}
+ </a>
+ |
+ <a href="/mavibot/">
+ {{ if eq .project "mavibot" }}
+ <strong>Mavibot</strong>
+ {{ else }}
+ Mavibot
+ {{ end }}
+ </a>
+ |
+ <a href="/scimple/">
+ {{ if eq .project "scimple" }}
+ <strong>SCIMple</strong>
+ {{ else }}
+ SCIMple
+ {{ end }}
+ </a>
+ |
+ <a href="/fortress/">
+ {{ if eq .project "fortress" }}
+ <strong>Fortress</strong>
+ {{ else }}
+ Fortress
+ {{ end }}
+ </a>
+ |
+ <a href="/kerby/">
+ {{ if eq .project "kerby" }}
+ <strong>Kerby</strong>
+ {{ else }}
+ Kerby
+ {{ end }}
+ </a>
+ </div><!-- subProjectsNavBar -->
+</div><!-- header -->
diff --git a/layouts/partials/nav-headers.html b/layouts/partials/nav-headers.html
new file mode 100644
index 0000000..35faa6b
--- /dev/null
+++ b/layouts/partials/nav-headers.html
@@ -0,0 +1,29 @@
+{{ if or (or (isset .Params "navprev") (isset .Params "navup")) (isset .Params "navnext") }}
+ <div class="nav">
+ <div class="nav_prev">
+ {{ if isset .Params "navprev" }}
+ {{ $navprev := .Param "navprev" }}
+ <a href="{{ $navprev }}">{{ .Param "navprevtext" }}</a>
+ {{ else }}
+
+ {{ end }}
+ </div>
+ <div class="nav_up">
+ {{ if isset .Params "navup" }}
+ {{ $navup := .Param "navup" }}
+ <a href="{{ $navup }}">{{ .Param "navuptext" }}</a>
+ {{ else }}
+
+ {{ end }}
+ </div>
+ <div class="nav_next">
+ {{ if isset .Params "navnext" }}
+ {{ $navnext := .Param "navnext" }}
+ <a href="{{ $navnext }}">{{ .Param "navnexttext" }}</a>
+ {{ else }}
+
+ {{ end }}
+ </div>
+ <div class="clearfix"></div>
+ </div>
+{{ end }}
diff --git a/layouts/scimple/baseof.html b/layouts/scimple/baseof.html
new file mode 100644
index 0000000..1d9040c
--- /dev/null
+++ b/layouts/scimple/baseof.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/brown.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/api-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "scimple") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>SCIMple 1.0</h5>
+ <ul>
+ <li><a href="/scimple/">Home</a></li>
+ <li><a href="/scimple/news.html">News</a></li>
+ </ul>
+ <!--<h5>Downloads</h5>
+ <ul>
+ <li><a href="/scimple/downloads.html">Version {{ .Site.Params.version_scimple }}</a> <IMG src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/scimple/download-old-versions.html">Older versions</a></li>
+ </ul>-->
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/scimple/five-minutes-tutorial.html">Five minutes tutorial</a></li>
+ <li><a href="/scimple/user-guide.html">User Guide</a></li>
+ <li><a href="/scimple/gen-docs/latest/apidocs/">JavaDocs</a></li>
+ <li><a href="/scimple/gen-docs/latest/xref/">Cross-Reference</a></li>
+ <!--li><a href="/scimple/gen-docs/latest/">Generated Reports</a></li-->
+ <li><a href="/scimple/developer-guide.html">Developer Guide</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/scimple/list.html b/layouts/scimple/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/scimple/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/scimple/single.html b/layouts/scimple/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/scimple/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/templates/download-change-mirror.html b/layouts/shortcodes/download-change-mirror.html
similarity index 100%
rename from templates/download-change-mirror.html
rename to layouts/shortcodes/download-change-mirror.html
diff --git a/layouts/shortcodes/download-verify.html b/layouts/shortcodes/download-verify.html
new file mode 100644
index 0000000..08670e2
--- /dev/null
+++ b/layouts/shortcodes/download-verify.html
@@ -0,0 +1,33 @@
+{{ $filename := .Inner }}
+<h1><a name="verifyIntegrity"></a>Verify the integrity of the file</h1>
+
+<p>
+ The PGP signatures can be verified using PGP or GPG. First download the <a href="https://downloads.apache.org/directory/KEYS">KEYS</a>
+ as well as the <em>asc</em> signature file for the relevant distribution. Then verify the signatures using:
+</p>
+
+<div class="preformatted">
+ <div class="preformattedContent">
+ <pre>$ pgpk -a KEYS
+$ gpgv {{ $filename }}.asc</pre>
+ </div>
+</div>
+or
+<div class="preformatted">
+ <div class="preformattedContent">
+ <pre>$ pgp -ka KEYS
+$ gpg {{ $filename }}.asc {{ $filename }}</pre>
+ </div>
+</div>
+or
+<div class="preformatted">
+ <div class="preformattedContent">
+ <pre>$ gpg --import KEYS
+$ gpg --verify {{ $filename }}.asc {{ $filename }}</pre>
+ </div>
+</div>
+
+<p> </p>
+
+<p>Alternatively, you can verify the checksums of the files (see the <a href="https://www.apache.org/info/verification.html">How to verify downloaded files</a> page). </p>
+<p> </p>
diff --git a/layouts/shortcodes/grabpage.html b/layouts/shortcodes/grabpage.html
new file mode 100644
index 0000000..944aced
--- /dev/null
+++ b/layouts/shortcodes/grabpage.html
@@ -0,0 +1,2 @@
+{{ $file := .Get 0 }}
+{{ with .Site.GetPage $file }}{{.Content}}{{end}}
diff --git a/layouts/shortcodes/toc.html b/layouts/shortcodes/toc.html
new file mode 100644
index 0000000..aca3785
--- /dev/null
+++ b/layouts/shortcodes/toc.html
@@ -0,0 +1 @@
+{{ .Page.TableOfContents }}
\ No newline at end of file
diff --git a/layouts/studio/baseof.html b/layouts/studio/baseof.html
new file mode 100644
index 0000000..e15ad28
--- /dev/null
+++ b/layouts/studio/baseof.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html lang="en">
+<head>
+ <title>{{ .Title }} — Apache Directory</title>
+
+ <link href="/css/common.css" rel="stylesheet" type="text/css"/>
+ <link href="/css/blue.css" rel="stylesheet" type="text/css"/>
+
+ <link rel="shortcut icon" href="/images/studio-icon_16x16.png">
+</head>
+<body>
+<div id="container">
+ {{ partial "header.html" (dict "context" . "project" "studio") }}
+
+ <div id="content">
+ <div id="leftColumn">
+ <div id="navigation">
+ <!--ul>
+ <li>
+ <a href="http://bit.ly/1n9YlQT" target="_blank">
+ <img src="/images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
+ </a>
+ </li>
+ </ul-->
+ <h5>Apache Directory Studio</h5>
+ <ul>
+ <li><a href="/studio/">Home</a></li>
+ <li><a href="/studio/news.html">News</a></li>
+ <li><a href="/studio/screenshots.html">Screenshots</a></li>
+ </ul>
+
+ <h5>Downloads</h5>
+ <ul>
+ <li><a href="/studio/downloads.html">Version {{ .Site.Params.version_studio_name }}</a> <img src="/images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
+ <li><a href="/studio/download-old-versions.html">Older Versions</a></li>
+ </ul>
+
+ <h5>Documentation</h5>
+ <ul>
+ <li><a href="/studio/users-guide.html">User's Guide</a></li>
+ <li><a href="/studio/developers-guide.html">Developer's Guide</a></li>
+ <li><a href="/studio/faqs.html">FAQs</a></li>
+ </ul>
+
+ <h5>Resources</h5>
+ <ul>
+ <li><a href="/studio/changelog.html">ChangeLog</a></li>
+ <li><a href="/studio/testimonials.html">Testimonials</a></li>
+ </ul>
+
+ {{ partialCached "common-navigation" . }}
+ </div><!-- navigation -->
+ </div><!-- leftColumn -->
+ <div id="rightColumn">
+ {{ partial "nav-headers.html" . }}
+ {{ block "main" . }}{{ end }}
+ {{ partial "nav-headers.html" . }}
+ </div><!-- rightColumn -->
+ <div id="endContent"></div>
+ </div><!-- content -->
+
+ {{ partial "footer.html" . }}
+</div><!-- container -->
+
+</body>
+
+</html>
diff --git a/layouts/studio/list.html b/layouts/studio/list.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/studio/list.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/layouts/studio/single.html b/layouts/studio/single.html
new file mode 100644
index 0000000..c1339be
--- /dev/null
+++ b/layouts/studio/single.html
@@ -0,0 +1,3 @@
+{{ define "main" }}
+ {{ .Content }}
+{{ end }}
diff --git a/lib/path.pm b/lib/path.pm
deleted file mode 100644
index 0bb622f..0000000
--- a/lib/path.pm
+++ /dev/null
@@ -1,620 +0,0 @@
-package path;
-
-# Versions (for download links)
-our $version_api = "1.0.3";
-our $version_api2 = "2.0.1";
-our $version_apacheds = "2.0.0.AM26";
-our $version_studio = "2.0.0.v20200411-M15";
-our $version_studio_name = "2.0.0-M15";
-our $version_mavibot = "1.0.0-M8";
-our $version_scimple = "1.0.0";
-our $version_fortress = "2.0.5";
-our $version_kerby = "2.0.1";
-
-
-# All our pages use the same view function
-our @patterns = (
- # Basic HTML content
- [qr!^/.*\.html$!, template_page => {} ],
-
- #
- # Apache DS sub-project pages
- #
-
- # Download ApacheDS Archive page
- [qr!apacheds\/download\/download-archive\.mdtext$!, template_page => {
- template => "apacheds/download-archive.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS Linux BIN page
- [qr!apacheds\/download\/download-linux-bin\.mdtext$!, template_page => {
- template => "apacheds/download-linux-bin.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS Linux DEB page
- [qr!apacheds\/download\/download-linux-deb\.mdtext$!, template_page => {
- template => "apacheds/download-linux-deb.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS Linux RPM page
- [qr!apacheds\/download\/download-linux-rpm\.mdtext$!, template_page => {
- template => "apacheds/download-linux-rpm.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS macOS page
- [qr!apacheds\/download\/download-macosx\.mdtext$!, template_page => {
- template => "apacheds/download-macosx.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS Sources page
- [qr!apacheds\/download\/download-sources\.mdtext$!, template_page => {
- template => "apacheds/download-sources.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download ApacheDS Windows page
- [qr!apacheds\/download\/download-windows\.mdtext$!, template_page => {
- template => "apacheds/download-windows.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # ApacheDS Index page
- [qr!apacheds\/index\.mdtext$!, template_page => {
- template => "apacheds/index.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard ApacheDS page
- [qr!apacheds\/.*?\.mdtext$!, template_page => {
- template => "apacheds/page.html",
- isDirApacheDS => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache LDAP API sub-project pages
- #
-
- # Download Apache LDAP API Archive page
- [qr!api\/download\/download-archive-1\.mdtext$!, template_page => {
- template => "api/download-archive-1.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- [qr!api\/download\/download-archive-2\.mdtext$!, template_page => {
- template => "api/download-archive-2.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache LDAP API Sources page
- [qr!api\/download\/download-sources-1\.mdtext$!, template_page => {
- template => "api/download-sources-1.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- [qr!api\/download\/download-sources-2\.mdtext$!, template_page => {
- template => "api/download-sources-2.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache LDAP API Index page
- [qr!api\/index\.mdtext$!, template_page => {
- template => "api/index.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard Apache LDAP API page
- [qr!api\/.*?\.mdtext$!, template_page => {
- template => "api/page.html",
- isDirAPI => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache Mavibot sub-project pages
- #
-
- # Download Apache MAVIBOT Archive page
- [qr!mavibot\/download\/download-archive\.mdtext$!, template_page => {
- template => "mavibot/download-archive.html",
- isDirMVBT => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache MAVIBOT Sources page
- [qr!mavibot\/download\/download-sources\.mdtext$!, template_page => {
- template => "mavibot/download-sources.html",
- isDirMVBT => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache MAVIBOT Index page
- [qr!mavibot\/index\.mdtext$!, template_page => {
- template => "mavibot/index.html",
- isDirMVBT => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard Apache MAVIBOT page
- [qr!mavibot\/.*?\.mdtext$!, template_page => {
- template => "mavibot/page.html",
- isDirMVBT => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache Directory Studio sub-project pages
- #
-
- # Download Apache Directory Studio Linux page
- [qr!studio\/download\/download-linux\.mdtext$!, template_page => {
- template => "studio/download-linux.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache Directory Studio macOS page
- [qr!studio\/download\/download-macosx\.mdtext$!, template_page => {
- template => "studio/download-macosx.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache Directory Studio Sources page
- [qr!studio\/download\/download-sources\.mdtext$!, template_page => {
- template => "studio/download-sources.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache Directory Studio Windows page
- [qr!studio\/download\/download-windows\.mdtext$!, template_page => {
- template => "studio/download-windows.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache Directory Studio Index page
- [qr!studio\/index\.mdtext$!, template_page => {
- template => "studio/index.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard Apache Directory Studio page
- [qr!studio\/.*?\.mdtext$!, template_page => {
- template => "studio/page.html",
- isDirStudio => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache SCIMple sub-project pages
- #
-
- # Download Apache SCIMple Archive page
- [qr!scimple\/download\/download-archive\.mdtext$!, template_page => {
- template => "scimple/download-archive.html",
- isDirScimple => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache SCIMple Sources page
- [qr!scimple\/download\/download-sources\.mdtext$!, template_page => {
- template => "scimple/download-sources.html",
- isDirScimple => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache SCIMple Index page
- [qr!scimple\/index\.mdtext$!, template_page => {
- template => "scimple/index.html",
- isDirScimple => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard Apache SCIMple page
- [qr!scimple\/.*?\.mdtext$!, template_page => {
- template => "scimple/page.html",
- isDirScimple => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache FORTRESS project pages
- #
-
- # Download Apache FORTRESS Archive page
- [qr!fortress\/download\/download-archive\.mdtext$!, template_page => {
- template => "fortress/download-archive.html",
- isDirFortress => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache FORTRESS Sources page
- [qr!fortress\/download\/download-sources\.mdtext$!, template_page => {
- template => "fortress/download-sources.html",
- isDirFortress => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache FORTRESS Index page
- [qr!fortress\/index\.mdtext$!, template_page => {
- template => "fortress/index.html",
- isDirFortress => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard FORTRESS page
- [qr!fortress\/.*?\.mdtext$!, template_page => {
- template => "fortress/page.html",
- isDirFortress => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
-
- #
- # Apache KERBY project pages
- #
-
- # Download Apache KERBY Archive page
- [qr!kerby\/download\/download-archive\.mdtext$!, template_page => {
- template => "kerby/download-archive.html",
- isDirKerby => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Download Apache KROBY Sources page
- [qr!kerby\/download\/download-sources\.mdtext$!, template_page => {
- template => "kerby/download-sources.html",
- isDirKerby => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Apache KERBYIndex page
- [qr!kerby\/index\.mdtext$!, template_page => {
- template => "kerby/index.html",
- isDirKerby => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard KERBY page
- [qr!kerby\/.*?\.mdtext$!, template_page => {
- template => "kerby/page.html",
- isDirKerby => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- #
- # Apache Directory Project pages
- #
-
- # Apache Directory Project Index page
- [qr!index\.mdtext$!, template_page => {
- template => "index.html",
- isDirSite => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-
- # Standard Apache Directory Project page
- [qr!^/.*\.mdtext$!, template_page => {
- template => "page.html",
- isDirSite => true,
- version_api => $version_api,
- version_api2 => $version_api2,
- version_apacheds => $version_apacheds,
- version_studio => $version_studio,
- version_studio_name => $version_studio_name,
- version_mavibot => $version_mavibot,
- version_scimple => $version_scimple,
- version_kerby => $version_kerby,
- version_fortress => $version_fortress } ],
-);
-
-# for specifying interdependencies between files
-our %dependencies = ();
-
-1;
-
-=head1 LICENSE
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
diff --git a/lib/view.pm b/lib/view.pm
deleted file mode 100644
index ef98b2d..0000000
--- a/lib/view.pm
+++ /dev/null
@@ -1,118 +0,0 @@
-package view;
-
-# BUILD CONSTRAINT: all views must return $content, $extension.
-# additional return values (as seen below) are optional. However,
-# careful use of symlinks and dependency management in path.pm can
-# resolve most issues with this constraint.
-
-use strict;
-use warnings;
-use Dotiac::DTL qw/Template/;
-use Dotiac::DTL::Addon::markup;
-use ASF::Util qw/read_text_file/;
-
-push @Dotiac::DTL::TEMPLATE_DIRS, "templates";
-
-# This is most widely used view. It takes a
-# 'template' argument and a 'path' argument.
-# Assuming the path ends in foo.mdtext, any files
-# like foo.page/bar.mdtext will be parsed and
-# passed to the template in the "bar" (hash)
-# variable.
-sub template_page
-{
- my %args = @_;
- my $file = "content$args{path}";
- $args{path} =~ s/\.mdtext$/\.html/;
- $args{base} = _base($args{path});
-
- my $template = $file;
- if( $args{template} )
- {
- $template = $args{template};
- }
-
- read_text_file $file, \%args;
- $args{breadcrumbs} = breadcrumbs($args{path}, $args{headers});
-
- my $page_path = $file;
- $page_path =~ s/\.[^.]+$/.page/;
- if ( -d $page_path )
- {
- for my $f (grep -f, glob "$page_path/*.mdtext")
- {
- $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
- $args{$1} = {};
- read_text_file $f, $args{$1};
- }
- }
-
- return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
-}
-
-# Gets the base of the path
-sub _base
-{
- my $path = shift;
-
- my @path_components = split( m!/!, $path );
- pop @path_components;
- pop @path_components;
-
- my $rel = "./";
-
- for (@path_components)
- {
- $rel .= "../";
- }
-
- return $rel;
-}
-
-# Generates cwiki-style breadcrumbs
-sub breadcrumbs {
- my ($fullpath, $headerref) = @_;
- my @titles = split m!/!, $fullpath;
- my @paths = split m!/!, $fullpath;
-
- if($paths[scalar@paths-1] =~ /^index/) {
- pop @titles;
- pop @paths;
- } else {
- if($headerref && $headerref->{title}) {
- $titles[scalar@titles-1] = $headerref->{title};
- }
- }
- $titles[0] = "Home";
-
- my @rv;
- my $relpath = "/";
- for(my $i=0; $i<scalar @paths; $i++) {
- my $title = $titles[$i];
- $relpath .= $paths[$i];
- push @rv, qq(<a href="$relpath">\u$title</a>);
- unless($relpath eq "/") { $relpath .= "/"; }
- }
- return join " » ", @rv;
-}
-
-1;
-
-=head1 LICENSE
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
diff --git a/source/_index.md b/source/_index.md
new file mode 100644
index 0000000..33f2c8c
--- /dev/null
+++ b/source/_index.md
@@ -0,0 +1,87 @@
+---
+title: Welcome to Apache Directory
+---
+
+<center>
+ <h1>
+ The Apache Directory™ Project
+ </h1>
+</center>
+
+## Project Vision
+
+We strive to increase LDAP awareness, comfort and adoption to bring forth what we call the Modern LDAP Renaissance. Learn more about our vision [here](https://directory.apache.org/vision.html)
+
+## Directory Sub-Projects
+
+The Apache Directory Project provides directory solutions entirely written in Java. These include a directory server, which has been certified as LDAP v3 compliant by the Open Group (ApacheDS), and Eclipse-based directory tools (Apache Directory Studio).
+
+<STYLE type="text/css">
+.separator {height: 10px;}
+.header {text-align: center; font-size: 14px; color: #555555;}
+td {font-size: 12px;}
+</STYLE>
+
+<table width="99%" border="0" style="text-align: justify;">
+ <tbody>
+ <tr>
+ <!-- ApacheDS project -->
+ <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="apacheds/downloads.html" class="download_badge_apacheds"><b>Download<br>ApacheDS 2.0.0.AM26</b></a>
+ </div>
+ <div class="separator"> </div>
+ ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+ </td>
+ <!-- Apache Studio project -->
+ <td witdh="50%" style="border-width: 0; padding-left: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="studio/downloads.html" class="download_badge_studio"><b>Download Apache<br>Directory Studio 2.0.0-M14</b></a>
+ </div>
+ <div class="separator"> </div>
+ Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.
+ </td>
+ </tr>
+ <tr>
+ <!-- Apache LDAP API project -->
+ <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="api/downloads-1.html" class="download_badge_api"><b>Download Apache<br>LDAP API 1.0.3</b></a>
+ </div>
+ <div class="download-link">
+ <a href="api/downloads-2.html" class="download_badge_api"><b>Download Apache<br>LDAP API 2.0.1</b></a>
+ </div>
+ <div class="separator"> </div>
+ The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+ This is a "schema aware" API with some convenient ways to access all types of LDAP servers, not only ApacheDS but any LDAP server.
+ The API is OSGI ready and extensible. New controls, schema elements and network layer could be added or used in the near future.
+ </td>
+ <!-- Apache Mavibot project -->
+ <td witdh="50%" style="border-width: 0; padding-left: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="mavibot/downloads.html" class="download_badge_mavibot"><b>Download Apache<br>Mavibot 1.0.0-M8</b></a>
+ </div>
+ <div class="separator"> </div>
+ Mavibot™ is a <em>Multi Version Concurrency Control</em> (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the Apache Directory Server), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+ </td>
+ </tr>
+ <tr>
+ <!-- Apache Kerby project -->
+ <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="kerby/downloads.html" class="download_badge_kerby"><b>Download Apache<br>Kerby 1.1.1</b></a>
+ </div>
+ <div class="separator"> </div>
+ Apache Kerby™ is a Java Kerberos binding. It provides a rich, intuitive and interoperable implementation, library, KDC and various facilities that integrates PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.
+ </td>
+ <!-- Apache Fortress project -->
+ <td style="border-width: 0; border-right: 1px solid silver; padding-right: 15px; width:50%;" valign="top">
+ <div class="download-link">
+ <a href="fortress/downloads.html" class="download_badge_mavibot"><b>Download Apache<br>Fortress 2.0.5</b></a>
+ </div>
+ <div class="separator"> </div>
+ Apache Fortress™ is a standards-based authorization system that provides attribute and role-based access control, delegated administration and password policy services using an LDAP backend.
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/source/apacheds/__index.md b/source/apacheds/__index.md
new file mode 100644
index 0000000..4b50bb9
--- /dev/null
+++ b/source/apacheds/__index.md
@@ -0,0 +1,69 @@
+---
+type: apacheds
+title: Welcome to ApacheDS
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="left">
+ <h1>ApacheDS™</h1>
+ <h2>LDAP and Kerberos server written in Java</h2>
+ <div class="description">ApacheDS™ is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.</div>
+ <div class="download-link">
+ <a href="/apacheds/downloads.html" class="download_badge"><b>Download<br>ApacheDS {{<param version_apacheds >}}</b></a>
+ </div>
+ </div>
+ <div class="right">
+ <img src="../images/hero-apacheds.jpg" width="377" height="287" border="0"/>
+ </div>
+</div>
+
+<div class="features-highlights clearfix">
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_server_ldapv3_compliant.png">
+ <h3>LDAPv3 Compliant</h3>
+ <div class="text">Since its initial version, ApacheDS has been certified by the Open Group which guarantees conformance of directory servers to version 3 of the LDAP protocol.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_server_x500_authorization.png">
+ <h3>Full X500 Authorization</h3>
+ <div class="text">ApacheDS uses an adaptation of the X.500 basic access control scheme in combination with X.500 subentries to control access to entries and attributes within the DIT.</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_server_kerberos_server.png">
+ <h3>Kerberos Server Built-in</h3>
+ <div class="text">Not only is ApacheDS an LDAP server, it also supports the Kerberos protocol being a KDC (Key Distribution Center), a TGS (Ticket Granting Server) and an AS (Authentication Server).</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_server_multi_master_replication.png">
+ <h3>Multi-Master Replication</h3>
+ <div class="text">Multi-master replication support via RFC 4533 (Content Synchronization Operation) has been added to ApacheDS 2.0, making it also compatible with OpenLDAP.</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_server_password_policy.png">
+ <h3>Password Policy Support</h3>
+ <div class="text">ApacheDS supports the "Password Policy for LDAP Directories" RFC draft, allowing it to enforce a set of rules designed to encourage users to employ strong passwords and use them properly.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_server_ldif_based_configuration.png">
+ <h3>LDIF-Based Configuration</h3>
+ <div class="text">The configuration of ApacheDS relies on an LDIF file, a well known format for people working around LDAP technologies, making it easier to configure the server.</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_server_written_java_embeddable.png">
+ <h3>Written in Java and Embeddable</h3>
+ <div class="text">ApacheDS has been written in Java, one of the best object-oriented programming languages, which makes it easy for developpers to embed in their own Java applications.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_server_multi_platform.png">
+ <h3>Multi-Platform</h3>
+ <div class="text">ApacheDS is available on most operating systems (Linux, Mac OS X & Windows), with dedicated installers for each platform (.deb, .bin, or .rpm packages, Windows installer, .zip and .tar.gz archives, etc).</div>
+ </div>
+</div>
+
+<div class="news">
+ {{< grabpage "apacheds/news.md" >}}
+</div>
diff --git a/source/apacheds/advanced-ug/0-community.md b/source/apacheds/advanced-ug/0-community.md
new file mode 100644
index 0000000..e4bba44
--- /dev/null
+++ b/source/apacheds/advanced-ug/0-community.md
@@ -0,0 +1,19 @@
+---
+title: 0 - Community
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 0.1-reporting-bugs.html
+navNextText: 0.1. Reporting Bugs
+---
+
+# 0 - Community
+This chapter explains how to work with the community around the project. The ASF is a community of volunteers, most of them working out of their working time to get the best possible software available to the users, for free.
+
+As a community, we appreciate feedbacks, bug reports, even criticisms, but we value contributions as the best way to make this collaborative work a better software.
+
+
+# Table of content
+
+* [0.1. Reporting Bugs](0.1-reporting-bugs.html)
+* [0.2. Building trunks](0.2-building-trunks.html)
+* [0.3. Contributing](0.3-contributing.html)
diff --git a/source/apacheds/advanced-ug/0.1-reporting-bugs.md b/source/apacheds/advanced-ug/0.1-reporting-bugs.md
new file mode 100644
index 0000000..0e64069
--- /dev/null
+++ b/source/apacheds/advanced-ug/0.1-reporting-bugs.md
@@ -0,0 +1,115 @@
+---
+title: 0.1 - Reporting Bugs
+navPrev: 0-community.html
+navPrevText: 0 - Community
+navUp: 0-community.html
+navUpText: 0 - Community
+navNext: 0.2-building-trunks.html
+navNextText: 0.2 - Building Trunks
+---
+
+# 0.1 - Reporting Bugs
+
+So you found a bug in ApacheDS. Don't worry this is a good thing! We can fix it but need your help. There are different degrees to your ability to help out. Some of you have developer skills so you might be able to write a test case that pin points that bug.
+
+This wiki page shows you how you can help us to help you.
+
+## Creating a testcase project: using the apacheds-archetype-testcase.
+
+We've created a simple archetype for you to rapidly create a Maven project that fires up ApacheDS in embedded mode within a JUnit testcase. This test case will start up ApacheDS as a server on any available port above 1024 on your machine. You can then use JNDI or the Apache LDAP API going over the wire on that port above 1024. You can also use the ApacheDS core API to access the data directly.
+
+So you can write client code in your test case immediately. Just add your code, tar gzip the project, and attach it to your JIRA issue on the ApacheDS JIRA here:
+
+ [https://issues.apache.org/jira/browse/DIRSERVER]
+
+We'll prioritize your bug higher than others and probably fix it rapidly because the problem is isolated thanks to your testcase submission. We will in fact strip out your testcase and add it to our suite of test cases to make sure ApacheDS always passes this integration test you've provided.
+
+### Installing the apacheds-archetype-testcase
+
+To use the archetype you'll need to check it out and install it. Here's how you can do that for the leading edge of 2.0.0:
+
+
+ svn co http://svn.apache.org/repos/asf/directory/documentation/samples/trunk/apacheds-archetype-testcase
+ cd apacheds-archetype-testcase
+ mvn install
+
+This will install the archetype onto your local repository. Now you can invoke the archetype.
+
+h3. Invoking (running) the archetype: generating the testcase project
+
+Once you checkout the archetype plugin and install it you can use it like so to generate a foo-test project:
+{noformat}
+mvn archetype:generate -DarchetypeGroupId=org.apache.directory.samples \
+ -DarchetypeArtifactId=apacheds-archetype-testcase \
+ -DarchetypeVersion=1.5.5-SNAPSHOT \
+ -DgroupId=com.acme -DartifactId=foo-test -Dpackage=com.acme
+{noformat}
+This will generate the default test case project with the following tree structure:
+{noformat}
+~/foo-test$ tree
+.
+|-- pom.xml
+`-- src
+ |-- main
+ | `-- java
+ | `-- com
+ | `-- acme
+ | `-- Dummy.java
+ `-- test
+ |-- java
+ | `-- com
+ | `-- acme
+ | |-- AdvancedTest.java
+ | |-- AdvancedTestApacheDsFactory.java
+ | `-- MinimalTest.java
+ `-- resources
+ |-- log4j.properties
+ |-- sevenSeas_data.ldif
+ `-- sevenSeas_schema.ldif
+
+10 directories, 8 files
+{noformat}
+* Dummy.java - this is just a placeholder file to make sure that Maven works properly.
+* MinimalTest - a minimal ApacheDS Integration Test. It contains two test methods to demonstrate usage of JNDI and the ApacheDS core API. Add your own test method here.
+* AdvancedTest - an advanced ApacheDS Integration Test in case you need a special configuration for your test. It demonstrates how to add a new partition, how to enable LDAPS, how to enable a disabled schema, how to inject a custom schema, and how to inject custom test data.
+* AdvancedTestApacheDsFactory - configures ApacheDS for the advanced test
+* pom.xml - the Maven Project Object Model (POM) for your new testcase project (can remain as is).
+* log4j.properties - Log4j configuration file that controls ApacheDS logging for your convenience; edit this file to control logging output.
+* sevenSeas_data.ldif - sample custom test data used by the advanced test.
+* sevenSeas_schema.ldif - sample custom schema used by the advanced test.
+
+Once you do this you can cd into foo-test and just build and test it for fun to see what happens. This will build, and test the sample test cases (they should pass) that comes packaged with the project you just created. CD into foo-test and run the following command:
+{noformat}
+mvn test
+{noformat}
+Now you can customize the MinimalTest.java or AdvancedTest.java file to isolate your bug. Open the classes with your favorite editor and goto town. However if you want to pull this project into your IDE and edit it there you can use Maven's IDEA, Eclipse and Netbeans integration to create IDE project descriptors for them. Then you can import this project into your IDE. Here's how:
+
+h4. For IDEA
+
+{noformat}
+mvn idea:idea
+{noformat}
+
+h4. For Eclipse
+
+{noformat}
+mvn eclipse:eclipse
+{noformat}
+
+h4. For Netbeans
+
+See this page: [http://maven.apache.org/guides/mini/guide-ide-netbeans/guide-ide-netbeans.html].
+
+h3. Note about version
+
+Note that this archetype is specific for ApacheDS 1.5.5.
+
+h2. Why a Maven Archetype for Testing?
+
+# Easy and fast to start integration testing ApacheDS.
+# We (developers of ApacheDS) can use it ourselves.
+# We want users of ApacheDS to help us help them.
+# Users need to customize a project with perhaps additional dependencies.
+# Users can add many test cases to the project.
+# Tests isolating custom bugs can be incorporated into our community test suite for ApacheDS.
+
diff --git a/source/apacheds/advanced-ug/0.2-building-trunks.md b/source/apacheds/advanced-ug/0.2-building-trunks.md
new file mode 100644
index 0000000..fc800eb
--- /dev/null
+++ b/source/apacheds/advanced-ug/0.2-building-trunks.md
@@ -0,0 +1,317 @@
+---
+title: 0.2 - Building Trunks
+navPrev: 0.1-reporting-bugs.html
+navPrevText: 0.1 - Reporting Bugs
+navUp: 0-community.html
+navUpText: 0 - Community
+navNext: 0.3-contributing.html
+navNextText: 0.3 - Contributing
+---
+
+# 0.2 - Building Trunks
+This page give some information about the layout of *Apache DS 2.0* trunks, and try to explain how it is built.
+
+{{% toc %}}
+
+## Project Hierarchy
+
+The server is a composition of many projects, which should be built in a given order, assuming you want to build the trunk. This order is enforced by a top level pom, so you don't need to take care of this at all.
+
+We will expose the projects hierarchy, just for information.
+
+### Project project
+
+We first have a meta-project, which contains mainly information about the maven plugins we use. This meta-project is used by all the real projects. This project has one single module :
+
+* project
+
+### Checkstyle-Configuration project
+
+This project is used to define the checkstyle configuration we use when we generate the reports.
+
+It has one single module :
+
+* checkstyle-configuration
+
+_Dependencies_ : project
+
+## Junit-Addons project
+
+This project is used to add concurrent tests in the server. It's a fork of [Mycila](ref needed).
+
+It has one single module :
+
+* junit-addons
+
+_Dependencies_ : project
+
+### Apache Directory LDAP API project (formerly known as "Shared")
+
+This project contains all the common LDAP structures that are used by ApacheDS, Apache Studio and the Apache LDAP API. In fact, this is the Apache LDAP API (even if we do have slightly more than necessary for an LDAP API).
+
+This project depends on 'project'.
+
+Here is its hierarchy :
+
+* api-parent
+ * api-i18n
+ * api-util
+ * api-asn1-parent
+ * api-asn1-api
+ * api-asn1-ber
+ * api-ldap-parent
+ * api-ldap-model
+ * api-ldap-codec-parent
+ * api-ldap-codec-core
+ * api-ldap-net-parent
+ * api-ldap-net-mina
+ * api-ldap-codec-standalone
+ * api-dsml-parent
+ * api-dsml-parser
+ * api-ldap-extras-parent
+ * api-ldap-extras-aci
+ * api-ldap-schema-parent
+ * api-ldap-schema-data
+ * api-ldap-client-parent
+ * api-ldap-client-api
+ * api-dsml-engine
+ * api-ldap-extras-codec-api
+ * api-ldap-extras-codec
+ * api-ldap-extras-util
+ * api-ldap-extras-sp
+ * api-ldap-extras-trigger
+ * api-ldap-schema-converter
+ * api-all
+ * api-ldap-client-all
+ * api-integ
+ * apache-ldap-api
+
+_Dependencies_ : project, junit-addons
+
+
+### JDBM project
+
+This project covers the JDBM code. It's a fork of the [JDBM 1.0 project](ref needed).
+
+The current project hierarchy is the following :
+
+* apacheds-jdbm-parent
+ * apacheds-jdbm
+ * apacheds-jdbm2
+
+_Dependencies_ : project, junit-addons
+
+### ApacheDS project
+This project is the server itself. It depends on 'project', 'shared' and 'jdbm'.
+
+The current project hierarchy is the following (as of 2.0.0-M9-SNAPSHOT) :
+
+* apacheds-parent
+ * apacheds-i18n
+ * apacheds-core-constants
+ * apacheds-core-api
+ * apacheds-core-shared
+ * apacheds-interceptors
+ * apacheds-interceptors-admin
+ * apacheds-interceptors-authn
+ * apacheds-interceptors-authz
+ * apacheds-interceptors-changelog
+ * apacheds-interceptors-collective
+ * apacheds-interceptors-event
+ * apacheds-interceptors-exception
+ * apacheds-interceptors-journal
+ * apacheds-interceptors-normalization
+ * apacheds-interceptors-operational
+ * apacheds-interceptors-referral
+ * apacheds-interceptors-schema
+ * apacheds-interceptors-subtree
+ * apacheds-interceptors-triggers
+ * apacheds-core
+ * apacheds-core-avl
+ * apacheds-xdbm-partition
+ * apacheds-ldif-partition
+ * apacheds-jdbm-partition
+ * apacheds-core-annotations
+ * apacheds-core-jndi
+ * apacheds-protocol-shared
+ * apacheds-kerberos-codec
+ * apacheds-interceptor-kerberos
+ * apacheds-protocol-dhcp
+ * apacheds-protocol-dns
+ * apacheds-protocol-kerberos
+ * apacheds-protocol-ldap
+ * apacheds-protocol-ntp
+ * apacheds-server-annotations
+ * apacheds-server-config
+ * apacheds-server-jndi
+ * apacheds-server-replication
+ * apacheds-test-framework
+ * apacheds-xdbm-tools
+ * apacheds-all
+ * apacheds-interceptors-logger
+ * apacheds-interceptors-hash
+ * apacheds-core-integ
+ * apacheds-server-integ
+ * apacheds-http-directory-bridge
+ * apacheds-http-integration
+ * apacheds-service-builder
+ * apacheds-kerberos-test
+ * ldap-client-test
+ * apacheds-service
+ * apacheds-wrapper
+ * apacheds-installers-maven-plugin
+ * apacheds-installers
+
+_Dependencies_ : project, junit-addons jdbm, shared,
+
+## Prerequisites for building
+
+You must have installed **Maven 3.0.4** and have a **JDK 5** (or a more recent one) installed on your computer. A working internet connection is also mandatory, unless you have all the needed dependences and plugins loaded locally.
+
+<DIV class="note" markdown="1">
+If the build hangs or you get an out of memory exception please increase the heap space:
+
+* For Linux:
+
+ MAVEN_OPTS="-Xmx256m" mvn clean install
+
+* For Windows:
+
+ SET MAVEN_OPTS="-Xmx256m"
+ mvn clean install
+</DIV>
+
+### Maven
+
+[Download](http://maven.apache.org/download.html) and install Maven 3.0.4.
+
+Add a MAVEN_HOME environment variable and add MAVEN_HOME/bin to your system path:
+
+On a Linux box you could add the following to the .bashrc file (.bashrc is a file you'll find in your home directory)
+
+
+ ...
+ export MAVEN_HOME=/opt/maven-3.0.4
+ export PATH=$JAVA_HOME:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
+ ...
+
+Windows users, use Control Panel -> System -> Advanced -> Environment Variables
+
+### JDK 5
+
+<DIV class="note" markdown="1">
+There may be some issues with older JDK versions and Kerberos, therefore we recommend using a version >=1.5.0_09
+</DIV>
+
+Any newer version should also work.
+
+
+## Getting the code
+
+To download the sources from trunk, you must have installed a **Subversion** client.
+
+With readonly access :
+
+ svn co http://svn.apache.org/repos/asf/directory/apacheds/trunk-with-dependencies apacheds-trunk
+
+With read/write access (for committers only) :
+
+ svn co https://svn.apache.org/repos/asf/directory/apacheds/trunk-with-dependencies apacheds-trunk
+
+## Building the trunks
+
+You may either specify the profile at the command-line, each time you use 'mvn', or you may configure the profile to always be active.
+
+To use a profile at the command-line:
+
+ # mvn -Papache [options] [<goal(s)>] [<phase(s)>]
+
+
+### Building the trunks
+
+Now, we can compile the projects.
+
+The command is simple :
+
+ cd apacheds-trunk
+ mvn clean install
+
+A lot of plugins will be downloaded. If you are curious, you can then look at .m2/repository to see what has been downloaded on this step.
+Building should finish with these lines:
+
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESSFUL
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 8 minutes 30 seconds
+ [INFO] Finished at: Mon Oct 30 23:32:41 CET 2006
+ [INFO] Final Memory: 18M/32M
+ [INFO] ------------------------------------------------------------------------
+
+<DIV class="info" markdown="1">
+If you want to do really safe build, run the following commands in trunks:
+
+ resources/superclean.sh
+ mvn install -Dintegration
+</DIV>
+
+## Running the server without building installers
+
+The server can be run without building any installers. This is helpful during development
+(and also can be run for regular purpose as well)
+
+ cd apacheds-trunk/apacheds/service
+ ./apacheds.sh
+
+To start the server in remote debug mode pass -debug flag. The JDWP socket will be listening
+on port 8008.
+
+## Building the installers
+
+Building the installers is a two phase process :
+
+ cd apacheds-trunk
+ mvn -Pinstallers install
+
+That's it, the jars will be find in target/images/apacheds-2.0.0-M?-SNAPSHOT-<XXXXXX>-setup.jar where XXXXXX is your local system and M? is the milestone release number for the 2.0 branch.
+
+## Starting the server without installation
+
+The directory apacheds-trunk/installers/apacheds-noarch contains a script for Linux (apacheds.sh) and one for Windows (apacheds.bat) which can be used for starting the server without the need to install it first (as non-root-user on Linux and non-Windows-service on Windows).
+
+Linux:
+
+ cd apacheds-trunk/installers/apacheds-noarch
+ ./apacheds.sh
+
+## Eclipse
+
+As Apache Studio is an Eclipse plugin/RCP application, we use extensively this IDE. Of course, you can use another IDE.
+
+### Building eclipse files
+
+To build the .project and .classpath files for eclipse, type the following commands :
+
+ cd apacheds-trunk
+ mvn eclipse:eclipse
+
+### Maven settings
+
+Don't forget to declare a classpath variable named M2_REPO, pointing to ~/.m2/repository, otherwise many links to existing jars will be broken.
+
+You can declare new variables in Eclipse in _Windows -> Preferences..._ and selecting _Java -> Build Path -> Classpath Variables_
+
+### Eclipse hints
+
+Add an eclipse-apacheDS.sh file in your eclipse root directory, to allow eclipse to get more memory (e.g. 750MB)
+You may also declare a specific workspace when launching eclipse. I have created a workspace-apacheDS directory in my HOME directory, where all the ApacheDS project is built when I use Eclipse.
+
+ <eclipse_root>/eclipse -data $HOME/workspace-apacheDS -vm java -vmargs -Xmx750M
+
+Launch eclipse :
+
+ <eclipse_root>/eclipse-apacheDS.sh
+
+### Coding standards
+
+The coding standards including an eclipse code formatting profile is available [here](../coding-standards.html)
+
diff --git a/source/apacheds/advanced-ug/0.3-contributing.md b/source/apacheds/advanced-ug/0.3-contributing.md
new file mode 100644
index 0000000..fbbe358
--- /dev/null
+++ b/source/apacheds/advanced-ug/0.3-contributing.md
@@ -0,0 +1,39 @@
+---
+title: 0.3 - Contributing
+navPrev: 0.2-building-trunks.html
+navPrevText: 0.2 - Building Trunks
+navUp: 0-community.html
+navUpText: 0 - Community
+navNext: 1-architecture.html
+navNextText: 1 - Architecture
+---
+
+# 0.3 - Contributing
+
+# Join the Apache Directory Community
+
+The Apache Directory Project is an [Open Source](http://www.opensource.org) volunteer project under the auspices of [The Apache Software Foundation (ASF)](http://www.apache.org). We welcome your input and contributions - either with direct participation (coding, documenting, answering questions, proposing ideas, reporting bugs, suggesting bug-fixes, etc..). You can also contribute to [The Apache Software Foundation (ASF)](http://www.apache.org) by [resource donations](http://apache.org/foundation/contributing.html) (money, time, publicity, hardware, software, conference presentations, speeches, etc...) of through [the sponsorship program](http://apache.org/foundation/sponsorship.html) .
+
+To begin with, we suggest you to subscribe to the [Directory Mailing Lists & IRC](https://directory.apache.org/mailing-lists-and-irc.html) (follow the link for information on how to subscribe and to access the mail list archives). Listen-in for a while, to see how others make contributions.
+
+Then you can :
+
+* Answer questions posted to the mailing lists.
+* Contribute to the FAQ or Wiki.
+* Contribute other documentation patches, either for the website or for the Apache Directory user documentation.
+* Investigate bugs that have been reported and provide patches where appropriate.
+* Help with development for the next release of the Directory project and subprojects.
+
+## What we are looking for
+
+* Source code and fixes contributions
+* Documentation assistance
+* Product and feature suggestions
+* Detailed and constructive feedback
+* Articles and white papers
+
+## How do I contribute
+
+* To discuss Apache Directory topics check out the [mailing lists](https://directory.apache.org/mailing-lists-and-irc.html).
+* Informal discussion also occurs on the [#apache-directory](irc://irc.freenode.net/apache-directory) Users IRC channel or on the [#apache-directory-dev](irc://irc.freenode.net/apache-directory-dev) Developers IRC channel on [freenode.net](http://freenode.net).
+* Bugs and other issues can be posted on the project [issue tracking system](https://directory.apache.org/issue-tracking.html).
diff --git a/source/apacheds/advanced-ug/1-architecture.md b/source/apacheds/advanced-ug/1-architecture.md
new file mode 100644
index 0000000..89dd43e
--- /dev/null
+++ b/source/apacheds/advanced-ug/1-architecture.md
@@ -0,0 +1,21 @@
+---
+title: 1 - Architecture
+navPrev: 0.3-contributing.html
+navPrevText: 0.3 - Contributing
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 1.1-architecture-overview.html
+navNextText: 1.1 - Architectural Overview
+---
+
+# 1 - Architecture
+
+We will now describe the server architecture, in order to give you a more deeper understanding of the way the server works.
+
+## Chapter content
+
+* [1.1 - Architectural Overview](1.1-architecture-overview.html)
+* [1.2 - Network Layer](1.2-network.html)
+* [1.3 - Directory-Service](1.3-directory-service.html)
+* [1.4 - Interceptors](1.4-interceptors.html)
+* [1.5 - Backend](1.5-backend.html)
diff --git a/source/apacheds/advanced-ug/1.1-architecture-overview.md b/source/apacheds/advanced-ug/1.1-architecture-overview.md
new file mode 100644
index 0000000..73b9766
--- /dev/null
+++ b/source/apacheds/advanced-ug/1.1-architecture-overview.md
@@ -0,0 +1,24 @@
+---
+title: 1.1 - Architecture Overview
+navPrev: 1-architecture.html
+navPrevText: 1 - Architecture
+navUp: 1-architecture.html
+navUpText: 1 - Architecture
+navNext: 1.2-network.html
+navNextText: 1.2 - Network Layer
+---
+
+# 1.1 - Architecture Overview
+
+The Apache Directory Server (aka *ApacheDS*) architecture has many different layers. The following schema expose the most important ones :
+
+![ApacheDS architecture](images/architecture.png)
+
+As we can see, we distinguish four different layers :
+
+* the network
+* the Session
+* the PartitionNexus
+* the Backends
+
+We will describe in detail those layers in the following chapters.
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/1.2-network.md b/source/apacheds/advanced-ug/1.2-network.md
new file mode 100644
index 0000000..4e8cbbd
--- /dev/null
+++ b/source/apacheds/advanced-ug/1.2-network.md
@@ -0,0 +1,57 @@
+---
+title: 1.2 - Newtork Layer
+navPrev: 1.1-architecture-overview.html
+navPrevText: 1.1 - Architecture Overview
+navUp: 1-architecture.html
+navUpText: 1 - Architecture
+navNext: 1.3-directory-service.html
+navNextText: 1.3 - DirectoryService
+---
+
+# 1.2 - Network Layer
+
+This layer is the part the user connects to when he wants to obtain some data from the server. This is not a mandatory part of the server : we don't need to use it when the server is embedded.
+
+We offer more than just LDAP protocol, the server also include various protocols :
+
+* Kerberos
+* NTP
+* DHCP
+* DNS
+* ChangePassword
+
+Not all of them are implemented in the current version, but at least the Kerberos server is available. The other protocols have been developed as a proof of concept : as they are all depending upon a storage database, we have used the LDAP server as a storage.
+
+It's perfectly possible to imagine more protocols being implemented in the near future...
+
+## Server startup
+
+This chapter title is a bit misleading. We don't start a server, we start a _DirectoryService_, then we start various servers on top of it.
+The _DirectoryService_ is the part responsible for the management of data (retrieval, storage, etc). All the servers can access this storage if needed.
+
+So when the _DirectoryService_ has been started and is operational, we can start the various servers, which will accept incoming requests from remote peers.
+
+### Transports
+
+We allow connection through the definition of _transports_. A _Transport_ is a **TCP** or an **UDP** socket capable of absorbing a request and to send a response. Depending on the type of server, we may declare one or more **TCP** _Transports_, or a **TCP** and a **UDP** _Transports_, or an **UDP** _Transport_ only.
+
+### Ldap Server
+
+The LDAP server needs one or two **TCP** _Transport_. We have the standard *LDAP* port (defaulting to *10389* for _ApacheDS_, but the well know port is usually 389), and one can also declare the *LDAPS* port (defaulting to *10636* for _ApacheDS_, but the well know port is usually 636).
+
+<DIV class="warning" markdown="1">
+Note that *LDAPS* is considered as deprecated.
+</DIV>
+
+### Kerberos Server
+
+The Kerberos Server uses one **TCP** _Transport_ (defaulting to *60088*, but the well know port is 88 ) and one **UDP** _transport (same value for both ports). The idea is that the communication starts on **TCP** and continues on **UDP**.
+
+### ChangePassword Server
+
+The ChangePassword Server uses one **TCP** _Transport_ and one **UDP** transport, too. The default value is *60464*, but the well known port is *464*.
+
+### Http Server
+
+We have a HttpServer running too, it's used for management. The declared ports are both **TCP** port, one is for HTTP and its default value is *8080*, the other one is for HTTPS and its default value is *8443*.
+
diff --git a/source/apacheds/advanced-ug/1.3-directory-service.md b/source/apacheds/advanced-ug/1.3-directory-service.md
new file mode 100644
index 0000000..2f91004
--- /dev/null
+++ b/source/apacheds/advanced-ug/1.3-directory-service.md
@@ -0,0 +1,28 @@
+---
+title: 1.3 - DirectoryService
+navPrev: 1.2-network.html
+navPrevText: 1.2 - Network Layer
+navUp: 1-architecture.html
+navUpText: 1 - Architecture
+navNext: 1.4-interceptors.html
+navNextText: 1.4 - Interceptors
+---
+
+# 1.3 - DirectoryService
+
+The _DirectoryService_ is the core of the server. This is where we process incoming requests and ask the backend for data.
+
+It has an entry point, the _OperationManager_, which is in charge of pushing the requests into the _Interceptors_ chain, and to protect the server against concurrent modifications.
+
+Then the request is going through every _Interceptor_ being registered for this operation. When we have gone through all the _Interceptors_, we have reached the _PartitionNexus_, which is the connection with the backends.
+
+We now just have to determinate which type of _Backend_ we should address, and this is done using the _Dn_. The request is then transmitted to the _Backend_, which returns the result.
+
+The result bubbles up through the _Interceptors_ as we unfold the stack stack, up to the _OperationManager_ and to the caller.
+
+## Environment
+
+The _DirectoryService_ knows about its execution environment : it has a _schemaManager_ instance, it knows about the _Interceptors_ chain, it stores a map of all the pending requests (it's necessary as one may abandon some request), it holds the existing _Sessions_.
+
+In other word, the _DirectoryService_ is not only the part of the server executing the logic, it also holds the current state of every clients.
+
diff --git a/source/apacheds/advanced-ug/1.4-interceptors.md b/source/apacheds/advanced-ug/1.4-interceptors.md
new file mode 100644
index 0000000..90a4dd8
--- /dev/null
+++ b/source/apacheds/advanced-ug/1.4-interceptors.md
@@ -0,0 +1,131 @@
+---
+title: 1.4 - Interceptors
+navPrev: 1.3-directory-service.html
+navPrevText: 1.3 - DirectoryService
+navUp: 1-architecture.html
+navUpText: 1 - Architecture
+navNext: 1.5-backend.html
+navNextText: 1.5 - Backend
+---
+
+# 1.4 - Interceptors
+
+_Interceptors_ are functional layers inside the _DirectoryService_. Each one of them are responsible for a specific task. They are ordered, and this order is not to be changed.
+
+Each operation received by the _DirectoryService_ will be processed by various interceptors, one after the other, down to the backend, and again when the result comes back to the caller. An _interceptor_ can call the next _interceptor_, whcih will be determinated by the position it has in the chain of _interceptors_, or simply return. Note that calling the next _interceptor_ does not require that you know which one will be called.
+
+Some _Interceptors_ can be disabled, some other can be enabled. It's also possible to add some new one.
+
+All in all, they will handle operations from a specific functional aspect.
+
+## Handled operations
+
+Each _Interceptor_ handles a subset of the possible operations, among those listed in the following table :
+
+| Operation | Description |
+|---|---|
+| add | Adds an entry in the backend |
+| bind | Binds on the DirectoryService |
+| compare | Compares the elements with the associated entry in the backend |
+| delete | Deletes the entry |
+| getRooDSE | Gets back the RootDSE entry |
+| hasEntry | Tells if an entry exists |
+| lookup | Fetches an entry |
+| modify | Modifies an entry |
+| move | Moves an entry |
+| moveAndRename | Moves and renames an entry |
+| rename | Renames an entry |
+| search | Searches for entries |
+| unbind | Unbinds from the DirectoryService |
+
+It is important to understand that each operation will go through each _Interceptor_ declared to handle the operation, down to the backend.
+
+## Existing interceptors
+
+The following interceptors are already present in the server, even if they are not enabled.
+In this table, we list all the operations each interceptor is handling, and if the _interceptor_ is enabled by default or not :
+
+| Interceptor | Enabled |add|bnd|cmp|del|DSE|has|lkp|mod|mov|m&r|ren|sea|ubd|
+|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+| AciAuthorizationInterceptor | yes | X | - | X | X | - | X | X | X | X | X | X | X | - |
+| AdministrativePointInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | ? | - |
+| AuthenticationInterceptor | yes | X | X | X | X | X | X | X | X | X | X | X | X | X |
+| ChangeLogInterceptor | yes || X | - | - | X | - | - | - | X | X | X | X | - | - |
+| CollectiveAttributeInterceptor | yes | X | - | - | - | - | - | X | X | - | - | - | X | - |
+| DefaultAuthorizationInterceptor | yes | - | - | - | X | - | - | X | X | X | X | X | X | - |
+| DelayInducingInterceptor | no | - | - | - | - | - | - | - | - | - | - | - | X | - |
+| EventInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| ExceptionInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| JournalInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| KeyDerivationInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| NormalizationInterceptor | yes | X | X | X | X | - | X | X | X | X | X | X | X | - |
+| NumberIncrementInterceptor | yes | X | - | - | - | - | - | - | - | - | - | - | - | - |
+| OperationalAttributeInterceptor | yes | X | - | - | X | - | - | X | X | X | X | X | X | - |
+| PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| CryptPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Md5PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Pkcs5s2PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Sha256PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Sha384PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Sha512PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| ShaPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Smd5PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Ssha256PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Ssha384PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| Ssha512PasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| SshaPasswordHashingInterceptor | no | X | - | - | - | - | - | - | X | - | - | - | - | - |
+| ReferralInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+| SchemaInterceptor | yes | X | - | X | - | - | - | X | X | - | ? | X | X | - |
+| SubentryInterceptor | yes | X | - | - | X | - | - | ? | X | X | X | X | X | - |
+| TimerInterceptor | no | X | X | X | X | X | X | X | X | X | X | X | X | X |
+| TriggerInterceptor | yes | X | - | - | X | - | - | - | X | X | X | X | - | - |
+
+The operations that are available are the operations for which we have some implementation in the interceptor class. For instance, the _JournalInterceptor_ class implement the _add_, _delete_, _modify_, _move_, _moveAndRename_ and _rename_ methods.
+
+## Interceptors order
+
+As we already said, the _Interceptors_ order is significant : why would we proceed an _Add_ operation through all the _Interceptors_ if the user is simply denied the right to add an entry by the _AciAuthorizationInterceptor_ ?
+
+Currently, the following order is enforced :
+
+| Order | Interceptor |
+|---|---|
+| 1 | NormalizationInterceptor |
+| 2 | AuthenticationInterceptor |
+| 3 | ReferralInterceptor |
+| 4 | AciAuthorizationInterceptor |
+| 5 | DefaultAuthorizationInterceptor |
+| 6 | AdministrativePointInterceptor |
+| 7 | ExceptionInterceptor |
+| 8 | SchemaInterceptor |
+| 9 | OperationalAttributeInterceptor |
+| 10 | SubentryInterceptor |
+| 11 | EventInterceptor |
+| 12 | TriggerInterceptor |
+| 13 | ChangeLogInterceptor |
+| 14 | JournalInterceptor |
+
+## Example
+
+Let's consider the _search_ operation. It will be processed successively by the following _Interceptors_, as it can be deduced by the two previous tables :
+
+* NormalizationInterceptor
+* AuthenticationInterceptor
+* AciAuthorizationInterceptor
+* DefaultAuthorizationInterceptor
+* SchemaInterceptor
+* OperationalAttributeInterceptor
+* SubentryInterceptor
+
+
+We can do the same exercise for each operation.
+
+## Processing
+
+Basically, an _Interceptor_ receives a request for an operation, does some pre-processing, calls the next _Interceptor_ in the chain, does some post-processing, and returns a result.
+
+Calling the next _Interceptor_ is as simple as calling the _next(OperationContext)_ method, which will compute the right _Interceptor_.
+
+The pre-processing and post-processing are standard Java code, there is nothing special there.
+
+Each operation is passed into an instance of a specific _OperationContext_, which contains all what is needed about the operation and the environment.
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/1.5-backend.md b/source/apacheds/advanced-ug/1.5-backend.md
new file mode 100644
index 0000000..cb9e086
--- /dev/null
+++ b/source/apacheds/advanced-ug/1.5-backend.md
@@ -0,0 +1,85 @@
+---
+title: 1.5 - Backend
+navPrev: 1.4-interceptors.html
+navPrevText: 1.4 - Interceptors
+navUp: 1-architecture.html
+navUpText: 1 - Architecture
+navNext: 2-server-config.html
+navNextText: 2 - Server Configuration
+---
+
+# 1.5 - Backend
+
+The _Backend_ is the part of the server responsible for storing data in a way we can easily retrieve them. This storage does not necessarily have to be remanent : we can have a in-memory _backend_.
+
+## Existing Backends
+
+We currently have 3 different backends :
+
+* JDBM
+* LDIF
+* In-Memory
+
+### JDBM Backend
+
+The **JDBM** backend is storing data on disk, using **BTrees**. It's fast when it comes to retrieve data, slow when you have to add them.
+
+### In-Memory Backend
+
+This Backend loads in memory a full set of entries. ALl of them must be hold by the existig memory, we don't write on disk anything nor we read anything from disk. If the server is stopped, everything is lost.
+
+### LDIF Backend
+
+It comes in two forms : one single file, or many fles (one per entry). It's always backed by a in-memory _Backend_, otherwise it would not be possible to retrieve the entries.
+
+As we depend on a in-memory backend, which handles the indexes, we have to create those indexes when this _Backend_ is read, which can be a costly operation.
+
+### Future Backends
+
+We intend to add another in-memory backend, based on _Mavibot_, a **MVCC BTREE**. The biggest advantage over the other systems is that it's fast, it allows concurrent reads without locks when the other _Backend_ block the reads when some write operation is being processed. Also it saves on disk it contents periodically, and has a Journal so that we can recover from a crash.
+
+The only drawback is that all the entries and indexes must hold in memory. On the other hand, we don't anymore need a cache.
+
+## How it works
+
+Basically, each _Backend_ instance inherit from the _AbstractBTreePartition_ class. We can see that a _Backend_ **must** be a **Btree**.
+
+Data are stored into various tables. In fact, we have one table containing all the entries - the **MasterTable** - and many indexes.
+
+### MasterTable
+
+The _MasterTable_ contains all the entries, serialized.
+
+This table is a <Key, Value> **BTree**, where the key is the entry's **UUID**, and the value the serialized entry.
+
+<DIV class="note" markdown="1">
+Theoretically, we could be able to read it, and restore the whole database, indexes included, assuming that we know which index we have to create. Sadly, it's not enough, as the entries are stored without any information about their position in the **DIT**.
+</DIV>
+
+### Indexes
+
+Each index is also a <key, value> **BTree**, with some exceptions : as we may store multi-valued elements, it's perfectly possible that the value will grow up to a point it's extremely costly to store it serialized. For instance, the _ObjectClass_ index may have thousands of entries for the _Person_ key.
+
+In this case, we use a sub-btree, which is a <key,key> **BTree** (as strange as it sounds, it's an easy way to add a new key without having to rewrite the full value).
+
+The key can be a _String_, or a _ParentIdAndRdn_.
+
+We have 7 system indexes, which are created when the server is started :
+
+* ObjectClass : to easily find any entry associated with a give _ObjectClass_
+* EntryCsn : The Change Sequence Number index
+* Rdn : A special index containing a RDN and its parent
+* Presence : An index used when searching for the presence of an attributeType in an entry
+* Alias : An index used for aliases
+* OneAlias : An index used for children aliases
+* SubAlias : An index used of descendant aliases
+
+The user may define many different indexes, depending on his or her needs.
+
+### The ParentIdAndRdn index
+
+This index is special, as it's used to associate an entry to a position in the **DIT**. Assuming that each entry has a _Dn_, and that this _Dn_ describes a hierarchy, the _ParentIdAndRdn_ index depicts this hierarchy.
+
+The _ParentId_ part refers to the _UUID_ of the parent for the current entry. The _Rdn_ part is the entry _Rdn_. In order to rebuild the full _Dn_ for a given entry, we must get all the _ParentIdAndRdn_ up to the root to grab all the needed _Rdn_.
+
+This index is also used to process one level and sub level indexes.
diff --git a/source/apacheds/advanced-ug/2-server-config.md b/source/apacheds/advanced-ug/2-server-config.md
new file mode 100644
index 0000000..fb245bf
--- /dev/null
+++ b/source/apacheds/advanced-ug/2-server-config.md
@@ -0,0 +1,28 @@
+---
+title: 2 - Server Configuration
+navPrev: 1.5-backend.html
+navPrevText: 1.5 - Backend
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 2.1-config-description.html
+navNextText: 2.1 - Configuration Description
+---
+
+# 2 - Server Configuraion
+
+We will now describe the server configuration. Usually, all the configuration changes
+are done using Apache Directory Studio, which offers a pretty GUI. One can also update
+server configuration using LDAP operations, as the configuration is stored in the **DIT**.
+Note that the server must be restarted after modifying the configuration.
+
+We will then describe the installation layout (ie, how the various files are stored on the disk).
+
+## Chapter content
+
+* [2.1 - Configuration Description](2.1-config-description.html)
+* [2.2 - Instance Layout](2.2-instance-layout.html)
+ * ![debian](images/debian.png)[2.2.1 - Debian instance Layout](2.2.1-debian-instance-layout.html)
+ * ![RPM](images/rpm.png)[2.2.2 - RPM instance Layout](2.2.2-rpm-instance-layout.html)
+ * ![MacOSX](images/mac.png)[2.2.3 - MacOSX instance Layout](2.2.3-macosx-instance-layout.html)
+ * ![Windows](images/windows.png)[2.2.4 - Windows instance Layout](2.2.4-windows-instance-layout.html)
+ * [2.2.5 - Generic instance Layout](2.2.5-generic-instance-layout.html)
diff --git a/source/apacheds/advanced-ug/2.1-config-description.md b/source/apacheds/advanced-ug/2.1-config-description.md
new file mode 100644
index 0000000..d2df5ca
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.1-config-description.md
@@ -0,0 +1,453 @@
+---
+title: 2.1 - Configuration Description
+navPrev: 2-server-config.html
+navPrevText: 2 - Server Configuration
+navUp: 2-server-config.html
+navUpText: 2 - Server Configuration
+navNext: 2.2-instance-layout.html
+navNextText: 2.2 - Instance Layout
+---
+
+# 2.1 - Configuration Description
+
+It's a good practice to not modify the configuration LDIF file by hand, instead use the Studio Configuration plugin to modify the server configuration.
+
+# Overall structure
+
+The configuration is stored in a hierarchical order, where sub-elements are related to their parent. For instance, the _Transports_ are associated to the corresponding _Server_ that uses them. Each server may contain one or more transports.
+
+The following hierarchy describe the different kind of elements that one can configure, and their relationship :
+
+* ou=config
+ * [ads-directoryServiceId=XXXXX (Directory Service)](#directory-service)
+ * [ads-changeLogId=XXXXX (ChangeLog)](#change-log)
+ * [ads-journalId=XXXXX (Journal)](#journal)
+ * [ou=interceptors (Interceptors)](#interceptors)
+ * [ads-interceptorId=authenticationInterceptor (Authentication Interceptor)](#authentication-Interceptor)
+ * [ou=authenticators (Authenticators)](#authenticators)
+ * [ou=passwordPolicies (Password Policies)](#password-policies)
+ * [ou=partitions (Partitions)](#partitions)
+ * [ads-partitionId=system (JDBM Partition)](#jdbm-partition)
+ * [ou=indexes (Indexes)](#indexes)
+ * [ads-indexAttributeId=XXXXX (Indexed Attribute)](#indexed-attribute)
+ * [ou=servers (Servers)](#servers)
+ * [ads-serverId=ldapServer (Ldap Server)](#ldap-server)
+ * [ou=transports (Transports)](#transports)
+ * [ou=replConsumers (ReplConsumers)](#repl-consumers)
+ * [ou=extendedOpHandlers (Extended Operation Handlers)](#extended-op-handlers)
+ * [ou=saslMechHandlers (SASL Mechanisms)](#sasl-mechanisms)
+ * [ads-serverId=kerberosServer (Kerberos Server)](#kerberos-server)
+ * [ou=transports (Transports)](#transports)
+ * [ads-serverId=httpServer (Http Server)](#http-server)
+ * [ou=transports (Transports)](#transports)
+ * [ou=httpWebApps (HttpWebApps)](#http-web-apps)
+ * [ads-serverId=changePasswordServer (ChangePassword Server)](#change-password-server)
+ * [ou=transports (Transports)](#transports)
+
+Note that in order to modify one element, you have to go down the tree up to the entry containing the elements you want to modify. For instance, to modify the TCP port for LDAP server, you have to modify the following entry :
+
+ **ads-transportid=ldap, ou=transports, ads-serverId=ldapServer, ou=servers, ads-directoryServiceId=XXXXX, ou=config**
+
+We will now explain each one of those elements.
+
+<DIV class="note" markdown="1">
+Note that bold attributes are mandatory in the following tables.
+</DIV>
+
+# Directory Service
+
+This is the heart of the entire system : the place where we store the data. Most of the servers are depending on this component. You may have more than one server(e.g LDAP, Kerberos, ChangePassword etc), but only one _DirectoryService_.
+
+Configuration options:
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-directoryServiceId** | _String_ | | The unique identifier for the service |
+| ads-enabled | _boolean_ | true | Tells if the DirectoryService is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-dsReplicaId** | _int_ | 1 | The replication identifier |
+| **ads-dsAccessControlEnabled** | _boolean_ | true | Tells if the Access Control interceptor is active |
+| **ads-dsAllowAnonymousAccess** | _boolean_ | false | Tells if the service allow anonymous access |
+| **ads-dsDenormalizeOpAttrsEnabled** | _boolean_ | true | Tells if the service should denormalize operational attributes |
+| **ads-dsPasswordHidden** | _boolean_ | true | Tells if the passwords should be encrypted (not used) |
+| **ads-dsSyncPeriodMillis** | _long_ | 15000 | The delay in milliseconds before we flush data on disk |
+| ads-dsTestEntries | _String_ | N/A | Not used |
+
+
+## Change Log
+
+The _ChangeLog_ is an optional system that logs every change made on the server, and also records the revert operation, allowing the system to rollback the changes if needed. This is extremely useful when running tests.
+
+Note that at the moment, changelog has in-memory support only.
+
+It's disabled by default.
+
+Configuration options:
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-changeLogId** | _String_ | | The unique identifier for the system |
+| ads-enabled | _boolean_ | false | Tells if the ChangeLog system is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-changeLogExposed** | _boolean_ | false | Tells if the ChangeLog is exposed to the users |
+
+## Journal
+
+The _Journal_ logs every modification on the file system. It's intended to be used if the _DirectoryService_ crashes, as we can re-apply the journal starting from a date in the past where we know that the underlying database is correct.
+
+Configuration options:
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-journalId** | _String_ | N/A | The unique identifier for the Journal |
+| ads-enabled | _boolean_ | false | Tells if the Journal system is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-journalWorkingDir** | _String_ | N/A | The working directory the Journal will be stored in |
+| **ads-journalRotation** | _String_ | N/A | The number of operation stored befoe the journal is rotated |
+| **ads-journalFileName** | _String_ | journal.txt | The file contaning the Journal |
+
+## Interceptors
+
+The default _Interceptors_ are generally not configurable. You don't want to change their order, or remove anyone from the default interceptors unless you are very familiar with the
+internals of ApacheDS and/or including a custom interceptor.
+
+However, at least one default _Interceptor_ can be configured : the _authenticationInterceptor_.
+
+In the case where one would like to add an interceptor, it's enough to add the associated entry containing the interceptor identifier, under the _ou=interceptors_ entry. It must have an order. Here are the elements that can be configured in such a case :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-interceptorid** | _String_ | N/A | The unique identifier for this Interceptor |
+| ads-enabled | _boolean_ | false | Tells if the Interceptor is enabled |
+| description | _String_ | N/A | A short optional description |
+| ads-interceptororder | _int_ | N/A | The position in the chain for this interceptor |
+| ads-interceptorclassname | _String_ | N/A | The class implementing this interceptor |
+
+
+### Authentication Interceptor
+
+This _Interceptor_ is in charge of managing the users authentication. It is associated with _[Authenticators](#authenticators)_, and with _[Password Policies](#password-policies)_.
+
+#### Authenticators
+
+We may have various _Authenticator_ declared for a given server. The default server has three different _Authenticators_, which are :
+
+* anonymousAuthenticator : used for anonymous requests
+* simpleAuthenticator : handle simple authentication, based on a password
+* strongAuthenticator : handle SASL authentication.
+
+One can add a new _Authenticator_, if needed. It's just a matter of creating a new entry under the _ou=authenticators,ads-interceptorId=authenticationInterceptor,ou=interceptors_ entry, containing the two following elements :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-authenticatorId** | _String_ | N/A | The unique identifier for this Authenticator |
+| ads-enabled | _boolean_ | false | Tells if the Partition is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-authenticatorClass** | _String_ | N/A | The FQCN for the class implementing the AUthenticator |
+
+
+### Password Policies
+
+There are many possible configurable options for the _PasswordPolicy_ system. Here is a list of all the options. See the [password policy draft](http://tools.ietf.org/id/draft-behera-ldap-password-policy-10.txt) for an indept explanation of the respective attributes :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-pwdId** | _String_ | N/A | The unique ID of the _PasswordPolicy_ system |
+| **ads-pwdAttribute** | _String_ | userPassword | The name of the attribute to which the password policy is applied |
+| ads-pwdMinAge | _int_ | 0 | Holds the number of seconds that must elapse between modifications to the password |
+| ads-pwdMaxAge | _int_ | 0 | Holds the number of seconds after which a modified password will expire. If 0, never expires |
+| ads-pwdInHistory | _boolean_ | 0 | Specifies the maximum number of used passwords stored in the pwdHistory attribute (0 means no storage) |
+| ads-pwdCheckQuality | _boolean_ | 0 | Indicates how the password quality will be verified while being modified or added (0 means no check) |
+| ads-pwdMinLength | _int_ | 0 | The minimum number of characters that must be used in a password (0 means no limit) |
+| ads-pwdMaxLength | _int_ | 0 | The maximum number of characters that may be used in a password (0 means no limit) |
+| ads-pwdExpireWarning | _boolean_ | 0 | The maximum number of seconds before a password is due to expire, and that expiration warning messages will be returned to an authenticating user (0 means no message wil be sent to user) |
+| ads-pwdGraceAuthNLimit | _int_ | 0 | The number of times an expired password can be used to authenticate (0 means do not allow a expired password for authentication) |
+| ads-pwdGraceExpire | _boolean_ | 0 | Specifies the number of seconds the grace authentications are valid (0 means no limit) |
+| ads-pwdLockout | _boolean_ | false | Flag to indicate if the account needs to be locked after a specified number of
+ consecutive failed bind attempts. The maximum number of consecutive failed bind attempts is specified in ads-pwdMaxFailure |
+| ads-pwdLockoutDuration | _int_ | 300 | The number of seconds that the password cannot be used to authenticate due to too many failed bind attempts |
+| ads-pwdMaxFailure | _int_ | 0 | The number of consecutive failed bind attempts after which the password may not be used to authenticate (0 means no limit) |
+| ads-pwdFailureCountInterval | _int_ | 0 | The number of seconds after which the password failures are purged from the failure counter (0 means reset all the pwdFailureTimes after a successful authentication) |
+| ads-pwdMustChange | _boolean_ | false | Flag to indicate if the password must be changed by the user after they bind to the directory after a password is set or reset by a password administrator |
+| ads-pwdAllowUserChange | _boolean_ | true | Indicates whether users can change their own passwords |
+| ads-pwdSafeModify | _boolean_ | false | Flag to specify whether or not the existing password must be sent along with the new password when being changed |
+| ads-pwdMinDelay | _int_ | 0 | The number of seconds to delay responding to the first failed authentication attempt (0 means no delay) |
+| ads-pwdMaxDelay | _int_ | 0 | The maximum number of seconds to delay when responding to a failed authentication attempt (no delay) 0 means|
+| ads-pwdMaxIdle | _int_ | 0 | The number of seconds an account may remain unused before it becomes locked (0 means infinite) |
+| ads-pwdValidator | _String_ | N/A | The PasswordValidator FQCN (will use DefaultPasswordValidator if not provided) |
+
+
+## Partitions
+
+The _Partition_ is where the server stores your data. There are many parts that need to be configured in order to obtain the best performances out of the server. It's also the part of the configuration you are more likely to modify, adding new _Partitions_ or adding new _Indexes_.
+
+You may have more than one _Partition_ in your _DirectoryService_. There are at least three default _Partition_s, _ou=system_, _ou=config_ and _ou=schema_ _Partition_. ou=system is a _JDBM_ _Partition_ and the two others are _LDIF_ partitions.
+
+### JDBM Partition
+
+A _JDBM Partition_ has the following configurable options :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-partitionid** | _String_ | N/A | The unique identifier for this Partition |
+| ads-enabled | _boolean_ | false | Tells if the Partition is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-partitionsuffix** | _String_ | N/A | The partition DN |
+| ads-contextEntry | _String_ | N/A | The entry associated with the suffix (in LDIF format) |
+| ads-partitionSyncOnWrite | _boolean_ | true | Tells the server to flush on disk on each write |
+
+Once the above elements have been added, the _Partition_ is available. You still have to create some mandatory indexes though.
+
+#### Indexes
+
+Each _Partition_ have indexes, some are mandatory, and others are user provided. Here are the mandatory indexes :
+
+| Index | role |
+|---|---|
+| apacheRdn | Stores the RDN for the entry, and the relation to its parent's RDN |
+| apachePresence | Used to index the attributeTypes used in the entry |
+| apacheOneAlias | Stores the aliases one level below the current entry |
+| apacheSubAlias | Stores the aliases below the current entry |
+| apacheAlias | Stores the aliases |
+| objectClass | Stores the relation between an ObjectClass an the entry using it |
+| entryCSN | Stores the CSN for each entry |
+| administrativeRole | Stores the entries that are AdminstrativePoints |
+
+
+##### Indexed Attribute
+
+Indexed attributes have a type, depending on the _Partition_ type they are associated with. Currently, we have only one type, _JdbmIndex_. They have specific configurable elements.
+
+Each index attribute has four basic elements that can be configured :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-indexAttributeId** | _String_ | N/A | The unique identifier for this indexedAttribute |
+| ads-enabled | _boolean_ | false | Tells if the IntexedAttribute is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-indexHasReverse** | _boolean_ | false | Tells if the IndexedAttribute has a reverse index |
+
+The _JdbmIndex_ type of index has some more configurable elements, all optional :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-indexFileName | _String_ | N/A | The index file name (default to the associated attributeType name) |
+| ads-indexWorkingDir | _String_ | N/A | The index working directory |
+| ads-indexNumDupLimit | _int_ | 512 | The maximum number of values for a single key before we use a sub-tree |
+| ads-indexCacheSize | _int_ | 100 | The number of cached pages for this index |
+
+
+# Servers
+
+As we can see, we can start more than one server (a.k.a service). We have :
+
+* a LDAP server
+* a Kerberos server
+* a changePassword server
+* an HTTP Server
+* a NTP Server
+* a DHCP server
+* a DNS server
+
+There is a distinction though between the servers backed by a _DirectoryService_, and those that aren't (like the HTTP and NTP servers).
+
+All the _DirectoryService_ backed servers share some common parameters, which are exposed in the following table :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-searchBaseDN | _Dn_ | N/A | The place were to start looking for authentication informations |
+| ads-serverId | _String_ | N/A | The server unique name |
+| ads-enabled | _boolean_ | N/A | Tells if the Server is enabled |
+| description | _String_ | N/A | A short optional description |
+
+A server can define more than one transports : for instance, the Kerberos server uses UDP and TCP transports.
+
+## Transports
+
+Here are the parameters for the Transport structure :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-transportId** | _String_ | N/A | The identification |
+| **ads-transportAddress** | _String_ | localhost | The IP Address |
+| **ads-systemPort** | _int_ | -1 | The port |
+| ads-enabled | _boolean_ | N/A | Tells if the Transport system is enabled |
+| description | _String_ | N/A | A short optional description |
+| ads-transportEnableSsl | _boolean_ | false | Tells if SSL is activated (not used for UDP) |
+| ads-transportNbThreads | _int_ | 3 | he number of dedicated threads to process the messages |
+| ads-transportBackLog | _int_ | 50 | The number of messages on hold if the server is overloaded (not used for UDP) |
+
+## Ldap Server
+
+Let's start with the main server : the LDAP server.
+
+The list of attributes that can be modified is exposed in the following table.
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the LdapServer system is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-confidentialityRequired** | _boolean_ | false | Whether or not confidentiality (TLS secured connection) is required |
+| **ads-maxSizeLimit** | _int_ | 1000 | The maximum number of entries the server will return |
+| **ads-maxTimeLimit** | _int_ | 1000 | The maximum number of seconds the server will use to process a search request |
+| **ads-maxPDUSize** | _int_ | 2048 | The maximal size for a PDU. This is currently not leveraged |
+| **ads-saslHost** | _int_ | N/A | The name of this host, validated during SASL negotiation |
+| **ads-saslPrincipal** | _String_ | N/A | The service principal, used by GSSAPI. |
+| **sads-saslRealms** | _List<String>_ | N/A | The list of realms serviced by this host. |
+| ads-keystoreFile | _String_ | N/A | The place on the filesystem where the Keystore is stored |
+| ads-certificatePassword | _String_ | N/A | The certificate's password |
+| ads-replReqHandler | _String_ | (*) | The replication request handler FQCN |
+| ads-replEnabled | _boolean_ | FALSE | Tells if the replication system is enabled |
+
+(*) org.apache.directory.server.ldap.replication.provider.SyncReplRequestHandler
+
+### Repl Consumers
+
+This part of the configuration deals with the replication. It provides all the information for a server to become a consumer. A server can have many different consumers set.
+
+All the consumers are stored under the _ou=replConsumers_ entry, under the respective server entry.
+
+Here are the configurable elements :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| **ads-replConsumerId** | _String_ | N/A | The replica unique identifier |
+| **ads-searchBaseDN** | _String_ | N/A | The base DN for replication |
+| **ads-replProvHostName** | _String_ | N/A | The provider host name |
+| **ads-replProvPort** | _int_ | 389 | The port of the remote server |
+| **ads-replAliasDerefMode** | _String_ | NEVER_DEREF_ALIASES | The alias dereferencing mode to use |
+| **ads-replAttributes** | _String_ | * | The list of attributes to get back |
+| **ads-replRefreshInterval** | _int_ | 60000 | The delay between refreshes (60 seconds) |
+| **ads-replRefreshNPersist** | _boolean_ | true | Sets the replication mode |
+| **ads-replSearchScope** | _String_ | SUBTREE | The scope to use while searching for entries |
+| **ads-replSearchFilter** | _String_ | (objectClass=*) | The filter to use |
+| **ads-replSearchSizeLimit** | _int_ | 0 | The maximum number of entries to get back |
+| **ads-replSearchTimeOut** | _int_ | 0 | The maximum time to wait while fetching the entries |
+| **ads-replUserDn** | _String_ | N/A | The user DN used to bind on the provider |
+| **ads-replUserPassword** | _String_ | N/A | The password of the user |
+| ads-replUseTls | _boolean_ | true | Tells the server to use startTLS during replication |
+| ads-replStrictCertValidation | _boolean_ | true | Tells the provider to check the certificate if provided |
+| ads-replPeerCertificate | _byte[]_ | N/A | The certificate to use for replication |
+| ads-replConsumerImpl | _String_ | ReplicationConsumerImpl | The implementation |
+| ads-replCookie | _byte[]_ | N/A | The last received cookie |
+
+
+### Extended Op Handlers
+
+An LDAP server can handle _ExtendedOperations_, assuming it has the code to do so. In **ApacheDS**, we do that by associating a _Java_ class with each _ExtendedOperation_. We may provide more _ExtendedOperations_ in the future. The list of supported _ExtendedOperations_ is given below :
+
+* CertGenerationRequest : Generate a certificate on demand
+* GracefulShutdownRequest : Requires the server to shutdown gracefully
+* StartTLSExtendedOperation : Process the StartTLS request
+* StoredProcedureExtendedOperation : Execute a Stored procedure
+
+Adding a new _ExntedeOperatonHandler_ is just a matter of adding a new entry under the _ou=extendedOpHandlers_ entry, with the given elements :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the ExtendedOpHandler system is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-extendedOpId** | _String_ | N/A | The ExtendedOpHandler unique identifier |
+| **ads-extendedOpHandlerClass** | _String_ | N/A | The class FQCN that implements the handler |
+
+
+### SASL Mechanisms
+
+We have various SASL mechanisms, which can be configured. the list of supported SASL mechanisms is :
+
+* CRAM-MD5
+* DIGEST-MD5
+* GSS-SPNEGO
+* GSSAPI
+* NTLM
+* SIMPLE
+
+This list is stored in the configuration. It's possible to add new mechanisms if needed, simply by adding an entry containing those elements, under the _ou=saslMechHandlers_
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the Transport system is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-saslMechName** | _String_ | <one the above list> | The mechanism name|
+| **ads-saslMechClassName** | _String_ | N/A | The mechanism class name|
+| ads-ntlmMechProvider | _String_ | N/A | The NTLM provider |
+
+## Kerberos Server
+
+The _KerberosServer_ configuration is an important part of the configuration. It depends on a _DirectoryService_ too, as most of the informations managed by a _KerberosServer_ are store there.
+
+The list of attributes that can be modified is exposed in the following table.
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the KerberosServer is enabled |
+| description | _String_ | N/A | A short optional description |
+| ads-krbAllowableClockSkew | _int_ | 300000 | The allowable clock skew in milliseconds (5 minutes) |
+| ads-krbEncryptionTypes | _List<String>_ | | The encryption types |
+| ads-krbEmptyAddressesAllowed | _boolean_ | true | Whether empty addresses are allowed |
+| ads-krbForwardableAllowed | _boolean_ | true | Whether forwardable addresses are allowed |
+| ads-krbPaEncTimestampRequired | _boolean_ | true | Whether pre-authentication by encrypted timestamp is required |
+| ads-krbPostdatedAllowed | _boolean_ | true | Whether postdated tickets are allowed |
+| ads-krbProxiableAllowed | _boolean_ | true | Whether proxiable addresses are allowed |
+| ads-krbRenewableAllowed | _boolean_ | true | Whether renewable tickets are allowed |
+| ads-krbKdcPrincipal | _String_ | krbtgt/EXAMPLE.COM@EXAMPLE.COM | The service principal name |
+| ads-krbMaximumRenewableLifetime | _long_ | 1000 * 60 * 60 * 24 * 7 | The maximum renewable lifetime in millisconds (7 days) |
+| ads-krbMaximumTicketLifetime | _long_ | 1000 * 60 * 60 * 24 | he maximum ticket lifetime in milliseconds (24 h) |
+| ads-krbPrimaryRealm | _String_ | EXAMPLE.COM | The primary realm |
+| ads-krbBodyChecksumVerified | _boolean_ | true | Whether to verify the body checksum |
+
+
+Of course, a _Transport_ has to be defined under the _KerberosServer_ entry (see [Transports](#transports)).
+
+## Http Server
+
+We have a Http Server embedded, which is used to manage some parts of the server. One can inject a web application, which has direct access to the embedded LdapServer, for instance. It can be useful for sending LDAP requests using DSML, for instance.
+
+There is one single element that can be configured :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the HttpServer is enabled |
+| description | _String_ | N/A | A short optional description |
+| ads-httpConfFile | _String_ | N/A | The configuration file for this server |
+
+An _HttpServer_ without webApps is pretty useless, we now have to configure the underlying web applications
+
+
+### Http Web Apps
+
+Each _WebApp_ configuration must be added under the _ou=webapps_ entry. Here are the configurable elements :
+
+| AttributeType | type | default value | Description |
+|---|---|---|---|
+| ads-enabled | _boolean_ | true | Tells if the HttpServer is enabled |
+| description | _String_ | N/A | A short optional description |
+| **ads-httpWarFile** | _String_ | N/A | The WAR file to use |
+| **ads-id** | _String_ | N/A | The unique ID for this WebApp |
+| **ads-httpAppCtxPath** | _String_ | N/A | The context |
+
+Here is an example of configuration :
+
+```text
+dn: ads-id=webApp1,ou=httpWebApps,ads-serverId=httpServer,ou=servers,ads-directoryServiceId=default,ou=config
+objectclass: top
+objectclass: ads-base
+objectclass: ads-httpWebApp
+ads-Id: webApp1
+ads-httpWarFile: war file 1
+ads-httpAppCtxPath: /home/app1
+```
+
+
+## Change Password Server
+To be added...
+
+# Bean graph
+
+The following picture represent the structure of the container used to store the configuration inside the server. The yellow beans are abstract beans, extended by specific beans.
+
+The bold links mean we can have more than one instance of a bean.
+
+![ApacheDS configuration beans](images/configBeans.png)
+
+
diff --git a/source/apacheds/advanced-ug/2.2-instance-layout.md b/source/apacheds/advanced-ug/2.2-instance-layout.md
new file mode 100644
index 0000000..2a5de7c
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2-instance-layout.md
@@ -0,0 +1,80 @@
+---
+title: 2.3 - Instance Layout
+navPrev: 2.1-config-description.html
+navPrevText: 2.1 - Configuration Description
+navUp: 2-server-config.html
+navUpText: 2 - Server Configuration
+navNext: 2.2.1-debian-instance-layout.html
+navNextText: 2.2.1 - Debian Instance Layout
+---
+
+# 2.2 - Instance Layout
+
+Note that the installation will differ with the target OS. We currently support :
+
+* ![debian](images/debian.png)[2.2.1 - Debian instance Layout](2.2.1-debian-instance-layout.html)
+* ![RPM](images/rpm.png)[2.2.2 - RPM instance Layout](2.2.2-rpm-instance-layout.html)
+* ![MacOSX](images/mac.png)[2.2.3 - MacOSX instance Layout](2.2.3-macosx-instance-layout.html)
+* ![Windows](images/windows.png)[2.2.4 - Windows instance Layout](2.2.4-windows-instance-layout.html)
+* [2.2.5 - Generic instance Layout](2.2.5-generic-instance-layout.html)
+
+When we start a server, after having installed it, it creates some other directories where the data will be stored. Here is a list of those data :
+
+* the partitions data
+* the logs
+* the cache files
+* the replication data (if setup)
+* the run files
+
+
+## Created directories
+
+The following directories are created on your disk :
+
+<PRE>
+installation directory/
+ |
+ +-- conf/
+ | |
+ | +-- config.ldif
+ | |
+ | +-- wrapper.conf
+ | |
+ | +-- log4j.properties
+ |
+ +-- log/
+ | |
+ | [+-- journal.ldif]
+ | |
+ | +-- <log file>
+ |
+ +-- partitions/
+ | |
+ | +-- system/
+ | | |
+ | | +-- master.db
+ | | |
+ | | +-- objectclass.db
+ | | |
+ | | +-- objectclass.lg
+ | | |
+ | | +-- <index XXX lg and db files>
+ | |
+ | +-- schema/
+ | | |
+ | | :
+ | |
+ | +-- <partition XXX>
+ | | |
+ | : :
+ |
+ +-- run/
+ |
+ +-- cache/
+ |
+ +-- syncrepl-data/
+ |
+ +-- NOTICE
+ |
+ +-- LICENSE
+</PRE>
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/2.2.1-debian-instance-layout.md b/source/apacheds/advanced-ug/2.2.1-debian-instance-layout.md
new file mode 100644
index 0000000..e3e02a1
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2.1-debian-instance-layout.md
@@ -0,0 +1,252 @@
+---
+title: 2.2.1 - Debian Instance Layout
+navPrev: 2.2-instance-layout.html
+navPrevText: 2.2 - Instance Layout
+navUp: 2.2-instance-layout.html
+navUpText: 2.2 Instance Layout
+navNext: 2.2.2-rpm-instance-layout.html
+navNextText: 2.2.2 - RPM Instance Layout
+---
+
+# 2.2.1 - ![debian](images/debian.png) Debian Instance Layout
+
+When you run the installer ( <em>sudo dpkg -i apacheds-<version>-<arch>.deb</em> ) on your debian system, it will install the server on your disk, using this layout :
+
+ /
+ |
+ +-- etc/
+ | |
+ | +-- init.d/
+ | |
+ | +-- apacheds-<version>-<instance> The daemon used to start the server
+ +-- opt/
+ | |
+ | +-- apacheds-<version>
+ | |
+ | +-- conf/
+ | | |
+ | | +-- wrapper.conf The wrapper default configuration
+ | |
+ | +-- bin/
+ | | |
+ | | +-- apacheds* The script that starts the server
+ | | |
+ | | +-- wrapper* The binary that starts the server
+ | |
+ | +-- lib
+ | | |
+ | | +-- wrapper-3.2.3.jar
+ | | |
+ | | +-- libwrapper.so
+ | | |
+ | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
+ | | |
+ | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
+ | |
+ | +-- NOTICE
+ | |
+ | +-- LICENSE
+ |
+ +-- var/
+ |
+ +--lib/
+ |
+ +-- apacheds-<version>/
+ |
+ +-- <instance>/
+ |
+ +-- run/
+ | |
+ | +-- apacheds-default.pid The PID of the running process
+ |
+ +-- partitions/ This is were your data will be stored
+ | |
+ | +-- schema/
+ | |
+ | +-- system/
+ | |
+ | +-- example/
+ |
+ +-- log/ This is were the logs are stored
+ | |
+ | +-- apacheds.log
+ | |
+ | +-- wrapper.log
+ |
+ +-- cache/ This is where the various caches are stored
+ | |
+ | +-- changePwdReplayCache.data
+ | |
+ | +-- ou=system.data
+ | |
+ | +-- groupCache.data
+ | |
+ | +-- kdcReplayCache.data
+ |
+ +-- conf/
+ | |
+ | +-- wrapper-instance.conf The specific instance wrapper configuration
+ | |
+ | +-- log4j.properties The log configuration file
+ | |
+ | +-- config.ldif The server configuration. Don't manipulate this file with a text editor !
+ |
+ +-- syncrepl-data/
+
+## Defining an instance
+
+The default installation comes with a default instance (aka <em>'default'</em>). It's possible to define more instances, it's just enough to copy the directory <em>/var/lib/apacheds-<version>/<instances>/default</em> and give it the name of the new instance. Then, be sure to remove everything under the <em>run/</em>, <em>partitions/</em>, <em>log/</em>, <em>syncrepl-data</em> and <em>cache/</em> directories to create a blank new instance. Here, we have created a blank <em>test</em> instance :
+
+ /
+ |
+ +-- var/
+ |
+ +--lib/
+ |
+ +-- apacheds-<version>/
+ |
+ +-- test/
+ |
+ +-- run/
+ |
+ +-- partitions/
+ |
+ +-- log/
+ |
+ +-- cache/
+ |
+ +-- conf/
+ |
+ +-- wrapper-instance.conf
+ |
+ +-- log4j.properties
+ |
+ +-- config.ldif
+
+The next step is to be sure that the config.ldif file is modified to not conflict with any other instance of the server : it's just a mater to change the port used by the server.
+
+When the newly created instance will be created, the partitions will be created.
+
+## Starting the server
+
+As we can have more than one instance, we have more than one instance in <em>/var/lib/apacheds<version>/<instances></em> that can be installed. Each one of these instance can be started using the <em>/etc/init.d/apacheds</em> daemon, passing the instance as a parameter :
+
+ $ sudo /etc/init.d/apacheds-<version> start [<instance>]
+
+The default instance name is 'default'.
+
+All the data for a given instance are stored into this <em>/var/lib/apacheds-<version>/instances/<instance-name></em> directory.
+
+## Stopping the server
+
+Stopping the server is done using the same command, with a different parameter :
+
+ $ sudo /etc/init.d/apacheds-<version> stop [<instance>]
+
+Again, you must provide the instance name if it's not the default one
+
+## Repairing the indexes
+
+Sometime, the database get corrupted. Hopefully, this is not frequent, but when it happens, it left you in a position where there is nothing you can do but re-injecting a backup.
+
+That is more than annoying, and the latest version (2.0.0-M23) as an added feature that allows you to repair the indexes (this is a best effort, it might not work in all cases). Here is the step to follow in order to run the tool :
+
+ $ sudo /etc/init.d/apacheds-<version> repair /var/lib/apacheds-<version>/<instance>
+
+All the indexes will be recreated, based on the content of the master table (which contains all the entries). You can also remove all the database files but the master.db and master.lg files from each user partitions in /var/lib/apacheds-<version>/<instance>/partitions, before running the command.
+
+The server should restart with a working database (it might take a bit of time, but not that much : rebuilding indexes is orders of magnitude faster than injcting entries in the server).
+
+## Logs
+
+You can check what's going on in the <em>apacheds-<version>instances/<instance-name>/log/apacheds.log</em> file, which is created using the configuration set in <em>apacheds-<version>instances/<instance-name>/conf/log4j.properties</em>.
+
+Typically, when you start the server, you will get such log :
+
+ $ more apacheds.log
+ [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
+ directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
+ security breach.
+
+and from the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.out</em> file, which contains everything the server writes on the console, you will read :
+
+ $ more apacheds.out
+ [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
+ directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
+ security breach.
+ _ _ ____ ____
+ / \ _ __ ___ ___| |__ ___| _ \/ ___|
+ / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
+ / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
+ /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
+ |_|
+
+### Log configuration
+
+You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
+
+The default configuration is given below :
+
+ log4j.rootCategory=WARN, R, stdout
+
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
+ log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
+
+ log4j.appender.R.MaxFileSize=1024KB
+ # Keep some backup files
+ log4j.appender.R.MaxBackupIndex=5
+
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # with these we'll not get innundated when switching to DEBUG
+ log4j.logger.jdbm.recman.BaseRecordManager=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
+ log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
+ log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
+
+ # Replication logs
+ log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
+ log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
+
+ # Search log
+ log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
+
+ # Other logs
+ log4j.logger.org.apache.directory.api=FATAL
+ log4j.logger.org.apache.directory.server=FATAL
+ log4j.logger.net.sf.ehcache=FATAL
+ log4j.logger.org.apache.mina=FATAL
+
+
+### JVM setting
+
+Were you to change the memory you want to use for a given instance, you will have to modify the <em>/var/lib/apacheds-<version>/<instances>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
+
+ ##
+ ## In this file you can override parameters specified in the default
+ ## Apache Directory Server config file which is usually at
+ ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
+ ##
+ ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
+ ## For a list of properties that can be set.
+ ##
+
+ ## Override the JRE used
+ # wrapper.java.command=<path-to-java-executable>
+
+ ## Override the JVM memory settings
+ ## Initial Java Heap Size (in MB)
+ # wrapper.java.initmemory=1024
+
+ ## Maximum Java Heap Size (in MB)
+ # wrapper.java.maxmemory=2048
+
+You mainly want to change the memory used by the JVM.
+
diff --git a/source/apacheds/advanced-ug/2.2.2-rpm-instance-layout.md b/source/apacheds/advanced-ug/2.2.2-rpm-instance-layout.md
new file mode 100644
index 0000000..124a974
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2.2-rpm-instance-layout.md
@@ -0,0 +1,174 @@
+---
+title: 2.2.2 - RPM Instance Layout
+navPrev: 2.2.1-debian-instance-layout.html
+navPrevText: 2.2.1 - Debian Instance Layout
+navUp: 2.2-instance-layout.html
+navUpText: 2.2 Instance Layout
+navNext: 2.2.3-macosx-instance-layout.html
+navNextText: 2.2.3 - MacOSX Instance Layout
+---
+
+# 2.2.2 - ![RPM](images/rpm.png) RPM Instance Layout
+
+When you run the installer on your RPM based system, it will install the server on your disk, using this layout :
+
+ /
+ |
+ +-- etc/
+ | |
+ | +-- init.d/
+ | |
+ | +-- apacheds-<version>-<instance> The daemon used to start the server
+ +-- opt/
+ | |
+ | +-- apacheds-<version>
+ | |
+ | +-- conf/
+ | | |
+ | | +-- wrapper.conf The wrapper default configuration
+ | |
+ | +-- bin/
+ | | |
+ | | +-- apacheds* The script that starts the server
+ | | |
+ | | +-- wrapper* The binary that starts the server
+ | |
+ | +-- lib
+ | | |
+ | | +-- wrapper-3.2.3.jar
+ | | |
+ | | +-- libwrapper.so
+ | | |
+ | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
+ | | |
+ | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
+ | |
+ | +-- NOTICE
+ | |
+ | +-- LICENSE
+ |
+ +-- var/
+ |
+ +--lib/
+ |
+ +-- apacheds-<version>/
+ |
+ +-- <instance>/
+ |
+ +-- run/
+ | |
+ | +-- apacheds-default.pid The PID of the running process
+ |
+ +-- partitions/ This is were your data will be stored
+ | |
+ | +-- schema/
+ | |
+ | +-- system/
+ | |
+ | +-- example/
+ |
+ +-- log/ This is were the logs are stored
+ | |
+ | +-- apacheds.log
+ | |
+ | +-- wrapper.log
+ |
+ +-- cache/ This is where the various caches are stored
+ | |
+ | +-- changePwdReplayCache.data
+ | |
+ | +-- ou=system.data
+ | |
+ | +-- groupCache.data
+ | |
+ | +-- kdcReplayCache.data
+ |
+ +-- conf/
+ |
+ +-- wrapper-instance.conf The specific instance wrapper configuration
+ |
+ +-- log4j.properties The log configuration file
+ |
+ +-- config.ldif The server configuration. Don't manipulate this file with a text editr !
+
+
+As we can have more than one instance, we have more than one directory in <em>/var/lib/apacheds</em> that can be installed. Each one of these instance can be started using the <em>/etc/init.d/apacheds</em> daemon, passing the instancz as a parameter :
+
+ $ sudo /etc/init.d/apacheds-<version> start <instance>
+
+The default instance name is 'default'.
+
+All the data for a given instance are stored into this <em>/var/lib/apacheds-<version><em> directory.
+
+## Configuring each instance
+
+You can configure a specific settings. This is done by modifying the configuration files in <em>/var/lib/apacheds-<version>/<instance></em>.
+
+### JVM setting
+Were you to change the memory you want to use for a given instance, you will have to modify the <em>/var/lib/apacheds-<version>/<instance>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
+
+ ##
+ ## In this file you can override parameters specified in the default
+ ## Apache Directory Server config file which is usually at
+ ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
+ ##
+ ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
+ ## For a list of properties that can be set.
+ ##
+
+ ## Override the JRE used
+ # wrapper.java.command=<path-to-java-executable>
+
+ ## Override the JVM memory settings
+ ## Initial Java Heap Size (in MB)
+ # wrapper.java.initmemory=1024
+
+ ## Maximum Java Heap Size (in MB)
+ # wrapper.java.maxmemory=2048
+
+You mainly want to change the memory used by the JVM.
+
+### Log configuration
+
+You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
+
+The default configuration is given below :
+
+ log4j.rootCategory=WARN, R, stdout
+
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
+ log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
+
+ log4j.appender.R.MaxFileSize=1024KB
+ # Keep some backup files
+ log4j.appender.R.MaxBackupIndex=5
+
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # with these we'll not get innundated when switching to DEBUG
+ log4j.logger.jdbm.recman.BaseRecordManager=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
+ log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
+ log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
+
+ # Replication logs
+ log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
+ log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
+
+ # Search log
+ log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
+
+ # Other logs
+ log4j.logger.org.apache.directory.api=FATAL
+ log4j.logger.org.apache.directory.server=FATAL
+ log4j.logger.net.sf.ehcache=FATAL
+ log4j.logger.org.apache.mina=FATAL
+
+
diff --git a/source/apacheds/advanced-ug/2.2.3-macosx-instance-layout.md b/source/apacheds/advanced-ug/2.2.3-macosx-instance-layout.md
new file mode 100644
index 0000000..a01b9e7
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2.3-macosx-instance-layout.md
@@ -0,0 +1,279 @@
+---
+title: 2.2.3 - MacOSX Instance Layout
+navPrev: 2.2.2-rpm-instance-layout.html
+navPrevText: 2.2.2 - RPM Instance Layout
+navUp: 2.2-instance-layout.html
+navUpText: 2.2 Instance Layout
+navNext: 2.2.4-windows-instance-layout.html
+navNextText: 2.2.4 - Windows Instance Layout
+---
+
+# 2.2.3 - ![MacOSX](images/mac.png) MacOSX Instance Layout
+
+
+The Mac OS X installer creates the following layout on yout disk :
+
+ /
+ |
+ +-- usr/
+ | |
+ | +-- bin/
+ | | |
+ | | +-- apacheds The script that starts the server
+ | |
+ | +-- local/
+ | |
+ | +-- apacheds-<version>
+ | |
+ | +-- bin/
+ | | |
+ | | +-- wrapper* The wrapper
+ | | |
+ | | +-- apacheds* The ApacheDS server starter
+ | |
+ | +-- conf/
+ | | |
+ | | +-- wrapper.conf
+ | |
+ | +-- instances/
+ | | |
+ | | +-- default/
+ | | |
+ | | +-- run/
+ | | |
+ | | +-- partitions/
+ | | |
+ | | +-- log/
+ | | |
+ | | +-- conf/
+ | | | |
+ | | | +-- wrapper-instance.conf
+ | | | |
+ | | | +-- log4j.properties
+ | | | |
+ | | | +-- config.ldif
+ | | |
+ | | +-- cache/
+ | | |
+ | | +-- syncrepl-data/
+ | |
+ | +-- lib/
+ | | |
+ | | +-- wrapper-3.2.3.jar
+ | | |
+ | | +-- libwrapper.jnilib
+ | | |
+ | | +-- apacheds-wrapper-2.0.0-M20-SNAPSHOT.jar
+ | | |
+ | | +-- apacheds-service-2.0.0-M20-SNAPSHOT.jar
+ | |
+ | +-- LICENSE
+ | |
+ | +-- NOTICE
+ +-- Library/
+ |
+ +-- LaunchDaemons/
+ |
+ +-- org.apache.directory.server.plist The daemon plist
+
+## Defining an instance
+
+The default installation comes with a default instance (aka <em>'default'</em>). It's possible to define more instances, you will have to copy the directory <em>/usr/local/apacheds-<version>/<instances>/default</em> and give it the name of the new instance. Then, be sure to remove everything under the <em>run/</em>, <em>partitions/</em>, <em>log/</em>, <em>syncrepl-data</em> and <em>cache/</em> directories to create a blank new instance. Here, we have created a blank <em>test</em> instance :
+
+ /
+ |
+ +-- usr/
+ |
+ +--local/
+ |
+ +-- apacheds-<version>/
+ |
+ +-- test/
+ |
+ +-- run/
+ |
+ +-- partitions/
+ |
+ +-- log/
+ |
+ +-- cache/
+ |
+ +-- conf/
+ |
+ +-- wrapper-instance.conf
+ |
+ +-- log4j.properties
+ |
+ +-- config.ldif
+
+The next step is to be sure that the config.ldif file is modified to not conflict with any other instance of the server : it's just a mater to change the port used by the server.
+
+You will also have to define a new daemon starter. This is done by copying the <em>Library/LaunchDaemons/org.apache.directory.server.plist</em> file and modifying it :
+
+ $ sudo cp /Library/LaunchDaemons/org.apache.directory.server.plist /Library/LaunchDaemons/org.apache.directory.server.test.plist
+
+Now, update the folliwing lines in this file :
+
+ <plist version="1.0">
+ <dict>
+ <key>Disabled</key>
+ <false/>
+
+ <key>Label</key>
+ <string>org.apache.directory.server</string> /// Change the name
+
+ <key>ProgramArguments</key>
+ <array>
+ <string>/usr/local/apacheds-2.0.0-M20-SNAPSHOT/bin/apacheds</string>
+ <string>console</string>
+ <string>default</string> /// change the name to 'test'
+ </array>
+
+ <key>RunAtLoad</key>
+ <false/>
+ </dict>
+ </plist>
+
+to something like :
+
+ <plist version="1.0">
+ <dict>
+ <key>Disabled</key>
+ <false/>
+
+ <key>Label</key>
+ <string>org.apache.directory.server.test</string> /// test
+
+ <key>ProgramArguments</key>
+ <array>
+ <string>/usr/local/apacheds-2.0.0-M20-SNAPSHOT/bin/apacheds</string>
+ <string>console</string>
+ <string>test</string> /// test
+ </array>
+
+ <key>RunAtLoad</key>
+ <false/>
+ </dict>
+ </plist>
+
+
+then load the daemon :
+
+ $ sudo launchctl /Library/LaunchDaemons/org.apache.directory.server.test.plist
+
+and start it :
+
+ $ sudo launchctl start org.apache.directory.server.test
+
+When the newly created instance will be created, the partitions will be created.
+
+## Starting the server
+
+As we can have more than one instance, we have more than one instance in <em>/usr/local/apacheds<version>/<instances></em> that can be installed. Each one of these instance can be started using the <em>launchctl</em> command applied on each loaded instance (which has a different name). Here, we will start the server which instances is the one we just defined, ie 'test' :
+
+ $ sudo launchctl start org.apache.directory.server.test
+
+The default instance name is org.apache.directory.server, to start it just type :
+
+ $ sudo launchctl start org.apache.directory.server.
+
+All the data for a given instance are stored into this <em>/usr/local/apacheds-<version>/instances/<instance-name></em> directory.
+
+## Stopping the server
+
+Stopping the server is done using the same command, with a different parameter :
+
+ $ sudo launchctl stop org.apache.directory.server.test
+
+Again, you must provide the instance name
+
+## Logs
+
+You can check what's going on in the <em>apacheds-<version>instances/<instance-name>/log/wrapper.log</em> file, and <em>apacheds-<version>instances/<instance-name>/log/apacheds.log</em> file which is created using the configuration set in <em>apacheds-<version>instances/<instance-name>/conf/log4j.properties</em>.
+
+Typically, when you start the server, you will get such log :
+
+ $ more wrapper.log
+ STATUS | wrapper | 2015/01/04 07:26:14 | --> Wrapper Started as Console
+ STATUS | wrapper | 2015/01/04 07:26:15 | Launching a JVM...
+ INFO | jvm 1 | 2015/01/04 07:26:15 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
+ INFO | jvm 1 | 2015/01/04 07:26:15 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
+ INFO | jvm 1 | 2015/01/04 07:26:15 |
+ INFO | jvm 1 | 2015/01/04 07:26:18 | _ _ ____ ____
+ INFO | jvm 1 | 2015/01/04 07:26:18 | / \ _ __ ___ ___| |__ ___| _ \/ ___|
+ INFO | jvm 1 | 2015/01/04 07:26:18 | / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
+ INFO | jvm 1 | 2015/01/04 07:26:18 | / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
+ INFO | jvm 1 | 2015/01/04 07:26:18 | /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
+ INFO | jvm 1 | 2015/01/04 07:26:18 | |_|
+ INFO | jvm 1 | 2015/01/04 07:26:18 |
+
+
+### Log configuration
+
+You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
+
+The default configuration is given below :
+
+ log4j.rootCategory=WARN, R, stdout
+
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
+ log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
+
+ log4j.appender.R.MaxFileSize=1024KB
+ # Keep some backup files
+ log4j.appender.R.MaxBackupIndex=5
+
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # with these we'll not get innundated when switching to DEBUG
+ log4j.logger.jdbm.recman.BaseRecordManager=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
+ log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
+ log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
+
+ # Replication logs
+ log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
+ log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
+
+ # Search log
+ log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
+
+ # Other logs
+ log4j.logger.org.apache.directory.api=FATAL
+ log4j.logger.org.apache.directory.server=FATAL
+ log4j.logger.net.sf.ehcache=FATAL
+ log4j.logger.org.apache.mina=FATAL
+
+
+### JVM setting
+
+Were you to change the memory you want to use for a given instance, you will have to modify the <em>/usr/local/apacheds-<version>/<instances>/<conf>/wrapper-instance.conf</em> file. Here are the parameter you can configure in this file :
+
+ ##
+ ## In this file you can override parameters specified in the default
+ ## Apache Directory Server config file which is usually at
+ ## /opt/apacheds-2.0.0-M20-SNAPSHOT/conf/wrapper.conf
+ ##
+ ## See also http://wrapper.tanukisoftware.org/doc/english/properties.html
+ ## For a list of properties that can be set.
+ ##
+
+ ## Override the JRE used
+ # wrapper.java.command=<path-to-java-executable>
+
+ ## Override the JVM memory settings
+ ## Initial Java Heap Size (in MB)
+ # wrapper.java.initmemory=1024
+
+ ## Maximum Java Heap Size (in MB)
+ # wrapper.java.maxmemory=2048
+
+You mainly want to change the memory used by the JVM.
+
diff --git a/source/apacheds/advanced-ug/2.2.4-windows-instance-layout.md b/source/apacheds/advanced-ug/2.2.4-windows-instance-layout.md
new file mode 100644
index 0000000..f772f6b
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2.4-windows-instance-layout.md
@@ -0,0 +1,12 @@
+---
+title: 2.2.4 - Windows Instance Layout
+navPrev: 2.2.3-macosx-instance-layout.html
+navPrevText: 2.2.3 - MacOSX Instance Layout
+navUp: 2.2-instance-layout.html
+navUpText: 2.2 Instance Layout
+navNext: 2.2.5-generic-instance-layout.html
+navNextText: 2.2.5 - Generic Instance Layout
+---
+
+# 2.2.4 - ![Windows](images/windows.png) Windows Instance Layout
+TODO...
diff --git a/source/apacheds/advanced-ug/2.2.5-generic-instance-layout.md b/source/apacheds/advanced-ug/2.2.5-generic-instance-layout.md
new file mode 100644
index 0000000..0f6f4df
--- /dev/null
+++ b/source/apacheds/advanced-ug/2.2.5-generic-instance-layout.md
@@ -0,0 +1,158 @@
+---
+title: 2.2.5 - Generic Instance Layout
+navPrev: 2.2.4-windows-instance-layout.html
+navPrevText: 2.2.4 - Windows Instance Layout
+navUp: 2.2-instance-layout.html
+navUpText: 2.2 Instance Layout
+navNext: 3-admin-model.html
+navNextText: 3 - Administrative Model
+---
+
+# 2.2.5 - Generic Instance Layout
+This installer just contain everything needed to start *ApacheDS* but it will not create a daemon not a Windows Service. Would one like to start *ApacheDS*, it will have to start the <em>apacheds.sh</em> or <em>apacheds.bat</bat> script shell.
+
+The installer is just a raeball that needs to be oepend and deflated at the selected position :
+
+ tar xzpf apacheds-<version>.tar.gz
+
+or
+
+ gunzip apacheds-<version>.zip
+
+
+The layout is quite simple :
+
+ apacheds-<version>
+ |
+ +-- lib/
+ | |
+ | +-- apacheds-service-<version>.jar
+ |
+ +-- instances/
+ | |
+ | +-- default/
+ | |
+ | +-- run/
+ | |
+ | +-- partitions/
+ | |
+ | +-- log/
+ | |
+ | +-- conf/
+ | | |
+ | | +-- log4j.properties
+ | | |
+ | | +-- config.ldif
+ | |
+ | +-- cache/
+ |
+ +-- bin/
+ | |
+ | +-- apacheds.bat
+ | |
+ | +-- apacheds.sh
+ | |
+ | +-- cpappend.bat
+ |
+ +-- NOTICE
+ |
+ +-- LICENSE
+
+In order to start the server, you will have to make the shell script executable (it is not by default):
+
+ $ chmod u+x apacheds-<version>/bin/apacheds.sh
+
+## Starting the server
+
+Starting the server is as simple as starting the script :
+
+ $ ./apacheds-<version>/bin/apacheds.sh start
+ Using ADS_HOME: .../apacheds-<version>
+ Using JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
+
+ Starting ApacheDS instance 'default'...
+ $
+
+## Stopping the server
+
+The server is now started. To stop it, you have to execute this command :
+
+ $ ./apacheds-<version>/bin/apacheds.sh stop
+ Using ADS_HOME: .../apacheds-<version>
+ Using JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
+
+ Stoping ApacheDS instance 'default' running as 23080
+ ApacheDS instance 'default' stopped successfully
+
+## Selection a different instance
+
+You can start many instances of the server, assuming you have duplicated the content of teh <em>instances/default</em> directory, and modified the <em>instances/default/conf/config.ldif</em> file (cahnge the transports so that there is no collision between servers)
+
+## Logs
+
+You can check what's going on in the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.log</em> file, which is created using the configuration set in <em>apacheds-<version>/instances/<instance-name>/conf/log4j.properties</em>.
+
+Typically, when you start the server, you will get such log :
+
+ $ more apacheds.log
+ [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
+ directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
+ security breach.
+
+and from the <em>apacheds-<version>/instances/<instance-name>/log/apacheds.out</em> file, which contains everything the server writes on the console, you will read :
+
+ $ more apacheds.out
+ [10:53:05] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of
+ directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible
+ security breach.
+ _ _ ____ ____
+ / \ _ __ ___ ___| |__ ___| _ \/ ___|
+ / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | | \___ \
+ / ___ \| |_) | (_| | (__| | | | __/ |_| |___) |
+ /_/ \_\ .__/ \__,_|\___|_| |_|\___|____/|____/
+ |_|
+
+### Log configuration
+
+You can configure the log level and content by changing the content of the <em>/var/lib/apacheds-<version>/<instance>/<conf>/log4j.properties</em> file.
+
+The default configuration is given below :
+
+ log4j.rootCategory=WARN, R, stdout
+
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
+ log4j.appender.R.File=${apacheds.log.dir}/apacheds.log
+
+ log4j.appender.R.MaxFileSize=1024KB
+ # Keep some backup files
+ log4j.appender.R.MaxBackupIndex=5
+
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # with these we'll not get innundated when switching to DEBUG
+ log4j.logger.jdbm.recman.BaseRecordManager=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_LOG=FATAL
+ log4j.logger.org.apache.directory.server.OPERATION_TIME=FATAL
+ log4j.logger.org.apache.directory.api.CODEC_LOG=FATAL
+ log4j.logger.org.apache.directory.server.ACI_LOG=FATAL
+
+ # Replication logs
+ log4j.logger.org.apache.directory.server.PROVIDER_LOG=FATAL
+ log4j.logger.org.apache.directory.server.CONSUMER_LOG=FATAL
+
+ # Search log
+ log4j.logger.org.apache.directory.CURSOR_LOG=FATAL
+
+ # Other logs
+ log4j.logger.org.apache.directory.api=FATAL
+ log4j.logger.org.apache.directory.server=FATAL
+ log4j.logger.net.sf.ehcache=FATAL
+ log4j.logger.org.apache.mina=FATAL
+
+
diff --git a/source/apacheds/advanced-ug/3-admin-model.md b/source/apacheds/advanced-ug/3-admin-model.md
new file mode 100644
index 0000000..2b04c19
--- /dev/null
+++ b/source/apacheds/advanced-ug/3-admin-model.md
@@ -0,0 +1,83 @@
+---
+title: 3 - Administrative Model
+navPrev: 2.2.5-generic-instance-layout.html
+navPrevText: 2.2.5 - Generic Instance Layout
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 3.1-administrative-points.html
+navNextText: 3.1 - Administrative Points
+---
+
+## Chapter content
+
+* [3.1 - Administrative Points](3.1-administrative-points.html)
+* [3.2 - Operations on an Administrative Point](3.2-operations-on-an-administrativepoint.html)
+
+# 3 - Administrative Model
+
+The **Administrative Model** is a really critical notion that needs to be understood, because it drives many of ApacheDS roles.
+
+It's directly inherited by the **X.500** Administrative model (in fact, we do implement the full **X.500** specification related to **AAs**).
+
+## What is the Administrative Model ?
+
+The idea is to define the **DIT** as some areas which are administered.
+Each area can be defined, and covers a set of entries, and each area can manage one ore more roles we want to manage.
+Those roles can be related to authorization, schema, etc... Each of these areas can overlap, but in any case, if two areas are overlapping,
+then one area totally includes the other one.
+
+The Administrative Model is everything we need to implement in order to be able to manage roles on some defined areas.
+
+## Areas
+
+An Area describes a part of the **DIT** which will start from a specific entry, and spans across a part of the subtree starting at the base entry. An area is administered by an **AP** (Administrative Point) which holds all the needed information about the area and the roles.
+
+We have three kind of areas :
+
+* AAA : Autonomous Administrative Areas
+* SAA : Specific Administrative Areas
+* IAA : Inner Administrative Areas
+
+**AAAs** cover all the roles as if we had declared one **SAA** for each existing role. They overload any area in which they can be encapsulated, hiding them.
+
+**SAAs** cover one specific role, and overload any encapsulating area with the same role.
+
+**IAAs** cover one specific role, but don't not overload any encapsulating area with the same role.
+
+## Administration Point
+
+An **Administration Point** is the point in the **DIT** where an area starts. It defines the roles, and the scope that applies to this area.
+
+Once we know which area we need to define, and the associated roles, it's mandatory to store those information in the **DIT**. This is done by adding **subentries**, which just are entries storing all the administrative configuration.
+
+An Administrative Point is stored as a **subentry** (which is just a plain LDAP entry) just below the base of the defined area.
+
+<DIV class="info" markdown="1">
+ A **Subentry** is just a plain normal entry except that it contains administrative model informations.
+ They are stored below the entry they are managing, as a child entry.
+</DIV>
+
+<DIV class="note" markdown="1">
+ We also use the term "subtree" to define areas. This is due to the fact that we define a subtree specification in the administration point to express the set of selected entries.
+</DIV>
+
+## Roles
+
+The roles are the various aspects which are managed by the administration points. Currently, we manage five different roles in ApacheDS :
+
+* Authorization : manage the access to entries
+* Schema : define the schema to be used by a subtree
+* Triggers : define the triggers that can be leveraged in a subtree
+* Collective Attributes : manage attributes that are valid ofr a set of entries
+* Replication : manage the replication of a set
+
+# ApacheDS 2.0 coverage
+
+Currently, in Apache 2.0, we don't implement all this model. What is supported is :
+
+* AAA and SAA : We don't currently support IAA
+* We don't have more than one schema
+* Replication is not managed with any administration point
+
+Those missing parts will be implemented in the forthcoming versions.
+
diff --git a/source/apacheds/advanced-ug/3.1-administrative-points.md b/source/apacheds/advanced-ug/3.1-administrative-points.md
new file mode 100644
index 0000000..1cbaab5
--- /dev/null
+++ b/source/apacheds/advanced-ug/3.1-administrative-points.md
@@ -0,0 +1,146 @@
+---
+title: 3.1. Administrative points
+navPrev: 3-admin-model.html
+navPrevText: 3 - Administrative Model
+navUp: 3-admin-model.html
+navUpText: 3 - Administrative Model
+navNext: 3.2-operations-on-an-administrativepoint.html
+navNextText: 3.2 Operations on an a Administrative Point
+---
+
+# 3.1. Administrative points
+
+An *Administrative Point* is an entry which is defining a starting point
+from which some of the four existing administrative roles will span. It's
+important to understand than an Administrative Point (or *AP*) comes hand
+in hand with the associated *Subentries*, otherwise it's useless.
+
+Any entry can be defined as an *AP*.
+
+In the following schema, we have depicted a DIT with three *AP*s, the big
+one being an *AAP*, the blue one is a *SAP* and the green one is an *IAP*.
+They all define an area on which they are active and the dashed lines for
+the *IAP* are used to express the fact that an entry within the *IAP* area
+still depends on the higher *AAP*.
+
+
+![APs-tree](images/APs-tree.png)
+
+
+Directly under an *AP*, we will find some *Subentries* defining the scopes
+on which they are active. These scopes (one per subentry) are called
+*SubtreeSpecification*, and define the entries that can be handled by the
+role the Subentry is defined for.
+
+The schema shows the relation between the *AP* and one *SubEntry* :
+
+
+![subentry](images/subentry.png)
+
+
+## Administrative Point
+We will describe the types of Administrative Points we are managing and the
+way they impact their associated Administrative Areas (*AA*)
+
+We have three different kind of *AP* :
+
+* Autonomous AP ( *AAP*)
+* Specific AP (*SAP*)
+* Inner AP (*IAP*)
+
+Those three different *APs* are related with each other in this way :
+
+* *AAPs* manage an *AA* as if all the possible type of *SAP* where declared
+for this area
+* *SAPs* manage an *AA* with respect to one specific kind of role (Access
+Control, Collective Attributes, SubSchema or Trigger Execution)
+* IAPs manage an *AA* inside another *AP*
+* An *AAP* or a *SAP* starts at some point in the tree, and all the entries
+below this *AAP*/*SAP* aren't related to any other *AAP*. That also means
+that if an *AAP*/*SAP* is created below an existing AP, then all the
+entries it covers are unlinked from the previous AP (except that for *SAP*,
+we just logically keep a link to the higher AP for all the other aspects
+but the one covered by the new *SAP*)
+* An *IAP* _must_ be included into another *AP*, being it an *AAP*, *SAP*
+or *IAP*. It controls a specific aspect too, as for the *SAP*, but it will
+be combined with any of the above *AP*.
+
+## Roles
+*AP* are managing some administrative aspect, defined by a role :
+
+* ACI : Manage the access control
+* CollectiveAttribute : Manage the collective attributes
+* SubSchema (not handled atm)
+* TriggrExecution : Manage the execution of stored procedures
+
+# Subentry
+
+Once we have defined an *AP*, we can add some *subentries* which contain
+the description of the administrative actions, including :
+
+* The area this *subentry* covers, defined by a *SubtreeSpecification*,
+named *subtree*.
+
+
+The *SubtreeSpecification* can be complex. Its grammar is given below :
+
+
+ <subtreeSpecification> ::= '{' <sps-e> <subtreeSpecificationComponent-e>'}'
+
+ <subtreeSpecificationComponent-e> ::= <subtreeSpecificationComponent> <sps-e> <subtreeSpecificationComponent-list> | e
+
+ <subtreeSpecificationComponent-list> ::= ',' <sps-e>
+ <subtreeSpecificationComponent> <sps-e>
+ <subtreeSpecificationComponent-list> | e
+
+ <subtreeSpecificationComponent> ::=
+ 'base' <sps> DN
+ | 'specificExclusions' <sps> '{' <sps-e> <specificExclusion-e> '}'
+ | 'minimum' <sps> INTEGER
+ | 'maximum' <sps> INTEGER
+ | 'specificationFilter' <sps> <refinement-filter>
+
+ <specificExclusion-e> ::= <specificExclusion> <sps-e>
+ <specificExclusion-list> | e
+
+ <specificExclusion-list> ::= ',' <sps-e> <specificExclusion> <sps-e>
+ <specificExclusion-list> | e
+
+ <specificExclusion> ::= 'chopBefore' <sps-e> ':' <sps-e> DN | 'chopAfter'
+ <sps-e> ':' <sps-e> DN
+
+ <refinement-filter> ::= <refinement> | FILTER
+
+ <refinement> ::=
+ 'item' <sps-e> ':' <sps-e> <oid>
+ | 'and' <sps-e> ':' <sps-e> '{' <sps-e> <refinement-e> '}'
+ | 'or' <sps-e> ':' <sps-e> '{' <sps-e> <refinement-e> '}'
+ | 'not' <sps-e> ':' <sps-e> <refinement>
+
+ <refinement-e> ::= <refinement> <sps-e> <refinement-list> | e
+
+ <refinement-list> ::= ',' <sps-e> <refinement> <sps-e> <refinement-list> | e
+
+ <oid> ::= DESCR | NUMERICOID
+
+ <sps> ::= ' ' <sps-e>
+
+ <sps-e> ::= ' ' <sps-e> | e
+
+
+Some exemple of such subtrees :
+
+**select all the entries below the AdministrativePoint entry :**
+
+ {}
+
+
+**select all the entries below the ou=users branch
+starting from the AdministrativePoint entry :**
+
+ { base "ou=users" }
+
+
+** exclude all the entries below the "ou=groups" branch : **
+
+ { specificExclusions { chopBefore:"ou=groups" } }
diff --git a/source/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.md b/source/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.md
new file mode 100644
index 0000000..9ef37d3
--- /dev/null
+++ b/source/apacheds/advanced-ug/3.2-operations-on-an-administrativepoint.md
@@ -0,0 +1,171 @@
+---
+title: 3.2 Operations on an Administrative Point
+navPrev: 3.1-administrative-points.html
+navPrevText: 3.1 - Administrative Points
+navUp: 3-admin-model.html
+navUpText: Administrative Model
+navNext: 4-authentication-and-authorization.html
+navNextText: 4 - Authentication and Authorization
+---
+
+# 3.2 Operations on an Administrative Point
+There are six kind of operations we can have on an AdministrativePoint :
+
+* creating a new AP
+* removing an existing AP
+* modifying an existing AP by adding or removing a role
+* renaming an AP
+* moving an AP
+* renaming or moving an AP
+
+Renaming an AP has no impact on the administrative model, as we don't point
+(internally) on the entry's DN, but on its UUID, so the last three
+operations can be gathered into one single Move operation.
+
+Also note that any modification made on an entry's AdminsitrativeRole may
+have an impact on all it's descendants and ascendants (this is true for the
+Modify and Move operation)
+
+## Adding an AP entry
+This seems to be a simple operation, however many checks have to be done in
+order to not break the existing Administrative model.
+
+First of all, we have to check that the added entry contains the
+AdministrativeRole attributeType, and that this role is not empty. As we
+don't have any semantic control for this AT (the attached syntax is just
+expecting the values to be Strings), we have to do those checks in the
+AdminInterceptor.
+
+Here are the checks we must provide :
+* the AdministrativeRole AT must have values
+* those values must be roles (ie one of the 4 possible specific area roles,
+or one of the 3 inner area roles, or the autonomous area role)
+* there should not be duplicated
+* we can't have an AAP with any other role
+* we can't have an IAP and an SAP for the same role
+
+Once those basic checks done, we also have to check that the roles
+hierarchy will remain consistent after the addition, ie :
+* if an IAP is added, it must have a parent AAP or at least a parent SAP
+for the same role
+
+If all those checks are ok, we can add the entry into the base, and update
+the AP cache
+
+## Deleting an AP entry
+This operation is way simpler, as we can't delete an entry if it has some
+children, so there is no need to check that the administrative model is
+consistent.
+
+We just have to remove the entry and update the AP cache
+
+## Modifying an AP entry
+This is way more complex. We can have five kind of modification here :
+* addition of roles
+* deletion of roles
+* replacement of roles
+* creation of a new AdministrativeRole attribute
+* removing of an existing AdministrativeRole attribute
+
+The three first modifications can imply more than one role. We have to deal
+with each of those modifications one by one.
+
+### Addition of roles
+For this modification, we will have to check for each of the roles the very
+same elements than for the Add operation above :
+
+* if the entry does not have an AdministrativeRole AT, we have to create it
+* we must have at least one value
+* the role must be syntaxicaly correct
+* it should not already exist into the attribute
+* we can't add it if we already have an AAP role
+* we can't add it if it's an IAP and a SAP with the same role exists
+* if it's an IAP, it must have a parent AAP or SAP with the same role
+
+If all of those checks are ok, we can update the AP cache, which must be
+cloned, otherwise we may have to rollback the operation if any of the
+following modification fails.
+
+### Removing of roles
+First, if there is no value for this modification, then that means we must
+delete the Attribute. This case will be analyzed later.
+For each of the roles to remove, we have to apply those checks :
+* the role must be syntaxicaly correct
+* it must already exist into the attribute
+* we can't remove an AAP or a SAP if there is a direct IAP in one of its
+direct descendant (ie, if we have a SAP or an AAP while descending into the
+tree, we can stop checking the branch)
+
+Now, if there are no values, we have to get the existing roles and apply he
+same checks
+
+If everything is fine, we can remove the roles from the attribute.
+
+### Replacing roles
+This kind of modifications are not currently supported
+
+## Moving an AP
+As we move the entry, we may induce some inconsistencies in the AP tree.
+
+The problem we might have is that if we move an entry having an IAP in a
+place where this role has no parent AAP or parent SAP with the same role,
+then the AdministrativeModel tree will be inconsistent. We have to check
+this.
+
+# Impact on the existing entries
+
+When we add or remove a role in a server, it may have a huge impact on the
+existing entries, as soon as those roles are associated with some
+subtreeSpecification which defines a set of contained entries. If we remove
+such a role, all the entries pertaining to the associated area have to be
+updated.
+
+It's the same thing if we add a SAP or a AAP, as all the children entries
+which were depending on a higher AP will be modified either.
+
+In any case, we don't even need to define a SubtreeSpecification, as soon
+as an AAP or SAP is created, it excludes all the children entries from any
+other higher AP areas.
+
+## Adding a Role
+Whatever the way we used to add a role (add an entry, modify an existing
+one), there are one thing we have to do depending on the kind of role we
+added. Of course, we stop modifying entries when another lower SAP or AAP
+is defined.
+
+### Adding an AAP
+All the children which were pointing to any higher IAP, SAP or AAP will be
+dereferenced. If a subtree specification is added under the newly added
+AAP, then all the associated entries will be updated.
+
+### Adding a SAP
+All the children which were pointing to any higher IAP or SAP with the same
+type of role, or an AAP, will be dereferenced (of course, only for the
+added type of role, the other references will remain). If a subtree
+specification is added under the newly added SAP, then all the associated
+entries will be updated.
+
+### Adding an IAP
+All the children which were pointing to any higher IAP with the same type
+of role will be dereferenced, and will now point to this newly added IAP.
+All the children which were pointing on a SAP with the same role, or an
+AAP, will be modified to also point on the newly added IAP.
+
+## Removing a role
+Depending on the kind of role we removed, we will have to update the
+entries accordingly.
+
+### Removing an AAP
+All the entries referencing the removed AAP will be updated, and will now
+reference the inherited AAP, SAP and IAP (if any). If there is some higher
+IAP, we will also reference it.
+
+### Removing a SAP
+All the entries referencing the removed SAP will be updated, and will now
+reference either the parent AAP or the parent SAP with the same role, if
+any. We will also reference an IAP with the same role if we have some
+higher in the hierarchy.
+
+### Removing an IAP
+All the entries referencing the removed IAP will be updated. There is
+nothing else to do.
diff --git a/source/apacheds/advanced-ug/4-authentication-and-authorization.md b/source/apacheds/advanced-ug/4-authentication-and-authorization.md
new file mode 100644
index 0000000..2a77b75
--- /dev/null
+++ b/source/apacheds/advanced-ug/4-authentication-and-authorization.md
@@ -0,0 +1,54 @@
+---
+title: 4 - Authentication & Authorization
+navPrev: 3.2-operations-on-an-administrativepoint.html
+navPrevText: 3.2 Operations on an a Administrative Point
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 4.1-authentication.html
+navNextText: 4.1 - Authentication
+---
+
+# 4 - Authentication and Authorization
+
+## Chapter content
+
+* [4.1 - Authentication](4.1-authentication.html)
+ * [4.1.1 - Simple authentication](4.1.1-simple-authn.html)
+ * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
+ * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
+ * [4.1.1.2 - Unauthenticated Authentication](4.1.1.2-unauthenticated-authn.html)
+ * [4.1.2 - SASL authentication](4.1.2-sasl-authn.html)
+ * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
+ * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
+ * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
+ * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
+ * [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
+ * [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
+ * [4.1.3 - Kerberos authentication](4.1.3-kerberos-authn.html)
+ * [4.1.4 - Client authentication through certificates](4.1.4-certificate-authn.html)
+* [4.2 - Authorization](4.2-authorization.html)
+ * [4.2.1 - Introduction](4.2.1-introduction.html)
+ * [4.2.2 - Definitions](4.2.2-definitions.html)
+ * [4.2.3 - Enabling Access Control](4.2.3-enabling-access-control.html)
+ * [4.2.4 - ACI Types](4.2.4-aci-types.html)
+ * [4.2.4.1 - Entry ACI](4.2.4.1-entryaci.html)
+ * [4.2.4.2 - Prescriptive ACI](4.2.4.2-prescriptiveaci.html)
+ * [4.2.4.3 - Subentry ACI](4.2.4.3-subentryaci.html)
+ * [4.2.5 - ACI Elements](4.2.5-aci-elements.html)
+ * [4.2.5.1 - User Classes](4.2.5.1-userclasses.html)
+ * [4.2.5.2 - Protected Items](4.2.5.2-protecteditems.html)
+ * [4.2.5.3 - Permissions](4.2.5.3-permissions.html)
+ * [4.2.5.4 - Subtrees](4.2.5.4-subtrees.html)
+ * [4.2.6 - The ACDF Engine](4.2.6-the-acdf-engine.html)
+ * [4.2.6.1 - How it works](4.2.6.1-how-it-works.html)
+ * [4.2.6.2 - Selections](4.2.6.2-selections.html)
+ * [4.2.6.3 - Constraints](4.2.6.3-constraints.html)
+ * [4.2.6.4 - Priority](4.2.6.4-priority.html)
+ * [4.2.7 - Using ACIs Trail](4.2.7-using-acis-trail.html)
+ * [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
+ * [4.2.8 - ACI Administration](4.2.8-aci-administration.html)
+ * [4.2.9 - Migration from other LDAP Servers](4.2.9-migration-from-other-ldap-servers.html)
+ * [4.2.10 - ACI grammar](4.2.10-aci-grammar.html)
+ * [4.2.11 - Links and References](4.2.11-links-and-references.html)
+* [4.3 Password Policy](4.3-password-policy.html)
+
diff --git a/source/apacheds/advanced-ug/4.1-authentication.md b/source/apacheds/advanced-ug/4.1-authentication.md
new file mode 100644
index 0000000..edcd56c
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1-authentication.md
@@ -0,0 +1,44 @@
+---
+title: 4.1. Authentication
+navPrev: 4-authentication-and-authorization.html
+navPrevText: 4 - Authentication & Authorization
+navUp: 4-authentication-and-authorization.html
+navUpText: 4 - Authentication & Authorization
+navNext: 4.1.1-simple-authn.html
+navNextText: 4.1.1 - Simple authentication
+---
+
+# 4.1. Authentication
+
+## Chapter content
+
+* [4.1.1 - Simple authentication](4.1.1-simple-authn.html)
+ * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
+ * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
+ * [4.1.1.3 - Unauthenticated Authentication](4.1.1.3-unauthenticated-authn.html)
+* [4.1.2 - SASL authentication](4.1.2-sasl-authn.html)
+ * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
+ * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
+ * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
+ * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
+ * [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
+ * [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
+* [4.1.3 - Kerberos authentication](4.1.3-kerberos-authn.html)
+* [4.1.4 - Client authentication through certificates](4.1.4-certificate-authn.html)
+
+**LDAP** is a connected protocol. That means you should create a session before being able to fetch some data from the server. This session is created through an authentication process.
+
+There are two different types of authentication on LDAP :
+* Simple
+* SASL
+
+We will describe those two kind of authentication, and will also describe how this can be leveraged by some specific authentication mechanisms, like Kerberos or based on certificates.
+
+Last, not least, the **Anonymous** authentication will be explain in a separate chapter, even if it's a part of the Simple authentication mechanism.
+
+## Authentication and LDAP Session
+
+An authentication will result in the creation of a LDAP session, which will exist as long as the authenticated user does not physically disconnect from the server.
+
+A Session can have his status changed all alog its life : we can switch from an Authenticated state to an Anonymous state, and back to a SASL authenticated state. The session is created the first time the user connects on the server, and its status changes when the user authenticates.
+
diff --git a/source/apacheds/advanced-ug/4.1.1-simple-authn.md b/source/apacheds/advanced-ug/4.1.1-simple-authn.md
new file mode 100644
index 0000000..a6c65fb
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.1-simple-authn.md
@@ -0,0 +1,22 @@
+---
+title: 4.1.1 Simple Authentication
+navPrev: 4.1-authentication.html
+navPrevText: 4.1 - Authentication
+navUp: 4.1-authentication.html
+navUpText: 4.1 - Authentication
+navNext: 4.1.1.1-anonymous-authn.html
+navNextText: 4.1.1.1 - Anonymous Authentication
+---
+
+# 4.1.1 - Simple Authentication
+
+This authentication mode uses a **Simple Bind Request**. It's just about sending a name and a password to the server, which will either create a session for the given credentials, or reject the request.
+
+As we said, we have to pass a name and a password. This leads to three different combinations of **Simple Bind** :
+
+ * [4.1.1.1 - Anonymous Authentication](4.1.1.1-anonymous-authn.html)
+ * [4.1.1.2 - Name/Password Authentication](4.1.1.2-name-password-authn.html)
+ * [4.1.1.3 - Unauthenticated Authentication](4.1.1.3-unauthenticated-authn.html)
+
+ The second mechanism is a normal authentication. Not all the servers support the 2 following mechanisms.
+
diff --git a/source/apacheds/advanced-ug/4.1.1.1-anonymous-authn.md b/source/apacheds/advanced-ug/4.1.1.1-anonymous-authn.md
new file mode 100644
index 0000000..90283d5
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.1.1-anonymous-authn.md
@@ -0,0 +1,15 @@
+---
+title: 4.1.1.1 Anonymous Authentication
+navPrev: 4.1.1-simple-authn.html
+navPrevText: 4.1.1 - Simple Authentication
+navUp: 4.1.1-simple-authn.html
+navUpText: 4.1.1 - Simple Authentication
+navNext: 4.1.1.2-name-password-authn.html
+navNextText: 4.1.1.2 - Name/Password Authentication
+---
+
+# 4.1.1.1 - Anonymous Authentication
+
+When we don't provide a name or password while proceeding to a Bind, we enter into an Anonymous mode. This is a mode that the server must allow, otherwise the user won't be authenticated.
+
+It worth noticing that one can do a search on a server without first authenticating : the search will be done with an anonymous status (in other words, an Anonymous session will be created in this case).
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.1.1.2-name-password-authn.md b/source/apacheds/advanced-ug/4.1.1.2-name-password-authn.md
new file mode 100644
index 0000000..c4695d4
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.1.2-name-password-authn.md
@@ -0,0 +1,138 @@
+---
+title: 4.1.1.2 Name/Password Authentication
+navPrev: 4.1.1.1-anonymous-authn.html
+navPrevText: 4.1.1.1 Anonymous Authentication
+navUp: 4.1.1-simple-authn.html
+navUpText: 4.1.1 - Simple Authentication
+navNext: 4.1.1.3-unauthenticated-authn.html
+navNextText: 4.1.1.3 - Unauthenticated Authentication
+---
+
+# 4.1.1.2 - Name/Password Authentication
+
+This is the most common authentication system, though not the safest. The user provides his name and a password. Both are passed as clear text to the server, which checks that the user exists, and that its password is correct.
+
+## User's name retrieval
+
+The first thing the server does is to check that the user's name exists in the server. The provided name is always a full **DN**.
+
+Here is an example of simple authentication using Studio, where we authenticate the **uid=admin,ou=system** user :
+
+![Name/Password authentication](images/simple-name-password-authn.png)
+
+The password is not visible here, but this is just for security reasons.
+
+This request is sent to the server, which will check that the **uid=admin,ou=system** exists in its backend. If it doesn't, the authentication will fail.
+
+## Password check
+
+That's not enough : once the user is retrieved, we have to check the provided password against the stored password.
+
+The entry associated with the user should contain a **userPassword** AttributeType, otherwise the request will be rejected. Here is an example of such an entry :
+
+```text
+version: 1
+
+dn: uid=admin,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+cn: system administrator
+sn: administrator
+displayName: Directory Superuser
+uid: admin
+userPassword:: c2VjcmV0
+```
+
+As we can see, this entry has an **userPassword** which contains the base64 encoded password. If we decode the value, we get :
+
+```text
+userPassword: secret
+```
+
+Not exactly safe...
+
+### Password storage
+
+As we have just seen, the password is stored in plain text in the server. This is not exactly safe ! As soon as someone gets access to your server, all the passwords are compromised. This is certainly not the way we want to protect our users !
+
+Hopefully, you can hash those passwords, instead of storing them as provided.
+
+<DIV class="note" markdown="1">
+A hashed password is not a password we can decrypt : when we hash a password, we lose some information. Also note that two different passwords might result in the exact same hash value, but it's unlikely.
+</DIV>
+
+**ApacheDS** let you select an encryption type when you inject a password :
+
+![Password hash method selection](images/password-hash-selection.png)
+
+The following hash method are available :
+
+| Hash method | Comment |
+|---|---|
+| PLAIN | no hashing |
+| MD5 | - |
+| SMD5 | Salted MD5 |
+| crypt | - |
+| SHA | SHA-1 |
+| SSHA | Salted SHA-1 |
+| SHA-256 | SHA-2 (Studio 2.0) |
+| SSHA-256 | Salted SHA-2 (Studio 2.0) |
+| SHA-384 | SHA-2 (Studio 2.0) |
+| SSHA-384 | Salted SHA-2 (Studio 2.0) |
+| SHA-512 | SHA-2 (Studio 2.0) |
+| SSHA-512 | Salted SHA-2 (Studio 2.0) |
+
+### How it works ?
+
+So the server receives a Name/Password authentication request. The password is _in clear text_ up to this point. Once the user is found in the server, and if it has a **userPassword** attributeType, the server extracts each values contained in this AttributeType (we may have more than one password per user) and check the provided password against those values.
+
+This is not as simple as it seems : as we may have hashed the values on the server, we first have to detect the selected hash method, and then hash the provided password, which result is compared to the stored hashed value.
+
+Hopefully, the hash method is stored within the hashed password in the server :
+
+
+ version: 1
+
+ dn: uid=admin,ou=system
+ objectClass: top
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ cn: system administrator
+ sn: administrator
+ displayName: Directory Superuser
+ uid: admin
+ userPassword:: c2VjcmV0
+ userPassword:: {CRYPT}FgGgCMynLfYGw
+
+Here, one of the **userPassword** value is hashed using the **crypt** algorithm. The following code is used to check the provided password :
+
+
+ for each stored password
+ if it has a hash method
+ then
+ extract the method
+ hash the provided password using this method
+ compare the result with the stored hash value
+ if they are equal
+ then
+ return true
+ else
+ compare the provided password with the stored password
+ if they are equal
+ then
+ return true
+ done
+
+ return false
+
+<DIV class="note" markdown="1">
+ A few rules of thumb :<BR/>
+ o Never store a password as plain text. <BR/>
+ o Prefer salted methods over non salted ones, and prefer the strongest one (here, SSHA-512 on Studio 2.0, or SSHA)<BR/>
+ o crypt is also a good choice<BR/>
+ o Pick strong passwords, otherwise if someone gets access to the list of passwords, he or she can run a rainbow attack on it.<BR/>
+ o Keep in mind that whatever you do, the password will be passed in clear text from the client to the server. Always use startTLS before any bind, or at least use SSL<BR/>
+</DIV>
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.md b/source/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.md
new file mode 100644
index 0000000..3f43b09
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.1.3-unauthenticated-authn.md
@@ -0,0 +1,19 @@
+---
+title: 4.1.1.3 Unauthenticated Authentication
+navPrev: 4.1.1.2-name-password-authn.html
+navPrevText: 4.1.1.2 - Name/Password Authentication
+navUp: 4.1.1-simple-authn.html
+navUpText: 4.1.1 - Simple Authentication
+navNext: 4.1.2-sasl-authn.html
+navNextText: 4.1.2 - SASL authentication
+---
+
+# 4.1.1.3 - Unauthenticated Authentication
+
+The **Unauthenticated Authentication** mechanism is a bit specific. First of all, none all the **LDAP** servers support such a mechanism. In fact, the default behavior is for server to return a **unwillingToPerform** result code when someone tries to bind using a null password.
+
+We won't go any deeper into this 'feature', those interested in the rational behind it and the associated drawbacks can read the following links :
+
+ [RFC 4513, Unauthenticated Authentication Mechanism of Simple Bind](http://tools.ietf.org/html/rfc4513#section-5.1.2)
+and
+ [RFC 4513, Unauthenticated Mechanism Security Considerations](http://tools.ietf.org/html/rfc4513#section-6.3.1)
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.1.2-sasl-authn.md b/source/apacheds/advanced-ug/4.1.2-sasl-authn.md
new file mode 100644
index 0000000..17a54f3
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2-sasl-authn.md
@@ -0,0 +1,87 @@
+---
+title: 4.1.2 SASL Authentication
+navPrev: 4.1.1-simple-authn.html
+navPrevText: 4.1.1 - Simple authentication
+navUp: 4.1-authentication.html
+navUpText: 4.1 - Authentication
+navNext: 4.1.2.1-sasl-plain-text-authn.html
+navNextText: 4.1.2.1 - SASL PLAIN text Authentication
+---
+
+# 4.1.2 - SASL Authentication
+
+## Chapter content
+
+* [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
+* [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
+* [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
+* [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
+* [4.1.2.5 - SASL EXTERNAL Authentication](4.1.2.5-sasl-external-authn.html)
+* [4.1.2.6 - SASL NTLM Authentication](4.1.2.6-sasl-ntlm-authn.html)
+
+
+## Introduction
+
+**SASL** authentication is based on a standard described in [RFC 4422](http://www.ietf.org/rfc/rfc4422.txt). **SASL** means **S**imple **A**uthentication and **S**ecurity **L**ayer.
+
+It extends the Simple authentication, by allowing the LDAP server to authenticate the user by various mechanisms.
+
+The **SASL* Authentication is used when a simple user/password authentication is not enough, or when one want to delegate authentication to another system. Many other systems exist, and may take many parameters to authenticate a user. With **SASL**, a challenge/response system is used to get the needed information from the client, up to the point the authentication is either successful or fails.
+
+As **ApacheDS** is based on Java, we only support the **SASL** mechanisms the JDK supports :
+
+ * PLAIN : cleartext user/password authentication
+ * CRAM-MD5 : IMAP/POP authentication
+ * DIGEST-MD5 : Http Digest authentication
+ * GSSAPI : Kerberos authentication
+ * EXTERNAL : External authentication
+ * NTLM : NTLM authentication
+ * GSS-SPNEGO : The SPNEGO authentication
+
+It's important to notice that some of those mechanisms are either useless (PLAIN) or obsolete (DIGEST-MD5).
+
+It's of course possible to modify the list of supported **SASL** mechanisms, by updating the server's configuration. The list of mechanisms is stored as entries under the following **DN** :
+
+
+ ou=saslMechHandlers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
+
+One can also check the configured **SASL** mchanisms on the server by sending a _SeachRequest_ to the server, on the _RootDSE_, looking for the _supportedSASLMechanisms_. Here is the esult on ApacheDS 2.0.0 :
+
+![ApacheDS supported SASL mechanisms](images/supported-sasl-mechanisms.png)
+
+Configuring this list can also be done using **Studio ApacheDS Configuration** plugin :
+
+![ApacheDS SASL mechanisms configuration](images/sasl-mechanisms-config.png)
+
+## Usage and security
+
+Most of the existing **SASL** mechanisms are just either useless (**PLAIN**, **ANONYMOUS**) or too weak to be used in a secured environment (**DIGEST-MD5** or **CRAM-MD5**).
+
+A new **SASL** mechanism has been designed to replace the last two mechanisms : **SCRAM** ([RFC 5802](http://www.ietf.org/rfc/rfc5802.txt)).
+
+In any case, if you are using one of those mechanisms, be sure to activate **TLS**.
+
+
+## Specifications
+
+The SASL specifications are defined by an [IETF Working Group](http://datatracker.ietf.org/wg/sasl/) which has published the following proposed standards :
+
+ * [RFC 4013](http://www.ietf.org/rfc/rfc4013.txt) : SASLprep: Stringprep Profile for User Names and Passwords
+ * [RFC 4422](http://www.ietf.org/rfc/rfc4422.txt) : Simple Authentication and Security Layer (SASL)
+ * [RFC 4505](http://www.ietf.org/rfc/rfc4505.txt) : Anonymous Simple Authentication and Security Layer (SASL) Mechanism
+ * [RFC 4616](http://www.ietf.org/rfc/rfc4616.txt) : The PLAIN Simple Authentication and Security Layer (SASL) Mechanism
+ * [RFC 4752](http://www.ietf.org/rfc/rfc4752.txt) : The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer
+ (SASL) Mechanism
+ * [RFC 5801](http://www.ietf.org/rfc/rfc5801.txt) : Using Generic Security Service Application Program Interface (GSS-API)
+ Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family
+ * [RFC 5802](http://www.ietf.org/rfc/rfc5802.txt) : Salted Challenge Response Authentication Mechanism (SCRAM) SASL
+ and GSS-API Mechanisms
+
+Some other RFCs have been published, for each specific mechanisms, some of them are obsoleted by more recent RFCs :
+
+ * [RFC 2595](http://www.ietf.org/rfc/rfc2595.txt) : Using TLS with IMAP, POP3 and ACAP (updated by RFC 4616)
+ * [RFC 2195](http://www.ietf.org/rfc/rfc2195.txt) : IMAP/POP AUTHorize Extension for Simple Challenge/Response
+ * [RFC 2831](http://www.ietf.org/rfc/rfc2831.txt) : Using Digest Authentication as a SASL Mechanism (obsoleted by RFC 6631)
+ * [RFC 2222](http://www.ietf.org/rfc/rfc2222.txt) : Simple Authentication and Security Layer (SASL) (obsoleted by RFC 4422)
+
+
diff --git a/source/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.md b/source/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.md
new file mode 100644
index 0000000..81b1225
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.1-sasl-plain-text-authn.md
@@ -0,0 +1,25 @@
+---
+title: 4.1.2.1 SASL PLAIN Authentication
+navPrev: 4.1.2-sasl-authn.html
+navPrevText: 4.1.2 - SASL Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.2.2-sasl-cram-md5-authn.html
+navNextText: 4.1.2.2 - SASL CRAM-MD5 Authentication
+---
+
+# 4.1.2.1 SASL PLAIN Authentication
+
+The **SASL PLAIN** authentication is most certainly useless, as one can already authenticate using the **Simple Bind**. However, it's still possible to issue a **SASL PLAIN** authentication on _ApacheDS_.
+
+The difference with a **Simple Bind** is that the user's name is not **DN**, but a meaningful value that is stored into one of the user's entry Attributes.
+
+When the server receives a **SASL PLAIN** bind request, it will look for the first entry which **uid** is equal to the provided value, starting from the server **searchBaseDN** position in the DIT.
+
+<DIV class="note" markdown="1">
+ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
+</DIV>
+
+<DIV class="note" markdown="1">
+ApacheDS does not yet support the authorization identity parameter.
+</DIV>
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.md b/source/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.md
new file mode 100644
index 0000000..7910edf
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.md
@@ -0,0 +1,69 @@
+---
+title: 4.1.2.2 - SASL CRAM-MD5 Authentication
+navPrev: 4.1.2.1-sasl-plain-text-authn.html
+navPrevText: 4.1.2.1 - SASL PLAIN text Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.2.3-sasl-digest-md5-authn.html
+navNextText: 4.1.2.3 - SASL DIGEST-MD5 Authentication
+---
+
+# 4.1.2.2 - SASL CRAM-MD5 Authentication
+
+The **CRAM-MD5** **SASL** mechanism is defined by [RFC 2195](http://www.ietf.org/rfc/rfc2195.txt).
+
+We will have an exchange between the client, which will send an empty _Bind request_ (i.e., the username and credentials won't be sent the first time), and the server will return a challenge.
+
+<DIV class="warning" markdown="1">
+It's not recommended to use this mechanism.
+</DIV>
+
+## Usage
+
+The client first send a _BindRequest_ with no credentials:
+
+
+ MessageType : BIND_REQUEST
+ Message ID : 1
+ BindRequest
+ Version : '3'
+ Name : 'null'
+ Sasl credentials
+ Mechanism :'CRAM-MD5'
+ Credentials : null
+
+The server will return a _BindResponse_ with a SASL_BIND_IN_PROGRESS status :
+
+
+ MessageType : BIND_RESPONSE
+ Message ID : 1
+ BindResponse
+ Ldap Result
+ Result code : (SASL_BIND_IN_PROGRESS) saslBindInProgress -- new
+ Matched Dn : ''
+ Diagnostic message : ''
+ Server sasl credentials : '0x3C 0x2D 0x37 0x38 0x30 0x39 0x37 0x35 0x33 0x32 0x33 0x38 0x35 0x32 0x31 0x37 0x37 0x37 0x37 0x35 0x30 0x2E 0x31 0x33 0x36 0x35 0x34 0x31 0x31 0x39 0x32 0x37 0x30 0x33 0x30 0x40 0x6C 0x6F 0x63 0x61 0x6C 0x68 0x6F 0x73 0x74 0x3E '
+
+and will accordingly send a new _BindRequest_ with the appropriate credentials which have been hashed with the server's provided challenge token :
+
+
+ MessageType : BIND_REQUEST
+ Message ID : 2
+ BindRequest
+ Version : '3'
+ Name : 'null'
+ Sasl credentials
+ Mechanism :'CRAM-MD5'
+ Credentials : (omitted-for-safety)
+
+In any case, the full exchange aims at transferring the user's credential encrypted instead of passing it in clear text. Once the server receives the password, it will check it against the stored password which must be stored in clear text.
+
+When the server receives a **SASL PLAIN** bind request, it will look for the first entry which **uid** is equal to the provided value, starting from the server **searchBaseDN** position in the DIT.
+
+<DIV class="note" markdown="1">
+ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
+</DIV>
+
+<DIV class="warning" markdown="1">
+The password must be stored in clear text on the server. This is a serious weakness...
+</DIV>
diff --git a/source/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.md b/source/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.md
new file mode 100644
index 0000000..9c24789
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.3-sasl-digest-md5-authn.md
@@ -0,0 +1,100 @@
+---
+title: 4.1.2.3 - SASL DIGEST-MD5 Authentication
+navPrev: 4.1.2.2-sasl-cram-md5-authn.html
+navPrevText: 4.1.2.2 - SASL CRAM-MD5 Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.2.4-sasl-gssapi-authn.html
+navNextText: 4.1.2.4 - SASL GSSAPI Authentication
+---
+
+# 4.1.2.3 - SASL DIGEST-MD5 Authentication
+
+The **DIGEST-MD5** **SASL** mechanism is defined by [RFC 2829](http://www.ietf.org/rfc/rfc2829.txt), which has been moved to an _historic_ status by [RFC 6331](http://www.ietf.org/rfc/rfc6631.txt), due to its intrinsic weaknesses.
+
+<DIV class="warning" markdown="1">
+It's not recommended to use this mechanism.
+</DIV>
+
+## Usage
+
+As for **CRAM-MD5** mechanism, there is an exchange between the server and the client. First, the client sends a _BindRequest_ with no credentials :
+
+
+ MessageType : BIND_REQUEST
+ Message ID : 1
+ BindRequest
+ Version : '3'
+ Name : 'null'
+ Sasl credentials
+ Mechanism :'DIGEST-MD5'
+ Credentials : null
+
+The server responds with a _BindResponses_ containing a challenge :
+
+
+ MessageType : BIND_RESPONSE
+ Message ID : 2
+ BindResponse
+ Ldap Result
+ Result code : (SUCCESS) success
+ Matched Dn : ''
+ Diagnostic message : ''
+ Server sasl credentials : '0x72 0x73 0x70 0x61 0x75 0x74 0x68 0x3D 0x37 0x36 0x32 0x64 0x30 0x37 0x32 0x32 0x37 0x64 0x39 0x32 0x33 0x63 0x38 0x38 0x38 0x32 0x64 0x35 0x65 0x63 0x34 0x38 0x30 0x37 0x66 0x36 0x66 0x33 0x34 0x65 '
+
+
+The client then compute the credentials, which contains many informations, some of them being digested with the server's provided data :
+
+
+ MessageType : BIND_REQUEST
+ Message ID : 2
+ BindRequest
+ Version : '3'
+ Name : 'null'
+ Sasl credentials
+ Mechanism :'DIGEST-MD5'
+ Credentials : (omitted-for-safety)
+
+Here, the credentials content is encoded a a byte[], representing those data :
+
+
+ charset = utf-8
+ username = "hnelson"
+ realm = "example.com"
+ nonce = "XVss/yPp4ZToAItV2acf5jgCYU1ALDNoUzGSqJZA"
+ nc = 00000001
+ cnonce = "rQRG4H27HqvdjDVh1OhtrtYD88daWWdvfAj9XGl2"
+ digest-uri = "ldap/localhost"
+ maxbuf = 65536
+ response = ef 63 c3 b9 c3 76 7e e6 c8 4b eb e7 7b 6e d4 56,
+ qop = auth
+
+One of the big difference with **CRAM-MD5** is that we send a _realm_ (**example.com** here), which must be configured on the server and on the client.
+
+The authentication requires 3 pieces of information on the client side :
+
+ * the userName
+ * the realm
+ * the user password
+
+## Server configuration
+
+There are a few parameters we need to configure on the server to allow this mechanism to work. First, we need to define the _searchBaseDn_, which describes where will the server look for entries having the **UID** attributeType. This is a part of the _ldapServer_ configuration :
+
+![ApacheDS SASL searchBaseDn Configuration](images/sasl-digest-md5-config.png)
+
+This parameter (_ads_searchBaseDn_ attributeType) can be found on the following entry :
+
+
+ ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
+
+You also have to configure the **SaslRealms** which is also contained into the same entry (_ads_saslrealms_ attributeType)
+
+
+<DIV class="note" markdown="1">
+ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
+</DIV>
+
+<DIV class="warning" markdown="1">
+The password must be stored in clear text on the server. This is a serious weakness...
+</DIV>
diff --git a/source/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.md b/source/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.md
new file mode 100644
index 0000000..48b6f72
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.4-sasl-gssapi-authn.md
@@ -0,0 +1,47 @@
+---
+title: 4.1.2.4 - SASL GSSAPI Authentication
+navPrev: 4.1.2.3-sasl-digest-md5-authn.html
+navPrevText: 4.1.2.4 - SASL GSSAPI Authentication
+navPrev: 4.1.2.3-sasl-digest-md5-authn.html
+navPrevText: 4.1.2.3 - SASL DIGEST-MD5 Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.2.5-sasl-external-authn.html
+navNextText: 4.1.2.5 - SASL EXTERNAL Authentication
+---
+
+# 4.1.2.4 - SASL GSSAPI Authentication
+
+This authentication mechanism is specified in the following RFCs :
+
+ * [RFC 4752](http://tools.ietf.org/html/rfc4752)
+
+It's more specifically used for Kerberos V5 authentication. As **Apache Directory Server** is also a _Kerberos Server_, it comes as a natural extension of the server.
+
+It requires some configuration though.
+
+## Configuration
+
+The idea is for the **LDAP** server to delegate the authentication to the **Kerberos** Server.
+
+
+## Usage
+
+MessageType : BIND_REQUEST
+Message ID : 1
+ BindRequest
+ Version : '3'
+ Name : ''
+ Sasl credentials
+ Mechanism :'GSSAPI'
+ Credentials : (omitted-for-safety)
+
+
+MessageType : BIND_RESPONSE
+Message ID : 1
+ BindResponse
+ Ldap Result
+ Result code : (SASL_BIND_IN_PROGRESS) saslBindInProgress -- new
+ Matched Dn : 'null'
+ Diagnostic message : 'null'
+ Server sasl credentials : ''
diff --git a/source/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.md b/source/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.md
new file mode 100644
index 0000000..4dd8cb4
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.5-sasl-external-authn.md
@@ -0,0 +1,11 @@
+---
+title: 4.1.2.5 - SASL EXTERNAL Authentication
+navPrev: 4.1.2.4-sasl-gssapi-authn.html
+navPrevText: 4.1.2.4 - SASL GSSAPI Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.2.6-sasl-ntlm-authn.html
+navNextText: 4.1.2.6 - SASL NTLM Authentication
+---
+
+# 4.1.2.5 - SASL EXTERNAL Authentication
diff --git a/source/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.md b/source/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.md
new file mode 100644
index 0000000..be6a1dd
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.2.6-sasl-ntlm-authn.md
@@ -0,0 +1,11 @@
+---
+title: 4.1.2.6 - SASL NTLM Authentication
+navPrev: 4.1.2.5-sasl-external-authn.html
+navPrevText: 4.1.2.6 - SASL EXTERNAL Authentication
+navUp: 4.1.2-sasl-authn.html
+navUpText: 4.1.2 - SASL Authentication
+navNext: 4.1.3-kerberos-authn.html
+navNextText: 4.1.3 - Kerberos authentication
+---
+
+# 4.1.2.6 - SASL NTLM Authentication
diff --git a/source/apacheds/advanced-ug/4.1.3-kerberos-authn.md b/source/apacheds/advanced-ug/4.1.3-kerberos-authn.md
new file mode 100644
index 0000000..44faea2
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.3-kerberos-authn.md
@@ -0,0 +1,11 @@
+---
+title: 4.1.3 - Kerberos authentication
+navPrev: 4.1.2.6-sasl-ntlm-authn.html
+navPrevText: 4.1.2.6 - SASL NTLM Authentication
+navUp: 4.1-authentication.html
+navUpText: 4.1 - Authentication
+navNext: 4.1.4-certificate-authn.html
+navNextText: 4.1.4 - Client authentication through certificates
+---
+
+# 4.1.3 - Kerberos authentication
diff --git a/source/apacheds/advanced-ug/4.1.4-certificate-authn.md b/source/apacheds/advanced-ug/4.1.4-certificate-authn.md
new file mode 100644
index 0000000..9fd39c8
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.1.4-certificate-authn.md
@@ -0,0 +1,15 @@
+---
+title: 4.1.4 - Client authentication through certificates
+navPrev: 4.1.3-kerberos-authn.html
+navPrevText: 4.1.3 - Kerberos authentication
+navUp: 4.1-authentication.html
+navUpText: 4.1 - Authentication
+navNext: 4.2-authorization.html
+navNextText: 4.2 - Authorization
+---
+
+# 4.1.4 - Client authentication through certificates
+
+To be compoleted...
+
+At the moment, the server does not support this feature.
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.2-authorization.md b/source/apacheds/advanced-ug/4.2-authorization.md
new file mode 100644
index 0000000..4878d27
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2-authorization.md
@@ -0,0 +1,67 @@
+---
+title: 4.2 - Authorization
+navPrev: 4.1.4-certificate-authn.html
+navPrevText: 4.1.4 - Client authentication through certificates
+navUp: 4-authentication-and-authorization.html
+navUpText: 4 - Authentication & Authorization
+navNext: 4.3-password-policy.html
+navNextText: 4.3 - Password Policy
+---
+
+# 4.2 - Authorization
+ApacheDS uses an adaptation of the X.500 basic access control scheme in
+combination with X.500 subentries to control access to entries and
+attributes within the DIT. This document will show you how to enable the
+basic access control mechanism and how to define access control information
+to manage access to protected resources.
+
+## Chapter content
+
+* [4.2.1 - Introduction](4.2.1-introduction.html)
+* [4.2.2 - Definitions](4.2.2-definitions.html)
+* [4.2.3 - Enabling access control](4.2.3-enabling-access-control.html)
+* [4.2.4 - Aci Types](4.2.4-aci-types.html)
+* [4.2.5 - Aci Elements](4.2.5-aci-elements.html)
+* [4.2.6 - The Acdf Engine](4.2.6-the-acdf-engine.html)
+* [4.2.7 - Using Acis Trail](4.2.7-using-acis-trail.html)
+* [4.2.8 - Acis Administration](4.2.8-acis-administration.html)
+* [4.2.9 - Migration from other Ldap Servers](4.2.9-migration-from-other-ldap-servers.html)
+* [4.2.10 - Aci Grammar](4.2.10-aci-grammar.html)
+* [4.2.11 - Links and References](4.2.11-links-and-references.html)
+
+
+## Some Simple Examples
+
+The ACIItem syntax is very expressive and that makes it extremely powerful
+for specifying complex access control policies. However the syntax is not
+very easy to grasp for beginners. For this reason we start with simple
+examples that focus on different protection mechanisms offered by the
+ACIItem syntax. We do this instead of specifying the grammar which is not
+the best way to learn a language.
+
+<DIV class="warning" markdown="1">
+<B>Before you go any further...</B>
+Please don't go any further until you have read up on the use of
+Subentries. Knowledge of subentries, subtreeSpecifications, administrative
+areas, and administrative roles are required to properly digest the
+following material.
+</DIV>
+
+Before going on to these trails you might want to set up an Administrative
+Area for managing access control via prescriptiveACI. Both subentryACI and
+prescriptiveACI require the presence of an Administrative Point entry. For
+more information and code examples see [ACAreas](acareas.html).
+
+### ACI Trails
+
+Here are some trails that resemble simple HOWTO guides. They're ordered
+with the most pragmatic usage first. We will add to these trails over
+time.
+
+| Trail | Description |
+|---|---|
+| DenySubentryAccess (TBW) | Protecting access to subentries themselves. || Enabling access to browse and read all entries and their attributes by authenticated users. |
+| [Allow Self Password Modify](4.2.7.2-allow-self-password-modify.html) | Granting users the rights needed to change their own passwords. |
+| GrantAddDelModToGroup (TBW) | Granting add, delete, and modify permissions to a group of users. |
+| GrantModToEntry (TBW) | Applying ACI to a single entry. |
+| [Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
diff --git a/source/apacheds/advanced-ug/4.2.1-introduction.md b/source/apacheds/advanced-ug/4.2.1-introduction.md
new file mode 100644
index 0000000..7083bbd
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.1-introduction.md
@@ -0,0 +1,46 @@
+---
+title: 4.2.1 - Introduction
+navPrev: 4.2-authorization.html
+navPrevText: 4.2 - Authorization
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.2-definitions.html
+navNextText: 4.2.2 - Definitions
+---
+
+# 4.2.1 - Introduction
+
+First of all, one has to understand that Authorization in this context
+involves four components. The principle is :
+
+<DIV class="info" markdown="1">
+ grants <b>Users</b> authorization to proceed some <b>Action</b> on a set of
+<b>Items</b> in a defined <b>Area</b>
+</DIV>
+
+Let's define the four components.
+
+**Users** :
+
+> the set of entity being able to do some action. It can be every user,
+> the entry owner, a list of users, members of a group or a selection in the
+> DIT. Basically, a **user** is defined as an entry in the DIT.
+
+**Action** :
+
+> Generally speaking, a grant or denial to do something, depending on the
+> selected item (read, delete, etc).
+
+**Items** :
+> An **item** is an element of the DIT. It can be an Entry, an
+> AttributeType, some AttributeValues. It can also define some constraints
+> that will apply on the selected entries.
+
+**Area** :
+
+> It defines the set of entries on which the defined ACI applies. It can
+> be the whole DIT, a part of the DIT, a selection of entries, an Entry.
+
+We implement those elements using **ACI**s.
+
+The following chapters will present you the system inside out.
diff --git a/source/apacheds/advanced-ug/4.2.10-aci-grammar.md b/source/apacheds/advanced-ug/4.2.10-aci-grammar.md
new file mode 100644
index 0000000..bcbdd70
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.10-aci-grammar.md
@@ -0,0 +1,271 @@
+---
+title: 4.2.10 - ACI grammar
+navPrev: 4.2.9-migration-from-other-ldap-servers.html
+navPrevText: 4.2.9 - Migration from other LDAP servers
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.11-links-and-references.html
+navNextText: 4.2.11 - Links and references
+---
+
+# 4.2.10 - ACI grammar
+
+The ACI attributes store data following a specific structure, which is
+define by this grammar :
+
+
+ <wrapperEntryPoint> ::= <SP*> '{' <SP*> <mainACIItemComponent> <SP*>
+ <mainACIItemComponents> '}' <SP*> EOF
+
+ <mainACIItemComponents> ::= ',' <SP*> <mainACIItemComponent> <SP*>
+ <mainACIItemComponents> | e
+
+ ** Note : we have to allow only one of each option
+ <mainACIItemComponent> ::=
+ "identificationTag" <SP+> SAFEUTF8STRING
+ | "precedence" <SP+> INTEGER
+ | "authenticationLevel" <SP+> <authenticationLevel>
+ | "itemOrUserFirst" <SP+> <itemOrUserFirst>
+
+ <authenticationLevel> ::= "none" | "simple" | "strong"
+
+ <itemOrUserFirst> ::=
+ "itemFirst" <SP*> ':' <SP*> '{' <SP*> <itemType> <SP*>
+ '}'
+ |
+ "userFirst" <SP*> ':' <SP*> '{' <SP*> <userType> <SP*>
+ '}'
+
+ <itemType> ::=
+ "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}' <SP*>
+ ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
+ <anyItemPermission*> '}'
+ |
+ "itemPermissions" <SP+> '{' <SP*> <itemPermissions?> '}' <SP*>
+ ',' <SP*> "protectedItems" <SP*> '{' <SP*>
+ <protectedItem?> '}'
+
+ <userType> ::=
+ "userClasses" <SP+> '{' <SP*> <userClass?> '}' <SP*> ','
+ <SP*> '{' <SP*> <anyUserPermission> <SP*>
+ <anyUserPermission*> '}'
+ |
+ "userPermissions" <SP+> '{' <SP*> <userPermissions?> '}'
+ <SP*> ','
+ <SP*> "userClasses" <SP+> '{' <SP*>
+ <userClass?> '}'
+
+ <protectedItem?> ::= <protectedItem> <SP*> <protectedItem*> | e
+
+ <protectedItem*> ::= ',' <SP*> <protectedItem> <SP*> <protectedItem*> | e
+
+ <protectedItem> ::=
+ "entry"
+ | "allUserAttributeTypes"
+ | "attributeType" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+ | "allAttributeValues" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+ | "allUserAttributeTypesAndValues"
+ | ATTRIBUTE_VALUE_CANDIDATE
+ | "selfValue" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+ | RANGE_OF_VALUES_CANDIDATE
+ | "maxValueCount" <SP+> '{' <SP*> '{' <SP*> <valueCountType> <SP*> '}'
+ <SP*> <maxValueCount*> '}'
+ | "maxImmSub" <SP+> INTEGER
+ | "restrictedBy" <SP+> '{' <SP*> '{' <SP*> <typeValueIn> <SP*> '}'
+ <SP*> <restrictedValue*> '}'
+ | "classes" <SP+> <refinement>
+
+ <maxValueCount*> ::= ',' <SP*> '{' <SP*> <valueCountType> <SP*> '}' <SP*>
+ <maxValueCount*> | e
+
+ <valueCountType> ::=
+ "type" <SP+> <oid> <SP*> ',' <SP*> "maxCount" <SP+>
+ INTEGER
+ |
+ "maxCount" <SP+> INTEGER <SP*> ',' <SP*> "type" <SP+>
+ <oid>
+
+ <restrictedValue*> ::= ',' <SP*> '{' <SP*> <typeValueIn> <SP*> '}' <SP*>
+ <restrictedValue*> | e
+
+ <typeValueIn> ::=
+ "type" <SP+> <oid> <SP*> ',' <SP*> "valuesIn" <SP+> <oid>
+ |
+ "valuesIn" <SP+> <oid> <SP*> ',' <SP*> "type" <SP+> <oid>
+
+ <oids> ::= ',' <SP*> <oid> <SP*> <oids> | e
+
+ <itemPermissions?> ::= '{' <SP*> <anyItemPermission> <SP*>
+ <anyItemPermission*> '}' <SP*> <itemPermissions*> | e
+
+ <itemPermissions*> ::=
+ ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
+ <anyItemPermission*> '}' <SP*> <itemPermissions*> | e
+
+ <anyItemPermission*> ::= ',' <SP*> <anyItemPermission> <SP*>
+ <anyItemPermission*> | e
+
+ <anyItemPermission> :
+ "precedence" <SP+> <INTEGER>
+ | "userClasses" <SP+> '{' <SP*> <userClass?> '}'
+ | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
+
+ <grantAndDenial?> ::= <grantAndDenial> <SP*> <grantAndDenial*> | e
+
+ <grantAndDenial*> ::= ',' <SP*> <grantAndDenial> <SP*> <grantAndDenial*>
+
+ <grantAndDenial> :
+ "grantAdd"
+ | "denyAdd"
+ | "grantDiscloseOnError"
+ | "denyDiscloseOnError"
+ | "grantRead"
+ | "denyRead"
+ | "grantRemove"
+ | "denyRemove"
+ | "grantBrowse"
+ | "denyBrowse"
+ | "grantExport"
+ | "denyExport"
+ | "grantImport"
+ | "denyImport"
+ | "grantModify"
+ | "denyModify"
+ | "grantRename"
+ | "denyRename"
+ | "grantReturnDN"
+ | "denyReturnDN"
+ | "grantCompare"
+ | "denyCompare"
+ | "grantFilterMatch"
+ | "denyFilterMatch"
+ | "grantInvoke"
+ | "denyInvoke"
+
+ <userClass?> ::= <userClass> <SP*> <userClass*> | e
+
+ <userClass*> ::= ',' <SP*> <userClass> <SP*> <userClass*> | e
+
+ <userClass> :
+ "allUsers"
+ | "thisEntry"
+ | "parentOfEntry"
+ | "name" <SP+> '{' <SP*> <distinguishedName> <SP*> <name*> '}'
+ | "userGroup" <SP+> '{' <SP*> <distinguishedName> <SP*> <userGroup*>
+ '}'
+ | "subtree" <SP+> '{' <SP*> '{' <SP*> <subtreeSpecificationComponent?>
+ '}' <SP*> <subTree*> '}'
+
+ <name*> ::= ',' <SP*> <distinguishedName> <SP*> <name*> | e
+
+ <userGroup*> ::= ',' <SP*> <distinguishedName> <SP*> <userGroup*> | e
+
+ <subTree*> ::= ',' <SP*> '{' <SP*> <subtreeSpecificationComponent?> '}'
+ <SP*> <subTree*> | e
+
+ <userPermissions?> ::= '{' <SP*> <anyUserPermission> <SP*>
+ <anyUserPermission*> '}' <SP*> <userPermissions*> | e
+
+ <userPermissions*> ::=
+ ',' <SP*> '{' <SP*> <anyUserPermission> <SP*>
+ <anyUserPermission*> '}' <SP*> <userPermissions*> | e
+
+ <anyUserPermission*> ::= ',' <SP*> <anyUserPermission> <SP*>
+ <anyUserPermission*> | e
+
+ <anyUserPermission> :
+ "precedence" <SP+> <INTEGER>
+ | "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}'
+ | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
+
+ <subtreeSpecificationComponent?> ::= <subtreeSpecificationComponent> <SP*>
+ <subtreeSpecificationComponent*> | e
+ <subtreeSpecificationComponent*> ::= ',' <SP*>
+ <subtreeSpecificationComponent> <SP*> <subtreeSpecificationComponent*> | e
+
+ <subtreeSpecificationComponent> :
+ "base" <SP+> <distinguishedName>
+ | "specificExclusions" <SP+> '{' <SP*> <specificExclusion?> '}'
+ | "minimum" <SP+> INTEGER
+ | "maximum" <SP+> INTEGER
+
+ <specificExclusion?> ::= <specificExclusion> <SP*> <specificExclusion*> | e
+
+ <specificExclusion*> ::= ',' <SP*> <specificExclusion> <SP*>
+ <specificExclusion*> | e
+
+ <specificExclusion> ::=
+ "chopBefore" <SP*> ':' <SP*> <distinguishedName>
+ |
+ "chopAfter" <SP*> ':' <SP*> <distinguishedName>
+
+ <refinement> ::=
+ "item" <SP*> ':' <SP*> <oid>
+ |
+ "and" <SP*> ':' <SP*> '{' <refinements?> '}'
+ |
+ "or" <SP*> ':' <SP*> '{' <refinements?> '}'
+ |
+ "not" <SP*> ':' <SP*> '{' <refinements?> '}'
+
+ <refinements?> ::= <SP*> <refinements?> <SP*> <refinement*> | e
+
+ <refinement*> ::= ',' <SP*> <refinement> <SP*> <refinement*> | e
+
+ <distinguishedName> ::= SAFEUTF8STRING
+
+ <oid> ::= DESCR | NUMERICOID
+
+ SAFEUTF8CHAR :
+ '\u0001'..'\u0021' |
+ '\u0023'..'\u007F' |
+ '\u00c0'..'\u00d6' |
+ '\u00d8'..'\u00f6' |
+ '\u00f8'..'\u00ff' |
+ '\u0100'..'\u1fff' |
+ '\u3040'..'\u318f' |
+ '\u3300'..'\u337f' |
+ '\u3400'..'\u3d2d' |
+ '\u4e00'..'\u9fff' |
+ '\uf900'..'\ufaff' ;
+
+ <SP+> ::= <SP> <SP*>
+ <SP*> ::= <SP> <SP*> | e
+ <SP> ::= ' ' | '\t' | '\n' | '\r' ;
+
+
+ ALPHA : 'A'..'Z' | 'a'..'z' ;
+
+ <INTEGER> ::= <DIGIT> | <LDIGIT> <DIGIT> <DIGIT*>
+ <DIGIT> ::= '0' | <LDIGIT> ;
+ <LDIGIT> ::= '1'..'9' ;
+ <DIGIT*> ::= <DIGIT> <DIGIT*> | e
+
+ HYPHEN : '-' ;
+
+ NUMERICOID : INTEGER ( DOT INTEGER )+ ;
+
+ DOT : '.' ;
+
+ INTEGER_OR_NUMERICOID
+ :
+ ( INTEGER DOT ) => NUMERICOID
+ |
+ INTEGER
+
+ SAFEUTF8STRING : '"'! ( SAFEUTF8CHAR )* '"'! ;
+
+ DESCR
+ :
+ ( "attributeValue" ( SP! )+ '{' ) =>
+ "attributeValue"! ( SP! )+ '{'! ( options : . )* '}'!
+ | ( "rangeOfValues" ( SP! )+ '(' ) =>
+ "rangeOfValues"! ( SP! )+ FILTER
+ | ALPHA ( ALPHA | DIGIT | HYPHEN )*
+ ;
+
+ FILTER : '(' ( ( '&' (SP)* (FILTER)+ ) | ( '|' (SP)* (FILTER)+ ) | ( '!'
+ (SP)* FILTER ) | FILTER_VALUE ) ')' (SP)* ;
+
+ FILTER_VALUE : (options: ~( ')' | '(' | '&' | '|' | '!' ) ( ~(')') )* ) ;
+
diff --git a/source/apacheds/advanced-ug/4.2.11-links-and-references.md b/source/apacheds/advanced-ug/4.2.11-links-and-references.md
new file mode 100644
index 0000000..bb990c7
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.11-links-and-references.md
@@ -0,0 +1,20 @@
+---
+title: 4.2.11 - Links and References
+navPrev: 4.2.10-aci-grammar.html
+navPrevText: 4.2.10 - ACI grammar
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.3-password-policy.html
+navNextText: 4.3 - Password Policy
+---
+
+# 4.2.11 Links and references
+
+The **Apache Directory Server** authorization system is based on the **X.500**
+specifications. Those documents are available on [X.500 freely available specifications](http://www.x500standard.com/index.php?n=Ig.LatestAvail)
+, and more specifically [X.501](http://www.itu.int/rec/T-REC-X.501-200811-I!Cor2/dologin.asp?lang=e&id=T-REC-X.501-200811-I!Cor2!PDF-E&type=items)
+.
+
+Some more 'user friendly' documentation about Access Control can be found
+in **Chadwick**'s book, available at [X.500 book](http://sec.cs.kent.ac.uk/x500book/)
+, chapter 8.
diff --git a/source/apacheds/advanced-ug/4.2.2-definitions.md b/source/apacheds/advanced-ug/4.2.2-definitions.md
new file mode 100644
index 0000000..896c224
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.2-definitions.md
@@ -0,0 +1,35 @@
+---
+title: 4.2.2 - Definitions
+navPrev: 4.2.1-introduction.html
+navPrevText: 4.2.1 - Introduction
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.3-enabling-access-control.html
+navNextText: 4.2.3 - Enabling Access Control
+---
+
+# 4.2.2 - Definitions
+
+**ACI** :
+
+> Access Control Information. The set of all the information which might
+> be relevant to an access control decision for a given subject.
+
+**ACDF** :
+
+> Access Control Decision Function. It is the function used to decide
+> whether a particular subject has a particular access right by virtue of
+> applicable ACI items.
+
+**protected item** :
+
+> A protected item is the element of directory information being
+> accessed. The protected items are entries, attributes, attribute values
+> and distinguished names. Access to each protected item can be separately
+> controlled through ACI.
+
+**subject** :
+
+> The entity acting on the server. It can be a person, a program, ... It
+> aggregates the identity and the security related attributes (passwords,
+> ceritifcates...) for this entity.
diff --git a/source/apacheds/advanced-ug/4.2.3-enabling-access-control.md b/source/apacheds/advanced-ug/4.2.3-enabling-access-control.md
new file mode 100644
index 0000000..3c69c30
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.3-enabling-access-control.md
@@ -0,0 +1,37 @@
+---
+title: 4.2.3 - Enabling Access Control
+navPrev: 4.2.2-definitions.html
+navPrevText: 4.2.2 - Definitions
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.4-aci-types.html
+navNextText: 4.2.4 - Aci Types
+---
+
+# 4.2.3 - Enabling Access Control
+
+The Access Control Subsystem (ACI) is described in the Basic User Guide. The ACI is disabled by default and the simplest way to enable it is to [use Apache Directory Studio](apacheds/basic-ug/3.2-basic-authorization.html#enable-the-aci-subsystem).
+
+After the server has started, the relevant entry can be found in *config.ldif_migrated* :
+
+ # default, config
+ dn: ads-directoryServiceId=default,ou=config
+ ads-directoryserviceid: default
+ ads-dssyncperiodmillis: 15000
+ ads-dsallowanonymousaccess: TRUE
+ ads-dsreplicaid: 1
+ ads-dsaccesscontrolenabled: FALSE
+ ads-dspasswordhidden: FALSE
+ ads-dsdenormalizeopattrsenabled: FALSE
+ ads-enabled: TRUE
+ objectclass: top
+ objectclass: ads-base
+ objectclass: ads-directoryService
+
+The following ldapmodify (by the admin user) will activate the ACI Subsystem when the server is next restarted :
+
+ # turn on Access Control
+ dn: ads-directoryServiceId=default,ou=config
+ changetype: modify
+ replace: ads-dsaccesscontrolenabled
+ ads-dsaccesscontrolenabled: TRUE
diff --git a/source/apacheds/advanced-ug/4.2.4-aci-types.md b/source/apacheds/advanced-ug/4.2.4-aci-types.md
new file mode 100644
index 0000000..3cfc643
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.4-aci-types.md
@@ -0,0 +1,21 @@
+---
+title: 4.2.4 - ACI types
+navPrev: 4.2.3-enabling-access-control.html
+navPrevText: 4.2.3 - Enabling Access Control
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.5-aci-elements.html
+navNextText: 4.2.5 - ACI Elements
+---
+
+# 4.2.4 - ACI types
+
+Three different types of ACI exist. All types use the same specification
+syntax for an ACIITem. These types differ in their placement and manner of
+use within the directory.
+
+## Chapter content
+
+* [4.2.4.1 - Entry Aci](4.2.4.1-entryaci.html)
+* [4.2.4.2 - Prescriptive Aci](4.2.4.2-prescriptiveaci.html)
+* [4.2.4.3 - Subentry Aci](4.2.4.3-subentryaci.html)
diff --git a/source/apacheds/advanced-ug/4.2.4.1-entryaci.md b/source/apacheds/advanced-ug/4.2.4.1-entryaci.md
new file mode 100644
index 0000000..507c768
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.4.1-entryaci.md
@@ -0,0 +1,25 @@
+---
+title: 4.2.4.1 - EntryACI
+navPrev: 4.2.4-aci-types.html
+navPrevText: 4.2.4 - Aci Types
+navUp: 4.2.4-aci-types.html
+navUpText: 4.2.4 - Aci Types
+navNext: 4.2.4.2-prescriptiveaci.html
+navNextText: 4.2.4.2 - Prescriptive Aci
+---
+
+# 4.2.4.1 - EntryACI
+
+Entry ACI are access controls added to entries to protect that entry
+specifically. Meaning the protected entry is the entry where the ACI
+resides. When performing an operation on an entry, ApacheDS checks for the
+presence of the multivalued operational attribute, *entryACI*. The values
+of the entryACI attribute contain ACIItems.
+
+<div class="info" markdown="1">
+ There is one exception to the rule of consulting entryACI attributes within
+ ApacheDS: add operations do not consult the entryACI within the entry being
+ added. This is a security precaution. (??? Check this sentence) If allowed
+ users can arbitrarily add entries where they wanted by putting entryACI
+ into the new entry being added. This could compromise the DSA.
+</div>
diff --git a/source/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.md b/source/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.md
new file mode 100644
index 0000000..21c00c1
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.4.2-prescriptiveaci.md
@@ -0,0 +1,48 @@
+---
+title: 4.2.4.2 - PrescriptiveACI
+navPrev: 4.2.4.1-entryaci.html
+navPrevText: 4.2.4.1 - Entry Aci
+navUp: 4.2.4-aci-types.html
+navUpText: 4.2.4 - Aci Types
+navNext: 4.2.4.3-subentryaci.html
+navNextText: 4.2.4.3 - Subentry Aci
+---
+
+# 4.2.4.2 - PrescriptiveACI
+
+Prescriptive ACI are access controls that are applied to a collection of
+entries, not just to a single entry. Collections of entries are defined by
+the subtreeSpecifications of subentries. Hence prescriptive ACI are added
+to subentries as attributes and are applied by ApacheDS to the entries
+selected by the subentry's subtreeSpecification. ApacheDS uses the
+**prescriptiveACI** multivalued operational attribute within subentries to
+contain ACIItems that apply to the entry collection.
+
+Prescriptive ACI can save much effort when trying to control access to a
+collection of resources. Prescriptive ACI can even be specified to apply
+access controls to entries that do not yet exist within the DIT. They are a
+very powerful mechanism and for this reason they are the preferred
+mechanism for managing access to protected resources. ApacheDS is optimized
+specifically for managing access to collections of entries rather than
+point entries themselves.
+
+Users should try to avoid entry ACIs whenever possible, and use
+prescriptive ACIs instead. Entry ACIs are more for managing exceptional
+cases and should not be used excessively.
+
+<DIV class="info" markdown="1">
+**How it works!**
+For every type of LDAP operation, ApacheDS checks to see if any access
+control subentries include the protected entry in their collection. The set
+of subentries which include the protected entry are discovered very rapidly
+by the subentry subsystem. The subentry subsystem caches
+subtreeSpecifications for all subentries within the server so inclusion
+checks are fast.
+
+For each access control subentry in the set, ApacheDS checks within a
+prescriptive ACI cache for ACI tuples. ApacheDS also caches prescriptive
+ACI information in a special form called ACI tuples. This is done so
+ACIItem parsing and conversion to an optimal representations for evaluation
+is not required at access time. This way access based on prescriptive ACIs
+is determined very rapidly.
+</DIV>
diff --git a/source/apacheds/advanced-ug/4.2.4.3-subentryaci.md b/source/apacheds/advanced-ug/4.2.4.3-subentryaci.md
new file mode 100644
index 0000000..9bd807b
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.4.3-subentryaci.md
@@ -0,0 +1,27 @@
+---
+title: 4.2.4.3 - SubentryACI
+navPrev: 4.2.4.2-prescriptiveaci.html
+navPrevText: 4.2.4.2 - Prescriptive Aci
+navUp: 4.2.4-aci-types.html
+navUpText: 4.2.4 - Aci Types
+navNext: 4.2.5-aci-elements.html
+navNextText: 4.2.5 - ACI Elements
+---
+
+# 4.2.4.3 - SubentryACI
+
+Access to subentries also needs to be controlled. Subentries are special in
+ApacheDS. Although they subordinate to an administrative entry (entry of an
+Administrative Point), they are technically considered to be in the same
+context as their administrative entry. ApacheDS considers the perscriptive
+ACI applied to the administrative entry, to also apply to its subentries.
+
+This however is not the most intuitive mechanism to use for explicitly
+controlling access to subentries. A more explicit mechanism is used to
+specify ACIs specifically for protecting subentries. ApacheDS uses the
+multivalued operational attribute, *subentryACI*, within administrative
+entries to control access to immediately subordinate subentries.
+
+Protection policies for ACIs themselves can be managed within the entry of
+an administrative point.
+
diff --git a/source/apacheds/advanced-ug/4.2.5-aci-elements.md b/source/apacheds/advanced-ug/4.2.5-aci-elements.md
new file mode 100644
index 0000000..9fd982d
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.5-aci-elements.md
@@ -0,0 +1,20 @@
+---
+title: 4.2.5 - ACI elements
+navPrev: 4.2.4-aci-types.html
+navPrevText: 4.2.4 - ACI types
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.6-the-acdf-engine.html
+navNextText: 4.2.6 - The Acdf Engine
+---
+
+# 4.2.5 - ACI elements
+
+## Chapter content
+
+* [4.2.5.1 - User Classes](4.2.5.1-userclasses.html)
+* [4.2.5.2 - User Protected Items](4.2.5.2-protecteditems.html)
+* [4.2.5.3 - Permissions](4.2.5.3-permissions.html)
+* [4.2.5.4 - Subtrees](4.2.5.4-subtrees.html)
+
+
diff --git a/source/apacheds/advanced-ug/4.2.5.1-userclasses.md b/source/apacheds/advanced-ug/4.2.5.1-userclasses.md
new file mode 100644
index 0000000..c9f38df
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.5.1-userclasses.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.5.1 - UserClasses
+navPrev: 4.2.5-aci-elements.html
+navPrevText: 4.2.5 - ACI Elements
+navUp: 4.2.5-aci-elements.html
+navUpText: 4.2.5 - ACI Elements
+navNext: 4.2.5.2-protecteditems.html
+navNextText: 4.2.5.2 - Protected Itements
+---
+
+# 4.2.5.1 - UserClasses
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.2.5.2-protecteditems.md b/source/apacheds/advanced-ug/4.2.5.2-protecteditems.md
new file mode 100644
index 0000000..9d86835
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.5.2-protecteditems.md
@@ -0,0 +1,25 @@
+---
+title: 4.2.5.2 - ProtectedItems
+navPrev: 4.2.5.1-userclasses.html
+navPrevText: 4.2.5.1 - User Classes
+navUp: 4.2.5-aci-elements.html
+navUpText: 4.2.5 - ACI Elements
+navNext: 4.2.5.3-permissions.html
+navNextText: 4.2.5.3 - Permissions
+---
+
+# 4.2.5.2 - ProtectedItems
+
+The **protected items** are elements being accessed, and thus controlled by
+ACIs. Many parts of the DIT can be protected :
+
+* Entry : a entry as a whole.
+* allUserAttributeTypes : the User's AttributeType, excluding the
+associated values
+* allUserAttributeTypesAndValues : the User's AttributeType, including the
+associated values
+* allAttributeValues : All the AttributeType values
+* attributeType : A specific AttributeType
+* attributeValue : A set of attribute values
+* selfValue : The values associated with the requestor RDN's AttributeTypes
+
diff --git a/source/apacheds/advanced-ug/4.2.5.3-permissions.md b/source/apacheds/advanced-ug/4.2.5.3-permissions.md
new file mode 100644
index 0000000..6a06c43
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.5.3-permissions.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.5.3 - Permissions
+navPrev: 4.2.5.2-protecteditems.html
+navPrevText: 4.2.5.2 - Protected Items
+navUp: 4.2.5-aci-elements.html
+navUpText: 4.2.5 - ACI Elements
+navNext: 4.2.5.4-subtrees.html
+navNextText: 4.2.5.4 - Subtrees
+---
+
+# 4.2.5.3 - Permissions
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.2.5.4-subtrees.md b/source/apacheds/advanced-ug/4.2.5.4-subtrees.md
new file mode 100644
index 0000000..59c2769
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.5.4-subtrees.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.5.4 - Subtrees
+navPrev: 4.2.5.3-permissions.html
+navPrevText: 4.2.5.3 - Permissions
+navUp: 4.2.5-aci-elements.html
+navUpText: 4.2.5 - ACI Elements
+navNext: 4.2.6-the-acdf-engine.html
+navNextText: 4.2.6 - The ACDF engine
+---
+
+# 4.2.5.4 - Subtrees
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.2.6-the-acdf-engine.md b/source/apacheds/advanced-ug/4.2.6-the-acdf-engine.md
new file mode 100644
index 0000000..1a16242
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.6-the-acdf-engine.md
@@ -0,0 +1,18 @@
+---
+title: 4.2.6 - The ACDF engine
+navPrev: 4.2.5-aci-elements.html
+navPrevText: 4.2.4 - ACI Elements
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.7-using-acis-trail.html
+navNextText: 4.2.7 - Using ACIs trail
+---
+
+# 4.2.6 - The ACDF engine
+
+## Chapter content
+
+* [4.2.6.1 - How it works](4.2.6.1-how-it-works.html)
+* [4.2.6.2 - Selections](4.2.6.2-selections.html)
+* [4.2.6.3 - Constraints](4.2.6.3-constraints.html)
+* [4.2.6.4 - Priority](4.2.6.4-priority.html)
diff --git a/source/apacheds/advanced-ug/4.2.6.1-how-it-works.md b/source/apacheds/advanced-ug/4.2.6.1-how-it-works.md
new file mode 100644
index 0000000..06c8220
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.6.1-how-it-works.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.6.1 - How it works
+navPrev: 4.2.6-the-acdf-engine.html
+navPrevText: 4.2.6 - The ACDF Engine
+navUp: 4.2.6-the-acdf-engine.html
+navUpText: 4.2.6 - The ACDF Engine
+navNext: 4.2.6.2-selections.html
+navNextText: 4.2.6.2 - Selections
+---
+
+# 4.2.6.1 - How it works
+
+TODO...
diff --git a/source/apacheds/advanced-ug/4.2.6.2-selections.md b/source/apacheds/advanced-ug/4.2.6.2-selections.md
new file mode 100644
index 0000000..ec4083a
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.6.2-selections.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.6.2 - Selections
+navPrev: 4.2.6-1-how-it-works.html
+navPrevText: 4.2.6.1 - How it works
+navUp: 4.2.6-the-acdf-engine.html
+navUpText: 4.2.6 - The ACDF Engine
+navNext: 4.2.6.3-constraints.html
+navNextText: 4.2.6.3 - Constraints
+---
+
+# 4.2.6.2 - Selections
+
+TODO...
diff --git a/source/apacheds/advanced-ug/4.2.6.3-constraints.md b/source/apacheds/advanced-ug/4.2.6.3-constraints.md
new file mode 100644
index 0000000..54c73a5
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.6.3-constraints.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.6.3 - Constraints
+navPrev: 4.2.6-2-selections.html
+navPrevText: 4.2.6.2 - Selections
+navUp: 4.2.6-the-acdf-engine.html
+navUpText: 4.2.6 - The ACDF Engine
+navNext: 4.2.6.4-priority.html
+navNextText: 4.2.6.4 - Priority
+---
+
+# 4.2.6.3 - Constraints
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/4.2.6.4-priority.md b/source/apacheds/advanced-ug/4.2.6.4-priority.md
new file mode 100644
index 0000000..47af7df
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.6.4-priority.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.6.4 - Priority
+navPrev: 4.2.6-3-constraints.html
+navPrevText: 4.2.6.3 - Constraints
+navUp: 4.2.6-the-acdf-engine.html
+navUpText: 4.2.6 - The ACDF Engine
+navNext: 4.2.7-using-acis-trail.html
+navNextText: 4.2.7 - Using ACIs trail
+---
+
+# 4.2.6.4 - Priority
+
+TODO...
diff --git a/source/apacheds/advanced-ug/4.2.7-using-acis-trail.md b/source/apacheds/advanced-ug/4.2.7-using-acis-trail.md
new file mode 100644
index 0000000..140a337
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.7-using-acis-trail.md
@@ -0,0 +1,17 @@
+---
+title: 4.2.7 - Using ACIs trail
+navPrev: 4.2.6-the-acdf-engine.html
+navPrevText: 4.2.6 - The ACDF engine
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.8-acis-administration.html
+navNextText: 4.2.8 - ACIs administration
+---
+
+# 4.2.7 - Using ACIs trail
+
+## Chapter content
+
+* [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
+* [4.2.7.2 - Allow Self Password Modify](4.2.7.2-allow-self-password-modify.html)
+
diff --git a/source/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.md b/source/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.md
new file mode 100644
index 0000000..4f8c2de
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.md
@@ -0,0 +1,178 @@
+---
+title: 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
+navPrev: 4.2.7-using-acis-trail.html
+navPrevText: 4.2.7 Using ACIs trail
+navUp: 4.2.7-using-acis-trail.html
+navUpText: 4.2.7 Using ACIs trail
+navNext: 4.2.8-acis-administration.html
+navNextText: 4.2.8 - ACIs administration
+---
+
+# 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
+
+In this trail, we will show how we will allow all authenticated users to browse and read all the entries.
+
+By default, if the access control subsystem is enabled, no one but the administrator can browse the DIT. This is obviously not convenient ...
+
+# Partition and Access Control Area Setup
+
+For this example we presume you have setup a partition at the namingContext **dc=example,dc=com** and have turned on access controls. Now you want to grant browse and read access to entries and their attributes.
+
+Before you can add a **subentry** with the **prescriptiveACI** you'll need to create an **administrative area**. For now we'll make the root of the partition the **Administrative Point** (**AP**). Every entry including this entry and those underneath will be part of the autonomous administrative area for managing access controls. To do this we must add the **administrativeRole** operational attribute to the **AP** entry.
+
+<DIV class="warning" markdown="1">
+<B>Reminder...</B>
+Don't forget to check the 'fetch subentries' and 'fetch operational attributes' in your connection's browser option tab, otherwise some parts of the following tutorial will not appear !
+</DIV>
+
+
+## AdministrationPoint setup
+
+In our case, the **dc=example,dc=com** context entry has to contain the **administrativeRole** attribute, with the **accessControlSpecificArea** value.
+
+Let's first connect to the server using the **admin** user, and select the **dc=example,dc=com** entry :
+
+![dc=example.com](images/ACI-example.png)
+
+
+We will now add the **directoryOperation** attribute **administrativeRole** to this entry :
+
+![AdministrativeRole new attribute](images/ACI-new-attribute.png)
+
+and we select the **accessControlSpecificArea** value :
+
+![AccessControlSpecificArea](images/ACI-access-control-specific-area.png)
+
+Here is the resulting entry :
+
+![Result Entry](images/ACI-result-entry.png)
+
+## Subentry addition
+
+Now, we have to create a **subentry** in which we will add the **prescriptiveACI** granting access to all the users.
+
+Let's define the ACI first.
+
+### ACIItem Description
+
+Here's the ACIItem we will add :
+
+```java
+{
+ identificationTag "enableSearchForAllUsers",
+ precedence 14,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses { allUsers },
+ userPermissions
+ {
+ {
+ protectedItems {entry, allUserAttributeTypesAndValues},
+ grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
+ }
+ }
+ }
+}
+```
+
+There are several parameters to this simple ACIItem. Here's a brief
+explanation of each field and it's meaning or significance.
+
+| Fields | Description |
+|---|---|
+| identificationTag | Identifies the ACIItem within an entry. |
+| precedence | Determine which ACI to apply with conflicting ACIItems. |
+| authenticationLevel | User's level of trust with values of none, simple, strong |
+| itemOrUserFirst | Determines order of item permissions or user permissions. |
+| userClasses | The set of users the permissions apply to. |
+| userPermissions | Permissions on protected items |
+
+In our case, we want to grant all the users :
+
+```java
+userClasses { allUsers }
+```
+
+to be granted a read access :
+
+```java
+grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
+```
+
+for the Entry and all the values :
+
+```java
+protectedItems {entry, allUserAttributeTypesAndValues},
+```
+
+The granted permissions are used to allow the user to browse the tree
+(**grantBrowse**), read the entries (**grantRead**) and return the DN for
+aliases (**grantReturnDN**).
+
+<a name="2.5.7.1EnableAuthenticatedUserstoBrowseandReadEntries-PrescriptiveACIaddition"></a>
+
+## PrescriptiveACI addition
+
+Now that we have defined the *A*CIItem**, we have to add it into a **subentry**
+associated with the **administration point**. This is just an entry under the
+**administration Point**, here, we will call it **cn=enableSearchForAllUsers,
+dc=example,dc=com**.
+
+The entry is described below in a LDIF format :
+
+```text
+dn: cn=enableSearchForAllUsers,dc=example,dc=com
+objectClass: top
+objectClass: subentry
+objectClass: accessControlSubentry
+subtreeSpecification: {}
+prescriptiveACI:
+{
+ identificationTag "enableSearchForAllUsers",
+ precedence 14,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses { allUsers },
+ userPermissions
+ {
+ {
+ protectedItems {entry, allUserAttributeTypesAndValues}
+ grantsAndDenials { grantRead, grantReturnDN, grantBrowse }
+ }
+ }
+}
+}
+```
+
+It's also easy to create such an entry with **Apache Directory Studio**.
+First, right click on the context entry, and select 'new Entry' :
+
+![New entry](images/ACI-new-entry.png)
+
+Then create a new entry from scratch, and select the 'subentry' and
+'accessControlSubentry' ObjectClasses :
+
+![ObjectClass selection](images/ACI-subentry-oc.png)
+
+Create the RDN for this new entry :
+
+![Rdn creation](images/ACI-rdn-creation.png)
+
+Pass the subtree editor, we don't need to define anything here, and go to
+the Attributes definition :
+
+![Attributes definition](images/ACI-attributes-definition.png)
+
+The next step is to add the **prescriptiveACI** value, using the dedicated
+editor :
+
+![PrescriptiveACI addition](images/ACI-prescriptive-aci.png)
+
+When the selection has been done, we have to add the permissions :
+
+![Add permissions](images/ACI-add-permissions.png)
+
+
+Once done, all the entries under **dc=example,dc=com** are ruled by this ACI
diff --git a/source/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.md b/source/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.md
new file mode 100644
index 0000000..d1cf5b3
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.7.2-allow-self-password-modify.md
@@ -0,0 +1,38 @@
+---
+title: 4.2.7.2 - Allow Self Password Modify
+navPrev: 4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html
+navPrevText: 4.2.7.1 - Enable Authenticated Users to Browse and Read Entries
+navUp: 4.2.7-using-acis-trail.html
+navUpText: 4.2.7 Using ACIs trail
+navNext: 4.2.7.3-.html
+navNextText: 4.2.7.3 -
+---
+
+# 4.2.7.2 - Allow Self Password Modify
+
+We will now configure the system to allow anyone to modify his/her own password :
+
+
+ {
+ identificationTag "allowSelfAccessAndModification",
+ precedence 14,
+ authenticationLevel none,
+ itemOrUserFirst userFirst:
+ {
+ userClasses { thisEntry },
+ userPermissions
+ {
+ { protectedItems {entry}, grantsAndDenials { grantModify, grantBrowse, grantRead } },
+ { protectedItems {allAttributeValues {userPassword}}, grantsAndDenials { grantAdd, grantRemove } }
+ }
+ }
+ }
+
+## Commentary
+
+Note that two different user permissions are used to accurately specify self access and self modification of the **userPassword** attribute within the entry. So with the first userPermission of this ACI a user would be able to read all attributes and values within his/her entry. They also have the ability to modify the entry but this is moot since they cannot add, remove or replace any attributes within their entry. The second user permission completes the picture by granting add and remove permissions to all values of userPassword. This means the user can replace the password.
+
+<DIV class="warning" markdown="1">
+**grantAdd + grantRemove = grantReplace**
+Modify operations either add, remove or replace attributes and their values in LDAP. X.500 seems to have overlooked the replace capability. Hence there is no such thing as a *grantReplace* permission. However grantAdd and grantDelete on an attribute and its values are both required for a replace operation to take place.
+</DIV>
diff --git a/source/apacheds/advanced-ug/4.2.8-acis-administration.md b/source/apacheds/advanced-ug/4.2.8-acis-administration.md
new file mode 100644
index 0000000..c108094
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.8-acis-administration.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.8 - ACIs administration
+navPrev: 4.2.7-using-acis-trail.html
+navPrevText: 4.2.7 - Using ACIs trail
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.9-migration-from-other-ldap-servers.html
+navNextText: 4.2.9 - Migration from other LDAP servers
+---
+
+# 4.2.8 - ACIs administration
+
+TODO...
diff --git a/source/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.md b/source/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.md
new file mode 100644
index 0000000..50e0c0d
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.2.9-migration-from-other-ldap-servers.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.9 - Migration from other LDAP servers
+navPrev: 4.2.8-acis-administration.html
+navPrevText: 4.2.8 - ACIs administration
+navUp: 4.2-authorization.html
+navUpText: 4.2 - Authorization
+navNext: 4.2.10-aci-grammar.html
+navNextText: 4.2.10 - ACI grammar
+---
+
+# 4.5.9 - Migration from other LDAP servers
+
+TODO...
diff --git a/source/apacheds/advanced-ug/4.3-password-policy.md b/source/apacheds/advanced-ug/4.3-password-policy.md
new file mode 100644
index 0000000..2d38876
--- /dev/null
+++ b/source/apacheds/advanced-ug/4.3-password-policy.md
@@ -0,0 +1,322 @@
+---
+title: 4.3. Password Policy
+navPrev: 4.2-authorization.html
+navPrevText: 4.2 - Authorization
+navUp: 4-authentication-and-authorization.html
+navUpText: 4 - Authentication & Authorization
+navNext: 5-administration.html
+navNextText: 5 - Administration
+---
+
+# 4.3. Password Policy
+
+The **Password Policy for LDAP Directories** is a **[RFC](http://tools.ietf.org/html/draft-behera-ldap-password-policy-10)** draft that has been designed for the very first version in 1999, and the latest version is from 2009. Although it's still a draft, and it's currently noted as inactive, it has been implemented by many existing **LDAP** servers.
+
+**ApacheDS** implements most of the draft.
+
+<DIV class="warning" markdown="1">
+Enforcing a strict password policy is extremely punitive to users. It may leads users to workaround the policy by storing their password in a post-it, a workaround that will defeat any password policy...
+
+Always try to think about better alternatives than force users to always define a password with 10 or more characters, including numbers, upper and lower case, special chars, and to change it every month...
+
+A long sentence (4 or 5 words), like "The horse has won the race three time" is most certainly a better password than any other combination, and is easy to remember...
+</DIV>
+
+
+## What is a password policy ?
+
+As explained on [wikipedia](http://en.wikipedia.org/wiki/Password_policy):
+
+
+ A password policy is a set of rules designed to enhance computer security by encouraging users to employ strong passwords
+ and use them properly.
+
+Basically, the system, once activated, will enforce some rules and check the password strength. We will list the various options in this chapter.
+
+There are different aspects to consider:
+
+* The password check when it's added or modified
+* The password management when the user bind, in other words, it's life cycle
+* The password protection against attacks
+
+Those aspects are exposed in the following paragraphs.
+
+
+## How do we configure it ?
+
+The _Password Policy_ can be configured in two ways.
+First of all, it's important to know that it's activated by default. Let's see the default configuration first.
+
+There is an entry containing all the default configuration values for the _Password Policy_, under the DN **"ou=passwordPolicies, ads-interceptorId=authenticationInterceptor, ou=interceptors, ads-directoryServiceId=<default>, ou=config"**, which corresponds to the following hierarchy:
+
+ * ou=config
+ * ads-directoryServiceId=<default>
+ * ou=interceptors
+ * ads-interceptorId=authenticationInterceptor
+ * ou=passwordPolicies
+
+This entry contains the following values:
+
+| Attribute | Default value | Comment |
+|---|---|---|
+| ads-pwdAllowUserChange | TRUE | Tells if the user can change its password |
+| ads-pwdCheckQuality | 1 | The kind of quality we want for the password (0, 1, or 2) |
+| ads-pwdExpireWarning | 600 | |
+| ads-pwdFailureCountInterval | 30 | The duration of failure logs we keep in the entry |
+| ads-pwdGraceAuthnLimit | 5 | |
+| ads-pwdGraceExpire | 0 | |
+| ads-pwdInHistory | 5 | The number of passwords we keep in the password history |
+| ads-pwdLockout | TRUE | Tells if the password should be locked or not on failures |
+| ads-pwdLockoutDuration | 0 | The delay in seconds we wait before allowing a new attempt when the password hs been locked |
+| ads-pwdMaxAge | 0 | |
+| ads-pwdMaxDelay | 0 | The maximum we wait before sending the BindResponse |
+| ads-pwdMaxFailure | 5 | The maximum number of failure we accept before locking the password |
+| ads-pwdMaxIdle | 0 | |
+| ads-pwdMaxLength | 0 | |
+| ads-pwdMinAge | 0 | The delay between two password changes |
+| ads-pwdMinDelay | 0 | The minimum we wait before sending the BindResponse |
+| ads-pwdMinLength | 5 | |
+| ads-pwdMustChange | FALSE | |
+| ads-pwdSafeModify | FALSE | |
+
+Here is the entry in LDIF format:
+
+
+ dn: ads-pwdId=default,ou=passwordPolicies,ads-interceptorId=authenticationIn
+ terceptor,ou=interceptors,ads-directoryServiceId=default,ou=config
+ objectclass: top
+ objectclass: ads-base
+ objectclass: ads-passwordPolicy
+ ads-pwdAttribute: userPassword
+ ads-pwdId: default
+ ads-enabled: TRUE
+ ads-pwdAllowUserChange: TRUE
+ ads-pwdCheckQuality: 1
+ ads-pwdExpireWarning: 600
+ ads-pwdFailureCountInterval: 30
+ ads-pwdGraceAuthnLimit: 5
+ ads-pwdGraceExpire: 0
+ ads-pwdInHistory: 5
+ ads-pwdLockout: TRUE
+ ads-pwdLockoutDuration: 0
+ ads-pwdMaxAge: 0
+ ads-pwdMaxDelay: 0
+ ads-pwdMaxFailure: 5
+ ads-pwdMaxIdle: 0
+ ads-pwdMaxLength: 0
+ ads-pwdMinAge: 0
+ ads-pwdMinDelay: 0
+ ads-pwdMinLength: 5
+ ads-pwdMustChange: FALSE
+ ads-pwdSafeModify: FALSE
+
+<DIV class="warning" markdown="1">
+All the configured delays are stored in seconds. As a rule of thumb, a day is 86400 seconds, a week is 604800 seconds and a month can be 2419200 seconds or 2505600 seconds (february normal and leap years), 2592000 seconds (april, june, september, november) and 2678400 (january, march, may, july, august, october and december)
+</DIV>
+
+In the draft, it is said that the passwordPolicy can apply to one user or to many. It's also suggested that some _Administrative Area_ could be used for that purpose : the users present in such an area will be constrained but the associated _PasswordPolicy_. At the moment, **ApacheDS** does not implement such a mechanism, and will rely on either the global configuration, stored in the _ou=config_ partition, or we can define a specific _Password Policy_ for a user. In this case, we will store in each user the reference to the _Password Policy_ to use into the _pwdPolicySubentry_ attribute (it contains a reference -a **DN** - to an entry storing the specific configuration).
+
+This specific configuration is stored into an entry having the _pwdPolicy_ Auxiliary ObjectClass, which description is :
+
+
+ ( 1.3.6.1.4.1.42.2.27.8.2.1
+ NAME 'pwdPolicy'
+ SUP top
+ AUXILIARY
+ MUST ( pwdAttribute )
+ MAY ( pwdMinAge $ pwdMaxAge $ pwdInHistory $ pwdCheckQuality $
+ pwdMinLength $ pwdMaxLength $ pwdExpireWarning $
+ pwdGraceAuthNLimit $ pwdGraceExpiry $ pwdLockout $
+ pwdLockoutDuration $ pwdMaxFailure $ pwdFailureCountInterval $
+ pwdMustChange $ pwdAllowUserChange $ pwdSafeModify $
+ pwdMinDelay $ pwdMaxDelay $ pwdMaxIdle ) )
+
+
+<DIV class="warning" markdown="1">
+Note that the specification allows the administrator to apply the password policy on any attribute, with a default value of _userPassword_ ApacheDS does not yet allow the use of another Attribute.
+</DIV>
+
+#### Enabling/Disabling the PasswordPolicy
+
+The _PasswordPolicy_ is enabled by default. It's possible to disable it by setting the _ads-enabled_ value to FALSE, with a server restart.
+
+## Password protection
+
+This part is exposing the various techniques the system uses to protect your password from an attack.
+
+### Password guessing limit
+
+The idea is to protect the password against multiple guess attempts. The following rules are applied:
+
+* a counter tracks the failed attempts, and blocks when it's reached
+* an incremental delay is added after a failure before a new attempt can be done
+* a global delay for all the failed attempt is used, when reached, the account is locked
+
+When the account is locked, it can remain locked, or be unlocked after a grace period.
+
+#### Attempts counter
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdLockout, ads-pwdMaxFailure, ads-pwdLockoutDuration
+</DIV>
+
+Each failed attempt will be logged in the entry, in the _ads-pwdFailureTime_ Attribute (it will contain the date and time of the attempt). When the attribute contains more values than the maximum number of failed attempts, the entry will be locked (the _ads-pwdAccountLockedTime_ Attribute will contain the date and time the entry has been locked).
+
+<DIV class="warning" markdown="1">
+In order to activate this control the ads-pwdLockout parameter must be set to TRUE.
+</DIV>
+
+The following table expose the various possible cases, with three failed attempts:
+
+| _ads-pwdmaxfailure_ | _ads-pwdLockout_ | _ads-pwdFailureTime_ | _ads-pwdAccountLockedTime_ | Locked | Comment |
+|---|---|---|---|---|---|
+| 3 | true | date1 | - | No | Failure 1 |
+| | | date1, date2 | - | No | Failure 2 |
+| | | date1, date2, date3 | date3 | Yes | Failure 3: account locked |
+| 3 | false | date1 | - | No | Failure 1 |
+| | | date1, date2 | - | No | Failure 2 |
+| | | date1, date2, date3 | - | No | Failure 3 |
+
+As we can see, the account is locked only when we reach the number of failure, and the _ads-pwdLockout_ flag is TRUE. If the _ads-pwdLockoutDuration_ flag is set, then the password will remain locked for the delay stored in this attribute.
+
+#### Delayed login
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdLockout, ads-pwdMaxFailure, ads-pwdLockoutDuration
+</DIV>
+
+When we have reached a number of failed attempt, the account will be locked. We can set another attribute to tell the server that the locked out account can be unlocked after a delay: the _ads-pwdLockoutDuration_ Attribute stores this delay.
+
+When the account is locked, no further attempt will succeed, even if the correct password is sent. After the delay, the user will be unlocked.
+
+#### Purging failures
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdFailureCountInterval
+</DIV>
+
+As we store all the failures within the entry, at some point we may want to purge those failures. This is done either because we have successfully logged, or because the _ads-pwdFailureCountInterval_ value has expired. In this last case, all the failures older than the current time minus the set interval will be removed.
+
+
+### Password checks and strength enforcement
+
+Those rules are used to enforce some constraints on the password, so that weak passwords can't be used.
+
+#### Quality Check policy
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdQualityCheck<br>
+Default value: 1
+</DIV>
+
+The system can be enabled or disabled, and when enabled, two different level of checks can be done: relaxed or strict.
+We use a parameter to specify the kind of check we do on the password: _ads-pwdCheckQuality_, which can take three values:
+
+* 0: The password is not checked
+* 1: We check the password when we can, i.e. when it's not hashed. When the password is hashed, or in a form that does not allow us to apply the checks, then we ignore the errors
+* 2: The password is checked, and if it's hashed or in a form that does not allow the checks to be done, then the changes are rejected.
+
+#### Password History
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdInHistory
+</DIV>
+
+The server can keep a backlog of passwords, so that a user can't keep a password for ever. When requested to do so the user will have to change his/her password, and the old password will be stored in the user's entry password history.
+
+We can specify the number of passwords we keep in the password history by configuring the _ads-pwdInHistory_ attribute.
+
+#### Minimum delay between modifications
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdMinAge
+</DIV>
+
+When the password history is activated, some users may change their passwords many times to get their old password out of the history, and add it as their password again. Setting a delay between two password changes may protect the password against such action.
+
+The _ads-pwdMinAge_ attribute is used for this purpose, and it keeps a value in seconds.
+
+#### Password length constraint
+
+<DIV class="info" markdown="1">
+Impacted Attributes: ads-pwdMinLength and ads-pwdMaxLength
+</DIV>
+
+You can control the minimum and maximum length for a password by setting the _ads-pwdMinLength_ and _ads-pwdMaxLength_ attributes.
+
+<DIV class="warning" markdown="1">
+Setting a password max length is most certainly a waste of time. It's very likely that this parameter has been added to the specification for the sake of symetry...
+</DIV>
+
+
+### Password lifecycle management
+
+We now have to expose the rules that apply to the password during it's life.
+
+
+#### Password max age
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdMaxAge
+</DIV>
+
+A password may have a limited life expectation, and when this age is reached, the password will be invalidated. This is configured through the _ads-pwdMaxAge_ parameter, which contains the number of second a password will last.
+
+This password invalidation can be overruled by the two next parameters.
+
+<DIV class="warning" markdown="1">
+This parameter works hands in hands with some other parameter, like the ads-pwdGraceAuthNLimit and ads-GraceExpire. If those parameters are set too, you may get some different delay for your password expiration.
+</DIV>
+
+
+#### Password grace auth N limit
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdGraceAuthNLimit
+</DIV>
+
+When the password has expired, this parameter (_ads-pwdGraceAuthNLimit_) tells how many times a user will still be allowed to bind before the password is definitively locked. Each attempt will decrement the associated counter.
+
+#### Password grace Expire
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdGraceExpire
+</DIV>
+
+Another option when the password has expired is to give the user the possibility to log in during a certain period of time. This is mainly useful when the _ads-pwdGraceAuthNLimit_ is set: not only there is a limited number of attempts, but those attempts must be done in a limited period of time, ortherwise the password will be locked.
+
+If the configuration of the _ads-pwdGraceAuthNLimit_ is 0, the _ads-pwdGraceExpire_ value is simply added to the _ads-pwdMaxAge_ value.
+
+#### Idle Password
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdMaxIdle
+</DIV>
+
+You can set a maximum inactivity delay for a password, before this password expires. This is set using the _ads-pwdMaxIdle_ parameter
+
+
+#### Expiration warning
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdExpireWarning
+</DIV>
+
+The _ads-pwdExpireWarning_ parameter will be used to send back a warning if the password if the password is going to expire in a given delay. This is convenient as soon as the client sends the _PasswordPolicy_ control to the server, and as soon as the client reads the response's control.
+
+
+#### Allow user changes
+
+<DIV class="info" markdown="1">
+Impacted Attribute: ads-pwdAllowUserChange
+</DIV>
+
+The _ads-pwdAllowUserChange_ parameter can be used to allow - or forbid - a user to change his/her own password. When this parameter is set to _TRUE_, the user can't change his/her password.
+
+
+### Not supported parameters
+
+A few parameters are described in the specification, but aren't supported. Here is the list :
+
+* ads-pwdMinDelay : The minimal delay the server waits before sending back a response.
+* ads-pwdMaxDelay : The maximal delay the server waits before sending back a response.
diff --git a/source/apacheds/advanced-ug/5-administration.md b/source/apacheds/advanced-ug/5-administration.md
new file mode 100644
index 0000000..8a3d625
--- /dev/null
+++ b/source/apacheds/advanced-ug/5-administration.md
@@ -0,0 +1,22 @@
+---
+title: 5 - Administration
+navPrev: 4-authentication-and-authorization.html
+navPrevText: 4 - Authentication and Authorization
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 5.1-layout.html
+navNextText: 5.1 - Layout
+---
+
+# 5 - Administration
+
+This chapter describe how to administer the **Apache Directory Server**.
+
+## Chapter content
+
+* [5.1 - Layout](5.1-layout.html)
+* [5.2 - Starting and stopping the server](5.2-start-stop.html)
+* [5.3 - Logs](5.3-logs.html)
+* [5.4 - Replication](5.4-replication.html)
+* [5.5 - Cache](5.5-cache.html)
+
diff --git a/source/apacheds/advanced-ug/5.1-layout.md b/source/apacheds/advanced-ug/5.1-layout.md
new file mode 100644
index 0000000..cc637d4
--- /dev/null
+++ b/source/apacheds/advanced-ug/5.1-layout.md
@@ -0,0 +1,155 @@
+---
+title: 5.1 - Layout
+navPrev: 5-administration.html
+navPrevText: 5 - Administration
+navUp: 5-administration.html
+navUpText: 5 - Administration
+navNext: 5.2-start-stop.html
+navNextText: 5.2 - Starting and Stopping
+---
+
+# 5.1 - Layout
+
+{{% toc %}}
+
+## 5.1.1 General Layout
+
+The general layout for ApacheDS is fairly simple and consists in two major concepts:
+
+* an installation layout
+* an instance layout
+
+### 5.1.1.1 Installation Layout
+
+The installation is where are stored all files essential to ApacheDS like the launch script, libraries, eventually a service wrapper (depending on the kind of installer used).
+
+The most common installation, shared by all ApacheDS installers, can be described as follows:
+
+
+ [Installation-Layout]
+ |- bin/
+ |- apacheds (or 'apacheds.exe' on Windows)
+ |- wrapper (or 'wrapper.exe' on Windows)
+ |- conf/
+ |- wrapper.conf
+ |- lib/
+ |- apacheds-service-${version}.jar
+ |- apacheds-wrapper-${version}.jar
+ |- libwrapper.jnilib (or 'libwrapper.so', or 'libwrapper.dll' depending on the platform)
+ |- wrapper-3.2.3.jar
+ |- LICENSE
+ |- NOTICE
+
+* The _**bin/**_ directory contains the _**apacheds**_ launch script and _**wrapper**_ binary used to configure ApacheDS as a _service_.
+* The _**conf/**_ directory holds the general configuration for the service in _**wrapper.conf**_.
+* The _**lib/**_ directory contains all ApacheDS and wrapper libraries necessary to run the server.
+* _**LICENCE**_ and _**NOTICE**_ files contains the required legal information about ApacheDS.
+
+### 5.1.1.2 Instance Layout
+
+ApacheDS is built to be able to run multiple instances of the server at the same time, which means that optionally an _**instances**_ folder can be found in the installation layout (or elsewhere on disk depending on the platform).
+In that folder, can be found a single or multiple directories, all sharing the same layout, corresponding to all ApacheDS instance (one directory per instance, named by the id of the instance).
+
+Here's how this instance layout can be described:
+
+
+ [Instance-Layout]
+ |- cache/
+ |- [...]
+ |- conf/
+ |- config.ldif
+ |- log4j.properties
+ |- wrapper.conf
+ |- log/
+ |- apacheds.log
+ |- wrapper.log
+ |- partitions/
+ |- example/
+ |- [...]
+ |- schema/
+ |- [...]
+ |- system/
+ |- [...]
+
+* The _**cache/**_ directory is empty upon installation and contains all the data required for the cache system after the first start of the server.
+* The _**conf/**_ directory contains:
+ * an additional _**wrapper.conf**_ where general configuration defined in the installation layout can be overwritten for the given instance.
+ * a _**log4j.properties**_ file which is responsible for logging configuration.
+ * a _**config.ldif**_ file corresponding to the inner configuration of ApacheDS.
+* The _**log/**_ directory is empty upon installation and contains two files after the first start of the server:
+ * a _**apacheds.log**_ which is where all logs defined in the _**log4j.properties**_ go.
+ * a _**wrapper.log**_ which only contains the wrapper logs (related to the service's start/stop).
+* The _**partitions/**_ directory is empty upon installation and contains after the first start of the server a directory for each partition defined in the configuration:
+ * the _**example/**_ directory holds the data for the "_example_" partition defined in ApacheDS' default configuration.
+ * the _**schema/**_ and _**system/**_ directories contain the data for both internal "_schema_" and "_system_" partitions.
+
+## 5.1.2 Specific Layouts
+
+Depending on the type of distribution used to install ApacheDS, the layout varies to adapt as best as possible to the specificities of each platform.
+
+### 5.1.2.1 Archive Distribution (zip/tar.gz)
+
+The Archive distribution consist of a compressed directory containing everything needed to run ApacheDS. It doesn't install on the machine and does not require any extra permission (root user, installer password, etc.). The directory is simply unarchived and ApacheDS is ready to be launched.
+
+The installation layout is a bit simpler for this kind of distribution since no wrapper is distributed, the application being run in a terminal or via the .bat script.
+
+
+ [Installation-Layout]
+ |- bin/
+ |- apacheds.bat
+ |- apacheds.sh
+ |- cpappend.bat
+ |- instances/
+ |- lib/
+ |- apacheds-service-${version}.jar
+ |- LICENSE
+ |- NOTICE
+
+* The _**bin/**_ directory contains the _**apacheds.bat**_ (Windows) and _**apacheds.sh**_ (Linux/Unix) launch scripts and a _**cpappend.bat**_ utility (only used on Windows).
+* The _**instances/**_ directory hold all ApacheDS instances (an instance named _**default**_ is provided by default).
+* The _**lib/**_ directory only contains the ApacheDS library.
+* _**LICENCE**_ and _**NOTICE**_ files contains the required legal information about ApacheDS.
+
+### 5.1.2.2 Windows Installer (.exe)
+
+The Windows installer uses the general installation and instances layout.
+
+By default, the installation directory is:
+
+ C:\Program Files\ApacheDS
+
+An _**instances/**_ directory in the installation layout holds all ApacheDS instances (an instance named _**default**_ is provided by default).
+
+ApacheDS is registered as a service on Windows. Operations on the service can be achieved in the _**Services**_ utility which is accessible via _**Start**_ > _**Contol Panel**_ > _**Administration Tools**_ > _**Services**_.
+
+### 5.1.2.3 Linux Binary (.bin), Debian (.deb) & Fedora (.rpm) Installers
+
+The Mac OS X installer uses the general installation and instances layout.
+
+By default, the installation directory is:
+
+ /opt/apacheds-${version}
+
+All ApacheDS instances are located in a directory at the following location (an instance named _**default**_ is provided by default):
+
+ /var/lib/apacheds-${version}
+
+The installer also adds a _shortcut_ launch script for the default instance at:
+
+ /etc/init.d/apacheds-${version}-default
+
+**NOTE:** The ApacheDS Linux Binary installer lets the user decide the locations of the installation directory, the instances directory and the default instance launch script. The locations above refer to the default location and need to be adapted to whatever path was chosen during the installation.
+
+### 5.1.2.4 Mac OS X Installer (.pkg)
+
+The Mac OS X installer uses the general installation and instances layout.
+
+By default, the installation directory is:
+
+ /usr/local/apacheds-${version}
+
+An _**instances/**_ directory in the installation layout holds all ApacheDS instances (an instance named _**default**_ is provided by default).
+
+The installer also adds a _shortcut_ to the command in the _**bin**_ directory called "_**apacheds**_", accessible directly in a terminal and located at:
+
+ /usr/bin/apacheds
diff --git a/source/apacheds/advanced-ug/5.2-start-stop.md b/source/apacheds/advanced-ug/5.2-start-stop.md
new file mode 100644
index 0000000..86290bb
--- /dev/null
+++ b/source/apacheds/advanced-ug/5.2-start-stop.md
@@ -0,0 +1,79 @@
+---
+title: 5.2 - Starting and Stopping the server
+navPrev: 5.1-layout.html
+navPrevText: 5.1 - Layout
+navUp: 5-administration.html
+navUpText: 5 - Administration
+navNext: 5.3-logs.html
+navNextText: 5.3 - Logs
+---
+
+# 5.2 - Starting and Stopping the server
+
+{{% toc %}}
+
+## 5.2.1 Archive Distribution (zip/tar.gz)
+
+### Starting ApacheDS
+
+#### On Linux/Unix Systems
+
+In a terminal, first move to the ApacheDS directory of the unarchived distribution and then run the _**apacheds.sh**_ script in the _**bin**_ directory:
+
+ $ cd <path-to-apacheds-directory>
+ $ sh bin/apache.sh
+
+#### On Windows
+
+Double-click the _**apacheds.bat**_ command in the _**bin**_ directory or in a terminal, first move to the _**bin**_ directory of the unarchived distribution and then run the _**apacheds.bat**_ command:
+
+ $ cd <path-to-apacheds-directory>\bin
+ $ apacheds.bat
+
+### Stopping ApacheDS
+
+ApacheDS can be stopped by hitting _**CTL+C**_ in the terminal the server was launched with. If the _**apacheds.bat**_ command was double-clicked, closing the terminal window will also stop ApacheDS.
+
+## 5.2.2 Windows Installer (.exe)
+
+ApacheDS is registered as a service on Windows. Start and Stop operations can be achieved in the _**Services**_ utility which is accessible via _**Start**_ > _**Control Panel**_ > _**Administration Tools**_ > _**Services**_.
+
+ApacheDS also provides an easier access to the _**Services**_ utility via _**Start**_ > _**All Programs**_ > _**ApacheDS**_ > _**Manage ApacheDS**_.
+
+### Starting ApacheDS
+
+The ApacheDS service can be started right-clicking on the _**ApacheDS - Default**_ service and selecting _**Start**_ in the context menu.
+
+### Stopping ApacheDS
+
+The ApacheDS service can be started right-clicking on the _**ApacheDS - Default**_ service and selecting _**Stop**_ in the context menu.
+
+## 5.2.3 Linux Binary (.bin), Debian (.deb) & Fedora (.rpm) Installers
+
+### Starting ApacheDS
+
+In a terminal, run the following command:
+
+ $ sudo /etc/init.d/apacheds-${version}-default start
+
+### Stopping ApacheDS
+
+In a terminal, run the following command:
+
+ $ sudo /etc/init.d/apacheds-${version}-default stop
+
+**NOTE:** The ApacheDS Linux Binary installer lets the user decide the location of the launch script. The commands above refer to the default location and need to be adapted to whatever path was chosen during the installation.
+
+## 5.2.4 Mac OS X Installer (.pkg)
+
+### Starting ApacheDS
+
+In a terminal, run the following command:
+
+ $ sudo launchctl start org.apache.directory.server
+
+### Stopping ApacheDS
+
+In a terminal, run the following command:
+
+ $ sudo launchctl stop org.apache.directory.server
diff --git a/source/apacheds/advanced-ug/5.3-logs.md b/source/apacheds/advanced-ug/5.3-logs.md
new file mode 100644
index 0000000..f0c098e
--- /dev/null
+++ b/source/apacheds/advanced-ug/5.3-logs.md
@@ -0,0 +1,126 @@
+---
+title: 5.3 - Logs
+navPrev: 5.2-start-stop.html
+navPrevText: 5.2 - Starting and Stopping the server
+navUp: 5-administration.html
+navUpText: 5 - Administration
+navNext: 5.4-replication.html
+navNextText: 5.4 - Replication
+---
+
+# 5.3 - Logs
+
+## 5.3.1 Logs overview
+
+ApacheDS internally uses SLF4J as a facade for logs and Log4J is bundled in the standalone ApacheDS distributions.
+
+Logs can be configured by modifying the _**log4j.properties**_ file which can be found in the _**conf**_ directory of the server instance (see the previous chapter "[5.1 - Layout](5.1-layout.html)").
+
+Here is the Log4J configuration that comes with ApacheDS:
+
+
+ #############################################################################
+ # Licensed to the Apache Software Foundation (ASF) under one or more
+ # contributor license agreements. See the NOTICE file distributed with
+ # this work for additional information regarding copyright ownership.
+ # The ASF licenses this file to You under the Apache License, Version 2.0
+ # (the "License"); you may not use this file except in compliance with
+ # the License. You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ #############################################################################
+ log4j.rootCategory=WARN, F
+
+ log4j.appender.F=org.apache.log4j.RollingFileAppender
+ log4j.appender.F.File=${apacheds.log.dir}/apacheds.log
+ log4j.appender.F.MaxFileSize=100MB
+ log4j.appender.F.MaxBackupIndex=3
+ log4j.appender.F.layout=org.apache.log4j.PatternLayout
+ log4j.appender.F.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # Specific loggers (useful for debugging)
+ #log4j.logger.jdbm.recman.BaseRecordManager=DEBUG
+ #log4j.logger.org.apache.directory.server.OPERATION_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.OPERATION_TIME=DEBUG
+ #log4j.logger.org.apache.directory.api.CODEC_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.ACI_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.PROVIDER_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.CONSUMER_LOG=DEBUG
+ #log4j.logger.org.apache.directory.CURSOR_LOG=DEBUG
+ #log4j.logger.org.apache.directory.api=DEBUG
+ #log4j.logger.org.apache.directory.server=DEBUG
+ #log4j.logger.net.sf.ehcache=DEBUG
+ #log4j.logger.org.apache.mina=DEBUG
+
+## 5.3.2 Default log level
+
+By default, ApacheDS ships with a default log level set to **WARN** as indicated in the first line of the _**log4j.properties**_ file:
+
+
+ log4j.rootCategory=WARN, F
+
+This value can be modified to any of the seven log levels supported by Log4J:
+
+<center>
+
+| Level | Description |
+|:-:|---|
+| _**OFF**_ | Highest possible rank and is intended to turn off logging. |
+| _**FATAL**_ | Very severe error events that will presumably lead the application to abort. |
+| _**ERROR**_ | Error events that might still allow the application to continue running. |
+| _**WARN**_ | Potentially harmful situations. |
+| _**INFO**_ | Informational messages that highlight the progress of the application at coarse-grained level. |
+| _**DEBUG**_ | Fine-grained informational events that are most useful to debug an application. |
+| _**TRACE**_ | Finer-grained informational events than the DEBUG. |
+
+</center>
+
+Please refer to the [**Log4J Manual**](http://logging.apache.org/log4j/1.2/manual.html) for more details.
+
+## 5.3.2 ApacheDS specific loggers
+
+Bundled at the end of the _**log4j.properties**_ file, are a set of specific loggers dedicated to a particular kind of events:
+
+
+ # Specific loggers (useful for debugging)
+ #log4j.logger.jdbm.recman.BaseRecordManager=DEBUG
+ #log4j.logger.org.apache.directory.server.OPERATION_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.OPERATION_TIME=DEBUG
+ #log4j.logger.org.apache.directory.api.CODEC_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.ACI_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.PROVIDER_LOG=DEBUG
+ #log4j.logger.org.apache.directory.server.CONSUMER_LOG=DEBUG
+ #log4j.logger.org.apache.directory.CURSOR_LOG=DEBUG
+ #log4j.logger.org.apache.directory.api=DEBUG
+ #log4j.logger.org.apache.directory.server=DEBUG
+ #log4j.logger.net.sf.ehcache=DEBUG
+ #log4j.logger.org.apache.mina=DEBUG
+
+The table below summarizes what each specific logger does:
+
+<center>
+
+| Logger | Description |
+|---|---|
+| **jdbm.recman.BaseRecordManager** | Logs all information related to the JDBM database used to store the entries. |
+| **org.apache.directory.server.OPERATION_LOG** | Logs all executed operations (search, add, delete, etc.). |
+| **org.apache.directory.server.OPERATION_TIME** | Logs the time each operation takes to execute. |
+| **org.apache.directory.api.CODEC_LOG** | Logs all incoming and outgoing LDAP Protocol requests/responses. |
+| **org.apache.directory.server.ACI_LOG** | Logs all information related to the ACI system. |
+| **org.apache.directory.server.PROVIDER_LOG** | Logs all information related to the Replication Provider(s). |
+| **org.apache.directory.server.CONSUMER_LOG** | Logs all information related to the Replication Consumer(s). |
+| **org.apache.directory.CURSOR_LOG** | Logs all information related to the Cursors handling the search of entries in the database. |
+| **org.apache.directory.api** | A general logger which logs all classes of the Apache Directory LDAP API. |
+| **org.apache.directory.server** | A general logger which logs all classes of ApacheDS. |
+| **net.sf.ehcache** | A general logger which logs all classes of the Ehcache API. |
+| **org.apache.mina** | A general logger which logs all classes of the Apache Mina API. |
+
+</center>
+
+These loggers are deactivated by default to prevent them interfering with the root log level. Make sure to uncomment those you would like to activate (by removing the '_#_' character in front of the line) and set the dedicated log level according to the kind of information you're looking for.
diff --git a/source/apacheds/advanced-ug/5.4-replication.md b/source/apacheds/advanced-ug/5.4-replication.md
new file mode 100644
index 0000000..6125e91
--- /dev/null
+++ b/source/apacheds/advanced-ug/5.4-replication.md
@@ -0,0 +1,57 @@
+---
+title: 5.4 - Replication
+navPrev: 5.3-logs.html
+navPrevText: 5.3 - Logs
+navUp: 5-administration.html
+navUpText: 5 - Administration
+navNext: 5.5-cache.html
+navNextText: 5.5 - Cache
+---
+
+# 5.4 - Replication
+
+## 5.4.1 Replication overview
+
+ApacheDS supports both Producer-Consumer and Multi-Producers replication based on the [syncrepl](http://tools.ietf.org/html/rfc4533) specification.
+
+## Initial steps
+
+The below initial conditions must be met before configuring the replication in any mode.
+
+* Make sure all the servers are up and running
+
+* Add the configuration of the partition whose data needs to be replicated.
+ For example if we like to replicate the partition dc=apache,dc=org then
+ make sure to configure this partition in all the servers that are configured to replicate.
+ See [Adding Partition](../basic-ug/1.4.3-adding-partition.mdtext)
+
+
+## Configuring Producer-Consumer replication
+
+Assuming that the Producer is running on localhost at port 10389 and consumer on localhost at port 11997 and we want to
+replicate the data from partition dc=apache,dc=org
+
+The below configuration must be added in the Consumer server and it should be restarted.
+
+ dn: ads-replConsumerId=consumer1,ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config
+ ads-replconsumerid: consumer1
+ ads-replstrictcertvalidation: FALSE
+ ads-replusetls: FALSE
+ ads-replsearchtimeout: 0
+ ads-replsearchfilter: (objectClass=*)
+ ads-replsearchsizelimit: 0
+ ads-replattributes: *
+ ads-replrefreshinterval: 60000
+ ads-repluserpassword: secret
+ ads-repluserdn: uid=admin,ou=system
+ ads-replprovport: 10389
+ ads-replprovhostname: localhost
+ ads-replrefreshnpersist: TRUE
+ ads-replsearchscope: sub
+ ads-searchbasedn: dc=apache,dc=org
+ ads-enabled: TRUE
+ objectclass: ads-replConsumer
+ objectclass: ads-base
+ objectclass: top
+ ads-replaliasderefmode: never
+
diff --git a/source/apacheds/advanced-ug/5.5-cache.md b/source/apacheds/advanced-ug/5.5-cache.md
new file mode 100644
index 0000000..fd77463
--- /dev/null
+++ b/source/apacheds/advanced-ug/5.5-cache.md
@@ -0,0 +1,27 @@
+---
+title: 5.5 - Cache
+navPrev: 5.4-replication.html
+navPrevText: 5.4 - Replication
+navUp: 5-administration.html
+navUpText: 5 - Administration
+navNext: 6-implementing-interceptor.html
+navNextText: 6 - Implementing a simple custom Interceptor for ApacheDS
+---
+
+# 5.5 - Cache
+
+We use many caches in *ApacheDS*. Here is a list of all the existing caches :
+
+* aliasCache<String, DN> : It caches aliases, using the _entryUUID_ as a key (AbstractBTreePartition)
+* piarCache<String, ParentIdAndRdn> : It caches RDN and their parent, using the _entryUUID_ as a key (AbstractBTreePartition)
+* EntryDN cache : Cache Entry's DN using the _entryUUID_ as a key (AbstractBTreePartition)
+* entryCache (JDBMPartition, MavibotPartition) : Caches the full entries, using their _entryUUID_ as keys.
+* masterTableCache (MavibotPartition) :
+* kdcReplayCache (KdcServer) :
+* changePwdReplayCache (ChangePasswordServer) :
+* groupCache (GroupCache) :
+* dnCache (DefaultDnFactory) :
+* Subentry (SubentryCache) use a ConcurrentHashMap
+* As many caches as we have indexes
+
+To be continued...
diff --git a/source/apacheds/advanced-ug/6-implementing-interceptor.md b/source/apacheds/advanced-ug/6-implementing-interceptor.md
new file mode 100644
index 0000000..edda928
--- /dev/null
+++ b/source/apacheds/advanced-ug/6-implementing-interceptor.md
@@ -0,0 +1,286 @@
+---
+title: 6 - Implementing a simple custom Interceptor for ApacheDS
+navPrev: 5.4-replication.html
+navPrevText: 5.4 - Replication
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+navNext: 7-embedding-apacheds.html
+navNextText: 7 - Embedding ApacheDS in Java
+---
+
+# 6 - Implementing a simple custom Interceptor for ApacheDS
+
+This site was updated for ApacheDS 2.0.
+
+The following is for developers who plan to implement their own interceptors in order to extend or modify the functionality of Apache Directory Server. It contains a simple example as a starting point.
+
+## What exactly is an interceptor?
+
+An interceptor filters method calls performed on on the DefaultPartitionNexus just like Servlet filters do. The ApacheDS configuration contains a chain of filters performing several tasks. In order to illustrate this, here is the list of interceptors from the default server configuration of ApacheDS 2.0
+
+ org.apache.directory.server.core.normalization.NormalizationInterceptor
+ org.apache.directory.server.core.authn.AuthenticationInterceptor
+ org.apache.directory.server.core.referral.ReferralInterceptor
+ org.apache.directory.server.core.authz.AciAuthorizationInterceptor
+ org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor
+ org.apache.directory.server.core.exception.ExceptionInterceptor
+ org.apache.directory.server.core.changelog.ChangeLogInterceptor
+ org.apache.directory.server.core.operational.OperationalAttributeInterceptor
+ org.apache.directory.server.core.schema.SchemaInterceptor
+ org.apache.directory.server.core.subtree.SubentryInterceptor
+ org.apache.directory.server.core.collective.CollectiveAttributeInterceptor
+ org.apache.directory.server.core.event.EventInterceptor
+ org.apache.directory.server.core.trigger.TriggerInterceptor
+ org.apache.directory.server.core.journal.JournalInterceptor
+
+Interceptors should usually pass the control of current invocation to the next interceptor by calling an appropriate method on NextInterceptor. The flow control is returned when the next interceptor's filter method returns. You can therefore implement pre-, post-, around- invocation handler by how you place the statement.
+
+Interceptors are a powerful way to extend and modify the server behavior. But be warned. A mistakenly written interceptor may lead to a dis-functional or corrupt server.
+Password hash. A simple interceptor
+
+In order to demonstrate how to write an interceptor, here is a simple but realistic example. The following requirement should be fulfilled by an interceptor.
+
+ No user password should be stored in the directory in clear text.
+
+To be more concrete:
+
+ If a userpassword is set by an LDAP client in plain text, a message digest algorithm should be applied to the value, and the one-way encrypted value should be stored
+ the algorithm should be applied if new entries are created or existing entries are modified (hence modify and add operations will be intercepted)
+ If the value given by the client is already provided in hashed form, nothing happens, and the given value is stored in the directory without modification
+
+## The sources
+
+Currently, the sources are checked in here
+
+ http://svn.apache.org/repos/asf/directory/sandbox/szoerner/passwordHashInterceptor
+
+In order to build it, simply check it out and type "mvn install".
+Implementing the class PasswordHashInterceptor
+
+The following UML class diagram depicts the structure of the little example. Classes in white are given by Apache Directory Server as extension points. The two gray classes comprise the example interceptor.
+
+![Password Hash Interceptor UML diagram](images/passwordHashInterceptor_UML.png)
+
+The class HashTools contains two simple methods w.r.t. hashing. isAlreadyHashed detects whether a value has already been hashed with a known message digest algorithm. applyHashAlgorithm applies a hash algorithm to a sequence of bytes. See the source code and the unit tests of this class for details, it has not that much to do with the interceptor stuff.
+
+The central class is PasswordHashInterceptor. Every interceptor has to implement the Interceptor interface from package org.apache.directory.server.core.interceptor. PasswordHashInterceptor does so by extended the convenience class BaseInterceptor from the same package.
+
+The property hashAlgorithm allows to configure the alhorithm used for hashing the passwords. It defaults to MD5 (Message-Digest algorithm 5). The property passwordAttributeName allows configuration of the attribute type which stores the user password. Its value will be hashed if needed. The property defaults to "userPassword", which is quite common and used for instance in the inetOrgPerson object class.
+
+The most interesting methods of the class are add and modify. They intercept the requests ans modify the attribute values, if needed. See below the complete source code of the class.
+
+ package org.apache.directory.samples.interceptor.pwdhash;
+
+ import static org.apache.directory.samples.interceptor.pwdhash.HashTools.applyHashAlgorithm;
+ import static org.apache.directory.samples.interceptor.pwdhash.HashTools.isAlreadyHashed;
+
+ import java.util.List;
+
+ import org.apache.directory.server.core.entry.ClonedServerEntry;
+ import org.apache.directory.server.core.interceptor.BaseInterceptor;
+ import org.apache.directory.server.core.interceptor.NextInterceptor;
+ import org.apache.directory.server.core.interceptor.context.AddOperationContext;
+ import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
+ import org.apache.directory.shared.ldap.entry.EntryAttribute;
+ import org.apache.directory.shared.ldap.entry.Modification;
+ import org.apache.directory.shared.ldap.entry.ModificationOperation;
+
+ public class PasswordHashInterceptor extends BaseInterceptor {
+
+ private String hashAlgorithm = "MD5";
+
+ private String passwordAttributeName = "userPassword";
+
+ public void setHashAlgorithm(String hashAlgorithm) {
+ this.hashAlgorithm = hashAlgorithm;
+ }
+
+ public void setPasswordAttributeName(String passwordAttributeName) {
+ this.passwordAttributeName = passwordAttributeName;
+ }
+
+ /**
+ * Intercepts the add operation in order to replace plain password values
+ * with hashed ones.
+ */
+ @Override
+ public void add(NextInterceptor next, AddOperationContext opContext)
+ throws Exception {
+
+ ClonedServerEntry entry = opContext.getEntry();
+ EntryAttribute attribute = entry.get(passwordAttributeName);
+ if (attribute != null) {
+ hashPasswordIfNeccessary(attribute);
+ }
+
+ super.add(next, opContext);
+ }
+
+ /**
+ * Intercepts the modify operation in order to replace plain password values
+ * with hashed ones.
+ */
+ @Override
+ public void modify(NextInterceptor next, ModifyOperationContext opContext)
+ throws Exception {
+
+ List<Modification> items = opContext.getModItems();
+ for (Modification modification : items) {
+ ModificationOperation operation = modification.getOperation();
+ if (operation == ModificationOperation.ADD_ATTRIBUTE
+ || operation == ModificationOperation.REPLACE_ATTRIBUTE) {
+ EntryAttribute attribute = modification.getAttribute();
+ if (attribute.getId().equalsIgnoreCase(passwordAttributeName)) {
+ hashPasswordIfNeccessary(attribute);
+ }
+ }
+ }
+ super.modify(next, opContext);
+ }
+
+ protected void hashPasswordIfNeccessary(EntryAttribute attribute) {
+ try {
+ byte[] password = attribute.getBytes();
+ if (!isAlreadyHashed(password)) {
+ byte[] hashed = applyHashAlgorithm(hashAlgorithm, password);
+ attribute.clear();
+ attribute.add(hashed);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Password hash failed", e);
+ }
+ }
+ }
+
+## Using the interceptor
+
+You may use a custom interceptor both in a standard ApacheDS installation and in a server started embedded.
+Adding it to a standard server installation (server.xml)
+
+In order to get the interceptor installed in a default installation of ApacheDS 1.5.5., just copy the jar-File resulting from the Maven build, which contains the custom classes, to APACHEDS_INSTALLDIR/lib/ext.
+
+After that, add the interceptor to the server.xml file in APACHEDS_INSTALLDIR/conf/. Make sure to backup the file before your modifications. Within server.xml find the XML elements which list the interceptors. The easiest way to add a custom interceptor is to add a spring bean (namespace "s"). You mya set configuration properties to the interceptor as well, if it supports some.
+
+The following fragment shows the interceptor list with the example interceptor added just behind normalization. For demonstration purposes, the hash algorithm is set to "MD5" (which is the default of our interceptor anyway).
+
+ ...
+ <interceptors>
+ <normalizationInterceptor/>
+ <s:bean class="org.apache.directory.samples.interceptor.pwdhash.PasswordHashInterceptor">
+ <s:property name="hashAlgorithm" value="MD5" />
+ </s:bean>
+ <authenticationInterceptor/>
+ <referralInterceptor/>
+ <aciAuthorizationInterceptor/>
+ <defaultAuthorizationInterceptor/>
+ <exceptionInterceptor/>
+ <operationalAttributeInterceptor/>
+ ...
+ </interceptors>
+ ...
+
+## Embedded mode
+
+As an alternative, the following Java code starts an ApacheDS embedded in a main method. The list of interceptors is complemented with the example interceptor. We insert it exactly behind the NormalizingInterceptor (the position is a little bit tricky to determine).
+
+ package org.apache.directory.samples.interceptor.pwdhash;
+
+ import java.util.List;
+
+ import org.apache.directory.server.core.DefaultDirectoryService;
+ import org.apache.directory.server.core.DirectoryService;
+ import org.apache.directory.server.core.interceptor.Interceptor;
+ import org.apache.directory.server.core.normalization.NormalizationInterceptor;
+ import org.apache.directory.server.ldap.LdapServer;
+ import org.apache.directory.server.protocol.shared.transport.TcpTransport;
+
+ /**
+ * Main class which starts an embedded server with the interceptor inserted into
+ * the chain.
+ */
+ public class Main {
+
+ public static void main(String[] args) throws Exception {
+
+ DirectoryService directoryService = new DefaultDirectoryService();
+ directoryService.setShutdownHookEnabled(true);
+
+ List<Interceptor> interceptors = directoryService.getInterceptors();
+
+ // Find Normalization interceptor in chain
+ int insertionPosition = -1;
+ for (int pos = 0; pos < interceptors.size(); ++pos) {
+ Interceptor interceptor = interceptors.get(pos);
+ if (interceptor instanceof NormalizationInterceptor) {
+ insertionPosition = pos;
+ }
+ }
+
+ // insert our new interceptor just behind
+ interceptors.add(insertionPosition + 1, new PasswordHashInterceptor());
+ directoryService.setInterceptors(interceptors);
+
+ LdapServer ldapServer = new LdapServer();
+ ldapServer.setDirectoryService(directoryService);
+ ldapServer.setAllowAnonymousAccess(true);
+
+ TcpTransport ldapTransport = new TcpTransport(10389);
+ ldapServer.setTransports(ldapTransport);
+
+ directoryService.startup();
+ ldapServer.start();
+ }
+ }
+
+## Verification
+
+Let's check whether our new interceptor does its job! In order to do so, we use Apache Directory Studio and connect to the server with the interceptor enabled (see above).
+
+First we create a new entry with the following data, using "New Entry ..." within Studio.
+
+ dn: cn=Kate Bush,ou=users,ou=system
+ objectClass: person
+ objectClass: top
+ cn: Kate Bush
+ sn: Bush
+
+Then we add a new attribute userPassword in the entry editor. For the value, a special editor appears:
+
+![](images/passwordHashInterceptor_passwordEditor.png)
+
+Select "Plaintext" as the hash method and enter a new password. We selected "secret" (see screen shot above). After pressing OK, a modify operation is sent to the server, which will be intercepted by our example class.
+
+![](images/passwordHashInterceptor_modificationLog.png)
+
+After that, the value for userPassword is not "secret", but the MD5 digested value of it.
+
+![](images/passwordHashInterceptor_entryEditor.png)
+
+The user Kate Bush is still capable of authenticating with the password "secret", because Apache Directory Server supports authentication with passwords hashed with this algorithm. You can verify this by connecting with Studio and the using "cn=Kate Bush,ou=users,ou=system" as bind DN.
+
+Here it is demonstrated with the help of the ldapsearch command line tool. The result also shows that the userPassword value is hashed with MD5.
+
+ $ ldapsearch -h localhost -p 10389 -D "cn=Kate Bush,ou=users,ou=system" \\
+ -w secret -b "ou=users,ou=system" -s one "(objectClass=*)"
+ version: 1
+ dn: cn=Kate Bush,ou=users,ou=system
+ objectClass: person
+ objectClass: top
+ cn: Kate Bush
+ sn: Bush
+ userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
+ $
+
+## Limitations of the example
+
+This example is intended as a demonstration, on how to write your custom interceptor. Don't consider it bullet proof. It has not been tested under production conditions, etc.
+
+At least the following limitation should be mentioned
+
+ The default hash algorithm MD5 is considered weak.
+ Exception handling is poor. E.g. if someone configures an unsupported hash algorithm, the interceptor fails to create an appropriate LDAP error.
+ If a multivalued password attribute is used, the interceptor will simply ignore that fact (does not apply to userPassword as of RFC 2256).
+
+## Further reading
+
+Learn more about interceptors in ApacheDS Architecture Documentation, check out the source code of some implementations of the Interceptor interface, and/or read the javadoc comments.
\ No newline at end of file
diff --git a/source/apacheds/advanced-ug/7-embedding-apacheds.md b/source/apacheds/advanced-ug/7-embedding-apacheds.md
new file mode 100644
index 0000000..00a0bbf
--- /dev/null
+++ b/source/apacheds/advanced-ug/7-embedding-apacheds.md
@@ -0,0 +1,141 @@
+---
+title: 7 - Embedding ApacheDS in Java
+navPrev: 6-implementing-interceptor.html
+navPrevText: 6 - Implementing a simple custom Interceptor for ApacheDS
+navNext: 8-operational-attributes.html
+navNextText: 8 - Operational Attributes
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+---
+
+# 7 - Embedding ApacheDS in Java
+
+## Using ApacheDS for unit tests
+The idea is to use ADS as an embedded server for Ldap junit tests.
+We will build an environment in which it will be convenient to test
+Ldap applications.
+
+We also want to avoid launching the server for every test, as it's
+an expensive operation. We have built ApacheDS so that you can start
+a server, inject some data, launch a test, then revert the data and
+go on to another test. At the end of the tests, the server is stopped.
+
+### Prerequicites
+We will assume you have **Maven** project and using **JUNIT** for testing
+
+### First steps
+#### Maven
+You need to add following dependency to your `pom.xml`:
+
+ <dependency>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-test-framework</artifactId>
+ <version>2.0.0.AM25</version>
+ <scope>test</scope>
+ </dependency>
+
+Please NOTE: you need to exclude `org.apache.directory.api:api-ldap-schema-data`
+artifact from above dependency in case your project uses `org.apache.directory.api:api-all`
+
+#### Java
+Maven set-up was easy enough, let's create our first unit test:
+
+##### Resources
+Lets describe your LDAP structure in external LDIF file
+
+Create file `src/test/resources/users.ldif` with following text:
+
+ version: 1
+ dn: dc=myorg,dc=com
+ objectClass: domain
+ objectClass: top
+ dc: myorg
+
+ dn: ou=Users,dc=myorg,dc=com
+ objectClass: organizationalUnit
+ objectClass: top
+ ou: Users
+
+ dn: ou=Groups,dc=myorg,dc=com
+ objectClass: organizationalUnit
+ objectClass: top
+ ou: Groups
+
+ dn: cn=Test1 Ldap,ou=Users,dc=myorg,dc=com
+ objectClass: inetOrgPerson
+ objectClass: organizationalPerson
+ objectClass: person
+ objectClass: top
+ cn: Test1 Ldap
+ sn: Ldap
+ uid: ldaptest1
+ userPassword: 12345
+
+
+##### Basic test
+
+ import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
+ import org.apache.directory.server.core.integ.FrameworkRunner;
+ import org.apache.directory.server.core.annotations.CreateDS;
+ import org.apache.directory.server.core.annotations.CreatePartition;
+ import org.apache.directory.server.annotations.CreateLdapServer;
+ import org.apache.directory.server.annotations.CreateTransport;
+ import org.apache.directory.server.core.annotations.ApplyLdifFiles;
+ import org.junit.runner.RunWith;
+ import org.junit.Test;
+
+ @RunWith(FrameworkRunner.class)
+ @CreateDS(name = "myDS",
+ partitions = {
+ @CreatePartition(name = "test", suffix = "dc=myorg,dc=com")
+ })
+ @CreateLdapServer(transports = { @CreateTransport(protocol = "LDAP", address = "localhost")})
+ @ApplyLdifFiles({"users.ldif"})
+ public class TestLdap extends AbstractLdapTestUnit {
+ @Test
+ public void test() {
+ //do whatever you need with `ldapServer`
+ }
+ }
+
+
+As a result you can access running ApacheDS server at `ldap://localhost:<random port>`
+inside your test, or access server internals via `static ldapServer`.
+
+##### Advanced usage
+Often you need to add LDAP unit tests to already created tests, in this case you might
+not be allowed to `extend AbstractLdapTestUnit` and/or to `@RunWith(FrameworkRunner.class)`
+In this case you can use `@ClassRule`.
+Here is the example:
+
+ import org.apache.directory.server.core.annotations.CreateDS;
+ import org.apache.directory.server.core.annotations.CreatePartition;
+ import org.apache.directory.server.annotations.CreateLdapServer;
+ import org.apache.directory.server.annotations.CreateTransport;
+ import org.apache.directory.server.core.annotations.ApplyLdifFiles;
+ import org.apache.directory.server.core.integ.CreateLdapServerRule;
+ import org.junit.ClassRule;
+ import org.junit.Test;
+
+ @CreateDS(name = "myDS",
+ partitions = {
+ @CreatePartition(name = "test", suffix = "dc=myorg,dc=com")
+ })
+ @CreateLdapServer(transports = { @CreateTransport(protocol = "LDAP", address = "localhost")})
+ @ApplyLdifFiles({"users.ldif"})
+ public class TestLdap {
+ @ClassRule
+ public static CreateLdapServerRule serverRule = new CreateLdapServerRule();
+
+ @Test
+ public void test() {
+ //do whatever you need with `serverRule.getLdapServer()`
+ }
+ }
+
+
+As you can see the code if very much the same, the only difference: you are working with
+`serverRule.getLdapServer()` and not with `ldapServer`
+
+
+
diff --git a/source/apacheds/advanced-ug/8-operational-attributes.md b/source/apacheds/advanced-ug/8-operational-attributes.md
new file mode 100644
index 0000000..db5cac8
--- /dev/null
+++ b/source/apacheds/advanced-ug/8-operational-attributes.md
@@ -0,0 +1,160 @@
+---
+title: 8 - Operational Attributes
+navPrev: 7-embedding-apacheds.html
+navPrevText: 7 - Embedding ApacheDS in Java
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+---
+
+# 8 - Operational Attributes
+
+Operational attributes are attributes that are used internally by the server. They generally can't be modified by a user, although one can read them.
+
+In order to retrieve an operational attribute, you have to require it explicitely, or request all of them using the special attribute '+'.
+
+[RFC 4512](https://tools.ietf.org/html/rfc4512) defines four different flavors of **AttributeType** :
+
+* userApplications : User's attributes
+* directoryOperation : Server's attributes
+* dSAOperation : Server's attributes that have no meant in being distributed
+* distributedOperation : Server's attribute that are used in a distributed environment
+
+
+ApacheDS support a list of standard LDAP operational attributes, plus a few that are specific. Here are the supported operational attributes.
+
+## Global operational attributes
+
+Those operational attributes are stored in the **RootDSE**, and global to the server. They can't be modified by a user.
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| vendorName | DSA OPERATION | Standard | RFC3045: name of implementation vendor |
+| vendorVersion | DSA OPERATION | Standard | RFC3045: version of implementation |
+| entryTtl | DSA OPERATION | Standard | RFC2589: entry time-to-live |
+| dynamicSubtrees | DSA OPERATION | Standard | RFC2589: dynamic subtrees |
+| supportedFeatures | DSA OPERATION | Standard | RFC3674: features supported by the server |
+| supportedControl | DSA OPERATION | Standard | RFC2252: supported controls |
+| supportedSASLMechanisms | DSA OPERATION | Standard | RFC2252: supported SASL mechanisms |
+| supportedLDAPVersion | DSA OPERATION | Standard | RFC2252: supported LDAP versions |
+| namingContexts | DSA OPERATION | Standard | RFC2252: naming contexts |
+| altServer | DSA OPERATION | Standard | RFC2252: alternative servers |
+| supportedExtension | DSA OPERATION | Standard | RFC2252: supported extended operations |
+
+
+## Entry operational attributes
+
+Those are attributes related to an entry, carrying some additional information about it
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| createTimestamp | DIRECTORY OPERATION | Standard | RFC2252: time which object was created |
+| modifyTimestamp | DIRECTORY OPERATION | Standard | RFC2252: time which object was last modified |
+| creatorsName | DIRECTORY OPERATION | Standard | RFC2252: name of creator |
+| modifiersName | DIRECTORY OPERATION | Standard | RFC2252: name of last modifier |
+| hasSubordinates | DIRECTORY OPERATION | Standard | X.501: entry has children |
+| ref | DISTRIBUTED OPERATION | Standard | RFC3296: named reference - a labeledURI |
+| entryUUID | DIRECTORY OPERATION | ApacheDS | UUID of the entry |
+| entryDN | DIRECTORY OPERATION | ApacheDS | DN of the entry |
+| entryCSN | DIRECTORY OPERATION | ApacheDS | Change sequence number of the entry |
+| nbChildren | DIRECTORY OPERATION | ApacheDS | The number of children for this entry |
+| nbSubordinates | DIRECTORY OPERATION | ApacheDS | The number of subordinates for this entry |
+| entryParentId | DIRECTORY OPERATION | ApacheDS | Attribute holding the id of parent entry |
+
+
+
+## Schema related operational attributes
+
+Those operational attributes are containing the schema elements handled by the server. They are stored in the **RootDSE**
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| ldapSyntaxes | DIRECTORY OPERATION | Standard | RFC2252: LDAP syntaxes |
+| subschemaSubentry | DIRECTORY OPERATION | Standard | RFC2252: name of controlling subschema entry |
+| dITStructureRules | DIRECTORY OPERATION | Standard | RFC2252: DIT structure rules |
+| dITContentRules | DIRECTORY OPERATION | Standard | RFC2252: DIT content rules |
+| matchingRules | DIRECTORY OPERATION | Standard | RFC2252: matching rules |
+| attributeTypes | DIRECTORY OPERATION | Standard | RFC2252: attribute types |
+| objectClasses | DIRECTORY OPERATION | Standard | RFC2252: object classes |
+| nameForms | DIRECTORY OPERATION | Standard | RFC2252: Name Forms |
+| matchingRuleUse | DIRECTORY OPERATION | Standard | RFC2252: matching rule uses |
+| structuralObjectClass | DIRECTORY OPERATION | Standard | X.500(93): structural object class of entry |
+| comparators | DIRECTORY OPERATION | ApacheDS | A multivalued comparator description attribute |
+| normalizers | DIRECTORY OPERATION | ApacheDS | A multivalued normalizer description attribute |
+| syntaxCheckers | DIRECTORY OPERATION | ApacheDS | A multivalued syntaxCheckers description attribute |
+| schemaModifyTimestamp | DIRECTORY OPERATION | ApacheDS | Time which schema was modified |
+| schemaModifiersName | DIRECTORY OPERATION | ApacheDS | The DN of the modifier of the schema |
+
+
+## Collective Attributes operational attributes
+
+Those are attributes related to collective attributes.
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| collectiveAttributeSubentries | DIRECTORY OPERATION | Standard | RFC3671: identifies all collective attribute subentries that affect the entry |
+| collectiveExclusions | DIRECTORY OPERATION | Standard | RFC3671: RFC3671: allows particular collective attributes to be excluded from an entry |
+
+
+## Administrative Model Attributes
+
+Those are attributes related to the Administrative Model management
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| administrativeRole | DIRECTORY OPERATION | Standard | RFC3672: indicate that the associated administrative area is concerned withone or more administrative roles |
+| subtreeSpecification | DIRECTORY OPERATION | Standard | RFC3672: defines a collection of entries within an administrative area |
+| prescriptiveACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a set of entries |
+| entryACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a single entry |
+| subentryACI | DIRECTORY OPERATION | ApacheDS | Access control information that applies to a single subentry |
+| autonomousAreaSubentry | DIRECTORY OPERATION | ApacheDS | Used to track a subentry associated with an autonomousArea |
+| accessControlSubentries | DIRECTORY OPERATION | ApacheDS | Used to track a subentry associated with access control areas |
+
+
+## Replication related operational attributes
+
+Those attributes are used in a replication context.
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| contextCSN | DIRECTORY OPERATION | ApacheDS | The largest committed CSN of a context |
+| entryDeleted | DIRECTORY OPERATION | ApacheDS | Whether or not an entry has been deleted. (Not anymore used) |
+
+
+## Index related operational attributes
+
+Those operational attributes are used to define the various system predefined indexes
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| apachePresence | DSA OPERATION | ApacheDS | Index attribute used to track the existence of attributes |
+| apacheOneLevel | DSA OPERATION | ApacheDS | Index attribute used to track one level searches |
+| apacheOneAlias | DSA OPERATION | ApacheDS | Index attribute used to track single level aliases |
+| apacheSubAlias | DSA OPERATION | ApacheDS | Index attribute used to track sub level aliases |
+| apacheAlias | DSA OPERATION | ApacheDS | Index attribute used to track aliases |
+| apacheSubLevel | DSA OPERATION | ApacheDS | Index attribute used to track sub level searches |
+| apacheRdn | DSA OPERATION | ApacheDS | Index attribute RDN with values both user provided and normalized based on schema |
+
+
+## Trigger interceptor Model Attributes
+
+Those are attributes used in the Trigger Interceptor
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| prescriptiveTriggerSpecification | DIRECTORY OPERATION | ApacheDS | Trigger specification that applies to a set of entries |
+| entryTriggerSpecification | DIRECTORY OPERATION | ApacheDS | Trigger specification that applies to a single entry |
+| triggerExecutionSubentries | DIRECTORY OPERATION | ApacheDS | Used to track subentries associated with a trigger area which an entry falls under |
+
+
+## ChangeLog related operational attributes
+
+Those operational attributes are meant to be used by teh **ChangeLog** interceptor. They are not supposed to be distributed, and they can't be modified by a user.
+
+| Attribute name | Type | Category | Description |
+|---|---|---|---|
+| revisions | DSA OPERATION | ApacheDS | Revision numbers used in change log |
+| changeTime | DSA OPERATION | ApacheDS | Represents the time when the change event occurred |
+| changeType | DSA OPERATION | ApacheDS | Type of change operation |
+| eventId | DSA OPERATION | ApacheDS | The unique sequential id for the event (a.k.a revision number) |
+| committer | DSA OPERATION | ApacheDS | The principal committing the change |
+| changeLogContext | DSA OPERATION | ApacheDS | Tells about the changelog context suffix |
diff --git a/source/apacheds/advanced-ug/9-apacheds-internals.md b/source/apacheds/advanced-ug/9-apacheds-internals.md
new file mode 100644
index 0000000..fa1b57f
--- /dev/null
+++ b/source/apacheds/advanced-ug/9-apacheds-internals.md
@@ -0,0 +1,120 @@
+---
+title: 9 - ApacheDS internals
+navPrev:
+navPrevText:
+navUp: ../advanced-user-guide.html
+navUpText: Advanced User Guide
+---
+
+# 9 - ApacheDS internals
+
+## Startup
+
+The server is started by calling the *UberJarMain* class, with the directory containing the server's layout. The layout is the list of directory where we will store various server's files :
+
+* The instance directory, ie the base directory for the server : $BASE
+* The configuration directory : _${BASE}/conf/_
+* The log directory : _${BASE}/log/_
+* The partition directory, which will contain the data : _${BASE}/partitions/_
+* The run directory, which will contain the server PID : _${BASE}/run/_
+* The cache directory, containing the cache files : _${BASE}/cache/_
+
+All those directories will be created if they do not exist already. It's also possible to provide specific directories by setting some environment variables : _apacheds.log.dir_ for the logs directory, and _apacheds.run.dir_ for the run directory.
+
+The server will also loog for some configuration files :
+
+* The wrapper configuration : _${BASE}/conf/wrapper.conf_
+* The log configuration file : _${BASE}/conf/log4j.properties_
+
+Once those elements configured, we start an instance of _ApacheDsService_, which is responsible for initializing the service, and the various configured servers :
+
+ ...
+ // Creating ApacheDS service
+ service = new ApacheDsService();
+
+ service.start( layout );
+ ...
+
+
+We first create the cache service, which will be used all over the server. This cache can be configured by creating and tuning the _${BASE}/conf/directory-cacheservice.xml_ file, otherwise we use a default configuration.
+
+The next step is to initialize the _SchemaManager_ which, again, will be used by the whole service. This will read the existing schema, or extract the default schema, and load it in an instance of the _SchemaManager_ class. The schema is extracted on disk as LDIF files, into the _${BASE}/partitions/schema_ directory.
+
+We also initialize the _DnFactory_ class, which is used to cache created DNs. This factory has a cache. Every _Dn_ created using this factory will be schema aware, as we passed a _SchemaManager_ instance to the factory.
+
+Then we create the schema partition, that will manage access and updates done on the schema.
+
+The configuration is now initialized. If it wasn't existing, we extract a default one. We create a configuration partition, which will be stored on _${BASE}/conf/ou=config_.
+The configuration is in LDIF format, it is read from disk, and a in-memory representation is created.
+
+The _DirectoryService_ can now be created and initialized.
+
+### DirectoryService initialization
+
+The _DirectoryService_ is the core of the system. It manages the access to the data though the interceptors chain, offer the needed services to all the servers that need it, and manage the sessions.
+
+LdapApiService
+--------------
+
+Load the default controls
+Load the default extended operations
+Create the LDAP decoder and encoder (should be done when we start the LDAP server)
+Create the OperationManager
+Create the changeLog
+Create the Journal
+Create the default interceptors (ordered) :
+
+ NormalizationInterceptor
+ AuthenticationInterceptor
+ create the authenticators
+ initialize the passwordPolicies
+ ReferralInterceptor
+ AciAuthorizationInterceptor
+ DefaultAuthorizationInterceptor
+ AdministrativePointInterceptor
+ ExceptionInterceptor
+ SchemaInterceptor
+ OperationalAttributeInterceptor
+ CollectiveAttributeInterceptor
+ SubentryInterceptor
+ EventInterceptor
+ TriggerInterceptor
+ ChangeLogInterceptor
+ JournalInterceptor
+
+Create the partitions :
+
+ system
+ example (or whatever user partition is defined)
+
+Create the changeLog
+Create the Journal
+Add the Schema partition
+Add the config partition
+
+and startup the directoryService, which will create a shutdown hook, and initialize the various compnents (cachService, schemaPartition, partitionNexus which loads the rootDSE, the system partition, interceptors, changeLog, journal and the vatious user's partitions)
+
+### Servers initialization
+
+It's time to initialize the servers : LDAP (if requested), NTP (if requested), Kerberos (if requested), HTTP (if requested). The DNS and DHCP server are not supported at the moment. As we can see, we can start many different servers, which will rely - or not - on the DirectoryService.
+
+#### LDAP server
+
+We first load a KeyStore taht will be used to manage certificates, then create the LDAP protocol handles - the handlers are responsible for processing each LDAP operation, like BIND, ADD, etc... -. We also register the extended operations, the SASL mechanisms, start the replication producer if needed, and starts the needed transports - we may have two : the default transport and the encrypted transport -. At the end, we initialize the replication consumer if needed.
+
+#### NTP server
+
+The NTP server registers the protocol handler, and start the associated transport (UDP, port 123)
+
+
+#### Kerberos server
+To be completed
+
+
+#### Http server
+
+This is mainly use as a mean to manage the LDAP server through a HTTP layer.
+
+### Last steps
+
+We register an event listener to manage dynamic configuration updates, start the shutdown hook, and we are done !
diff --git a/source/apacheds/advanced-user-guide.md b/source/apacheds/advanced-user-guide.md
new file mode 100644
index 0000000..f4ba217
--- /dev/null
+++ b/source/apacheds/advanced-user-guide.md
@@ -0,0 +1,79 @@
+---
+title: Advanced User Guide
+---
+
+# ApacheDS 2.0 Advanced User Guide
+This guide get you a deep further into ApacheDS 2.0. Once you have installed the server, and undestood how it works, this is the guide to read to get a complete understanding on what it offers, and how to use it at full steam.
+
+# Table of content
+
+* [0 - Community](advanced-ug/0-community.html)
+ * [0.1. Reporting Bugs](advanced-ug/0.1-reporting-bugs.html)
+ * [0.2. Building trunks](advanced-ug/0.2-building-trunks.html)
+ * [0.3. Contributing](advanced-ug/0.3-contributing.html)
+* [1. Architecture](advanced-ug/1-architecture.html)
+ * [1.1 - Architectural Overview](advanced-ug/1.1-architecture-overview.html)
+ * [1.2 - Network Layer](advanced-ug/1.2-network.html)
+ * [1.3 - Directory Service](advanced-ug/1.3-directory-service.html)
+ * [1.4 - Interceptors](advanced-ug/1.4-interceptors.html)
+ * [1.5 - Backend](advanced-ug/1.5-backend.html)
+* [2. Server Configuration](advanced-ug/2-server-config.html)
+ * [2.1 - Configuration Description](advanced-ug/2.1-config-description.html)
+ * [2.2 - Instance Layout](advanced-ug/2.2-instance-layout.html)
+ * ![debian](advanced-ug/images/debian.png)[2.2.1 - Debian instance Layout](advanced-ug/2.2.1-debian-instance-layout.html)
+ * ![RPM](advanced-ug/images/rpm.png)[2.2.2 - RPM instance Layout](advanced-ug/2.2.2-rpm-instance-layout.html)
+ * ![MacOSX](advanced-ug/images/mac.png)[2.2.3 - MacOSX instance Layout](advanced-ug/2.2.3-macosx-instance-layout.html)
+ * ![Windows](advanced-ug/images/windows.png)[2.2.4 - Windows instance Layout](advanced-ug/2.2.4-windows-instance-layout.html)
+ * [2.2.5 - Generic instance Layout](advanced-ug/2.2.5-generic-instance-layout.html)
+* [3. Administrative Model](advanced-ug/3-admin-model.html)
+ * [3.1 - Administration Point](advanced-ug/3.1-administrative-points.html)
+ * [3.2 - Operations on an Administrative Point](3.2-operations-on-an-administrativepoint.html)
+* [4 - Security](advanced-ug/4-authentication-and-authorization.html)
+ * [4.1 - Authentication](advanced-ug/4.1-authentication.html)
+ * [4.1.1 - Simple authentication](advanced-ug/4.1.1-simple-authn.html)
+ * [4.1.1.1 - Anonymous Authentication](advanced-ug/4.1.1.1-anonymous-authn.html)
+ * [4.1.1.2 - Name/Password Authentication](advanced-ug/4.1.1.2-name-password-authn.html)
+ * [4.1.1.2 - Unauthenticated Authentication](advanced-ug/4.1.1.2-unauthenticated-authn.html)
+ * [4.1.2 - SASL authentication](advanced-ug/4.1.2-sasl-authn.html)
+ * [4.1.2.1 - SASL PLAIN text Authentication](4.1.2.1-sasl-plain-text-authn.html)
+ * [4.1.2.2 - SASL CRAM-MD5 Authentication](4.1.2.2-sasl-cram-md5-authn.html)
+ * [4.1.2.3 - SASL DIGEST-MD5 Authentication](4.1.2.3-sasl-digest-md5-authn.html)
+ * [4.1.2.4 - SASL GSSAPI Authentication](4.1.2.4-sasl-gssapi-authn.html)
+ * [4.1.2.5 - SASL EXTERNAL Authentication](advanced-ug/4.1.2.5-sasl-external-authn.html)
+ * [4.1.2.6 - SASL NTLM Authentication](advanced-ug/4.1.2.6-sasl-ntlm-authn.html)
+ * [4.1.3 - Kerberos authentication](advanced-ug/4.1.3-kerberos-authn.html)
+ * [4.1.4 - Client authentication through certificates](advanced-ug/4.1.4-certificate-authn.html)
+ * [4.2 - Authorization](advanced-ug/4.2-authorization.html)
+ * [4.2.1 - Introduction](advanced-ug/4.2.1-introduction.html)
+ * [4.2.2 - Definitions](advanced-ug/4.2.2-definitions.html)
+ * [4.2.3 - Enabling Access Control](advanced-ug/4.2.3-enabling-access-control.html)
+ * [4.2.4 - ACI Types](advanced-ug/4.2.4-aci-types.html)
+ * [4.2.4.1 - Entry ACI](advanced-ug/4.2.4.1-entryaci.html)
+ * [4.2.4.2 - Prescriptive ACI](advanced-ug/4.2.4.2-prescriptiveaci.html)
+ * [4.2.4.3 - Subentry ACI](advanced-ug/4.2.4.3-subentryaci.html)
+ * [4.2.5 - ACI Elements](advanced-ug/4.2.5-aci-elements.html)
+ * [4.2.5.1 - User Classes](advanced-ug/4.2.5.1-userclasses.html)
+ * [4.2.5.2 - Protected Items](advanced-ug/4.2.5.2-protecteditems.html)
+ * [4.2.5.3 - Permissions](advanced-ug/4.2.5.3-permissions.html)
+ * [4.2.5.4 - Subtrees](advanced-ug/4.2.5.4-subtrees.html)
+ * [4.2.6 - The ACDF Engine](advanced-ug/4.2.6-the-acdf-engine.html)
+ * [4.2.6.1 - How it works](advanced-ug/4.2.6.1-how-it-works.html)
+ * [4.2.6.2 - Selections](advanced-ug/4.2.6.2-selections.html)
+ * [4.2.6.3 - Constraints](advanced-ug/4.2.6.3-constraints.html)
+ * [4.2.6.4 - Priority](advanced-ug/4.2.6.4-priority.html)
+ * [4.2.7 - Using ACIs Trail](advanced-ug/4.2.7-using-acis-trail.html)
+ * [4.2.7.1 - Enable Authenticated Users to Browse and Read Entries](advanced-ug/4.2.7.1-enable-authenticated-users-to-browse-and-read-entries.html)
+ * [4.2.8 - ACI Administration](advanced-ug/4.2.8-aci-administration.html)
+ * [4.2.9 - Migration from other LDAP Servers](advanced-ug/4.2.9-migration-from-other-ldap-servers.html)
+ * [4.2.10 - ACI grammar](advanced-ug/4.2.10-aci-grammar.html)
+ * [4.2.11 - Links and References](advanced-ug/4.2.11-links-and-references.html)
+ * [4.3 Password Policy](advanced-ug/4.3-password-policy.html)
+* [5 - Administration](advanced-ug/5-administration.html)
+ * [5.1 - Layout](advanced-ug/5.1-layout.html)
+ * [5.2 - Starting and stopping](advanced-ug/5.2-start-stop.html)
+ * [5.3 - Logs](advanced-ug/5.3-logs.html)
+ * [5.4 - Replication](advanced-ug/5.4-replication.html)
+ * [5.5 - Cache](5.5-cache.html)
+* [6 - Implementing a simple custom Interceptor for ApacheDS](advanced-ug/6-implementing-interceptor.html)
+* [7 - Embedding ApacheDS in Java](advanced-ug/7-embedding-apacheds.html)
+* [8 - Operational Attributes](advanced-ug/8-operational-attributes.html)
diff --git a/source/apacheds/basic-ug/1-how-to-begin.md b/source/apacheds/basic-ug/1-how-to-begin.md
new file mode 100644
index 0000000..abfe794
--- /dev/null
+++ b/source/apacheds/basic-ug/1-how-to-begin.md
@@ -0,0 +1,26 @@
+---
+title: 1 - How To Begin
+navUp: ../basic-user-guide.html
+navUpText: Basic User Guide
+navNext: 1.1-what-apacheds-is.html
+navNextText: 1.1 - What Apache DS is
+---
+
+# 1 - How to begin
+This chapter helps you to set up a server, with the minimal configuration options being explained. That should be enough to get a running server.
+
+This user guide is **not** intended to be a **LDAP** guide : there are some excellent tutorials or books, we won't try to challenge them !
+
+## Table of content
+
+* [1.1 - What Apache Directory Server is](1.1-what-apacheds-is.html)
+* [1.2 - Some Background. Directories, directory services and LDAP](1.2-some-background.html)
+* [1.3 - Installing and starting the server](1.3-installing-and-starting.html)
+* [1.4 - Basic configuration tasks](1.4-basic-configuration-tasks.html)
+ * [1.4.1 - Changing the server port for LDAP](1.4.1-changing-server-port.html)
+ * [1.4.2 - Changing the admin password](1.4.2-changing-admin-password.html)
+ * [1.4.3 - Adding your own partition](1.4.3-adding-partition.html)
+ * [1.4.4 - Configure logging](1.4.4-configure-logging.html)
+ * [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)
+* [1.5 - About the sample configurations and sample directory data](1.5-sample-configuration.html)
+* [1.6 - Backup/Restore](1.6-backup-restore.html)
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/1.1-what-apacheds-is.md b/source/apacheds/basic-ug/1.1-what-apacheds-is.md
new file mode 100644
index 0000000..f1294b5
--- /dev/null
+++ b/source/apacheds/basic-ug/1.1-what-apacheds-is.md
@@ -0,0 +1,46 @@
+---
+title: 1.1 - What Apache DS is
+navPrev: 1-how-to-begin.html
+navPrevText: 1 - How to begin
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 1.2-some-background.html
+navNextText: 1.2 - Some Background. Directories, directory services and LDAP
+---
+
+# 1.1 - What Apache Directory Server is
+
+This section describes what Apache Directory Server (abbreviated ApacheDS) is, and where it comes from.
+
+{{% toc %}}
+
+## System vision
+
+ApacheDS 2.0 is an embeddable, extendable, standards compliant, modern LDAP server written entirely in Java, and available under the Apache Software License. Other network protocols like Kerberos and NTP are supported as well (and even more may be added), but basically (and especially for this introduction guide) ApacheDS is an LDAP server.
+
+_Embeddable_ means that it is possible to configure, start and stop ApacheDS from other Java components, especially application servers, and the server runs within the same VM. The solution has already been successfully embedded in Apache Geronimo, JBoss, and others. The fact that the server is embeddable is quite interesting, nevertheless you also have the deployment option to run the server standalone, for instance as a Windows service. Perhaps you know this situation from other LDAP servers -- open source (like OpenLDAP) as well as commercial ones (like Sun Java System Directory Server). This guide is dedicated to people that are new to ApacheDS. The guide concentrates on installing, configuring and running ApacheDS in a standalone configuration.
+
+_Extendable_ means that the modern architecture of the solution provides many extension points. Write your own partitions to store directory data, interceptors to add functionality, etc. by implementing certain interfaces and plugging them in using Spring.
+
+_Standard compliant_ means that ApacheDS 2.0 adheres to all RFCs relevant to LDAPv3. Please note that version 1.0 of the server has been successfully certified by the Open Group in September 2006 ("LDAP certified"). Thus LDAP clients may rightly expect that ApacheDS behaves like they expect.
+
+_Modern_ means that ApacheDS aims modernize the LDAP territory, as well as it favors standards compliance. New rich integration tier constructs like LDAP Stored Procedures and Triggers are being built on top of existing standards.
+
+_Entirely written in Java_ means that the software compiles and runs on a huge number of hardware and software platforms. Native installers are available for Windows, MacOS and Solaris (both SPARC and intel platform), but in fact the set of possible targets is by far more extensive.
+
+### Architectural overview
+
+![50k ft architecture](images/50k-ft-architecture.png)
+
+## Origin and Motives
+
+Through his experiences with enterprise LDAP directories, Alex Karasulu, realized there is a great need for rich integration tier constructs like LDAP Stored Procedures, Triggers, and Views. In 2001 he set out to alter the OpenLDAP server to offer support for these useful facilities which are present in relational databases but missing in the LDAP world. Alex's attempts failed due to the complexity of the software which was brittle, and difficult to manage. As C code ported to several platforms, the OpenLDAP code base, had several #IFDEF conditional pre-compiler directives that made it difficult to change the code. At this point Alex thought about implementing a new LDAP server in pure Java. Thanks to NIO this was finally possible using the 1.4 JDK.
+
+In October 2002 Alex Karasulu founded and registered the [LDAPd](http://sourceforge.net/projects/ldapd) project at SourceForge.net. LDAPd was a a pure Java embeddable LDAP v3 protocol daemon built on the Avalon framework. Alex donated the code to the Apache Software Foundation and the code entered the [Apache Incubator](http://incubator.apache.org/) in October 2003. One year later in October of 2004, the Apache Directory Top Level Project (TLP) was formed after a successful incubation with the now called Apache Directory Server as its flagship product. After 4 years of development, in October 2006, Apache Directory Server 1.0 was released as an Open Group certified LDAPv3 protocol server. The certification has been renewed in September 2007.
+
+Having a standards compliant and modern LDAP server, Apache Directory Team is now working on Identity and Access Management solutions leveraging the directory technology.
+
+## Resources
+
+* [Proposal for an Apache Directory Project](../../original-project-proposal.html) the original proposal for incubation, September 2003.
+* [Architecting the Modern LDAP Renaissance: The Apache Directory Vision](../../vision.html), Paper for 1st International Conference on LDAP, September 2007.
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/1.2-some-background.md b/source/apacheds/basic-ug/1.2-some-background.md
new file mode 100644
index 0000000..7eb76eb
--- /dev/null
+++ b/source/apacheds/basic-ug/1.2-some-background.md
@@ -0,0 +1,100 @@
+---
+title: 1.2 - Some Background. Directories, directory services and LDAP
+navPrev: 1.1-what-apacheds-is.html
+navPrevText: 1.1 - What Apache Directory Server is
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 1.3-installing-and-starting.html
+navNextText: 1.3 - Installing and starting the server
+---
+
+# 1.2 - Some Background. Directories, directory services and LDAP
+
+This section provides a brief overview about directories, directory services and LDAP. Furthermore you find links to different resources (books, online resources, ...), which may act as introduction to the topic. If you are already an LDAP expert, you'll probably skip this section.
+
+{{% toc %}}
+
+## Directories and directory services
+
+Generally speaking, a directory is a collection or list of data. Real world examples are telephone books (public or within organizations), church/land registers and listings of works (e.g. the Koechel-index, which lists all compositions of Mozart). All these examples have the purpose to preserve information and to make it available on demand to whom it may concern.
+
+Within information technology the term *directory* is used for a special kind of data storage. It allows the structured storage and efficient retrieval of objects which are often derived from the real world (e.g. persons, IT equipment). Characteristic:
+* all data is stored in so called *entries*
+* the set of entries within a directory forms a tree (hierarchical database)
+
+A *directory service* is a solution which offers users access to the information stored in the directory. A directory assistance (call center agent) is a good real world example for such a service. Within information technologies, such services are normally provided by software components. Directory services provide access to the content of a directory via a well-defined interface. If a network is used, an appropriate protocol has to be defined. LDAP (see below) is such a protocol.
+
+The real world examples mentioned above may be stored in such a directory, although other types of storage systems can be more appropriate (this depends on circumstance/requirements). At first sight directories compete thereby as data storage with the established relational data bases. However in the most large enterprises and organizations both directory services and relational databases are actually used. Read how Vikas Mahajan describes directories and databases as complementary, not competitive, solutions in his excellent article ["Should I Use a Directory, a Database, or Both?"](http://support.novell.com/techcenter/articles/ana20011101.html).
+
+## LDAP -- the Lightweight Directory Access Protocol
+
+### What is it? Some history.
+
+The comprehensive standard *X.500*, finalized in 1988, builds the foundation for many of today's directory solutions. Within this standard, the client accesses the server via the Directory Access Protocol (*DAP*), which is OSI protocol stack based. With the Internet boom in the nineties, the accessibility of directories via TCP/IP became more and more important. Hence a TCP/IP-based access method, which in functionality was a subset of DAP, was standardized in 1993: the *Lightweight Directory Access Protocol (LDAP)*. First LDAP implementations were gateway solutions, they mediated between LDAP clients and X.500 servers. In 1995 the University of Michigan presented the first native LDAP server; in the meantime the work is continued by the [OpenLDAP](http://www.openldap.org/) project. 1996 Netscape followed with the first commercial LDAP server (Netscape Directory Server, foundation of several later LDAP servers). Other examples (among many others) include [Microsoft Active Directory](http://www.microsoft.com/ad/) and [Novell eDirectory](http://www.novell.com/products/edirectory/). The figure below shows the development of directory protocols from X.500/DAP to LDAP.
+
+![From X500 to LDAP](images/fromX500toLDAP.png)
+
+### Information model primer
+
+Within the information model of LDAP, data is stored in entries, which build up a hierarchical, tree like structure. Each entry has a unique name (*DN*, *Distinguished Name*), which depicts its position within the tree. An entry consists of key/value pairs, the *attributes*. Some attributes may occur more than once within an entry (single or multi valued, e.g. a person can have more than one telephone number). So called *object classes* define, which attributes an entry may have, and which of them are required. The classes build up a hierarchy with *top* as root; there is a parallelism to the object oriented world. top forces only the attribute objectclass, which assigns an entry its object classes. A *schema* consists object classes and attribute types, and therefore defines, what kind of entries can be stored within the directory. Directory servers ship a schema out-of-the-box, often with elements standardized by RFCs. In addition, most directory solutions allow you to define custom object classes and attributes. But in practice, the pre-defined elements are used. Sometimes they get extended according to special requirements.
+
+### Common applications of LDAP based directories
+
+LDAP operations include entry creation, modification, deletion and search. As a general rule, LDAP directories are optimized for read and search operations, at the cost of write performance. Data, which will be modified often, therefore better suits in a relational database, which offers better support for transactions and referential integrity as well. Directories are rather used if comparatively stable data has to be provided centrally.
+Common examples are network resources (printers, services) and user data (including credentials and rights for the resources). As a notable feature, many directory products offer replicas, which permit better access times and higher availability especially in geographically dispersed organizations. Not for nothing, the most common LDAP application is the enterprise phone book. That even Microsoft Outlook may be an LDAP client in this case - most average users probably don't know.
+
+
+### Examples of software components which support LDAP
+
+![LDAP tools](images/ldap-tools.png)
+
+Very different types of software products may act as LDAP clients, consuming data for authentication, authorization or data presentation etc.
+
+* E-Mail clients (e.g. Mozilla Thunderbird)
+* LDAP tools (e.g. Apache Directory Studio)
+* Web servers (e.g. Apache Tomcat, Apache HTTP Server)
+* Mail servers (e.g. Apache James)
+* ...
+
+Configuration details for several of these programs in conjunction with ApacheDS are described in later sections.
+
+## LDAP resources
+
+### Books
+
+There are several good LDAP books available. Here are two examples which provide sample chapters on their homepages.
+
+#### Understanding and Deploying LDAP Directory Services
+
+![cover](images/cover_howes_100.gif)
+
+Understanding and Deploying LDAP Directory Services (2nd Edition) <br/>
+by Timothy A. Howes, Mark C. Smith, Gordon S. Good, Tim Howes <br/>
+Addison-Wesley Professional, 2nd Edition 2003 <br/>
+ISBN: 0-672323-16-8 <br/>
+
+[Book's Homepage (Howes)](http://awprofessional.com/title/0672323168)
+
+#### LDAP fuer Java-Entwickler
+
+![cover](images/cover_zoerner_100.gif)
+
+LDAP fuer Java-Entwickler -- Einstieg und Integration. ![DE](images/de.png) <br/>
+von Stefan Zoerner <br/>
+Software und Support Verlag, 3. aktualisierte Auflage 2007 <br/>
+ISBN: 978-3-939084-07-5 <br/>
+
+[Webseite zum Buch (Zoerner)](http://www.entwickler-press.de/buecher/ldap/)
+
+### Articles, forums, blogs and other online resources
+
+#### Blogs
+
+* [cn=Directory Manager - All about Directory Server](http://blogs.sun.com/roller/page/DirectoryManager), Sun Blog
+
+#### Articles and other online resources
+
+* [Understanding LDAP - Design and Implementation](http://www.redbooks.ibm.com/abstracts/SG244986.html?Open), IBM RedBook, July 2006
+* [Demystifying LDAP](http://www.oreillynet.com/pub/a/sysadmin/2006/07/27/demystifying-ldap.html) by Brian K. Jones, O'Reilly Network
+* [LDAP verstehen mit linx](http://www.mitlinx.de/ldap/), by Petra Haberer ![DE](images/de.png)
+
diff --git a/source/apacheds/basic-ug/1.3-installing-and-starting.md b/source/apacheds/basic-ug/1.3-installing-and-starting.md
new file mode 100644
index 0000000..fe853e4
--- /dev/null
+++ b/source/apacheds/basic-ug/1.3-installing-and-starting.md
@@ -0,0 +1,110 @@
+---
+title: 1.3 - Installing and starting the server
+navPrev: 1.2-some-background.html
+navPrevText: 1.2 - Some Background. Directories, directory services and LDAP
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 1.4-basic-configuration-tasks.html
+navNextText: 1.4 - Basic configuration tasks
+---
+
+# 1.3 - Installing and starting the server
+
+This section describes how ApacheDS can be installed and started on different platforms.
+
+{{% toc %}}
+
+## Prerequisites
+
+* **Java 7.0**. We recommend using [Oracle's JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html).
+
+You can check your java installation with:
+
+ java -version
+
+this should response something like:
+
+ java version "1.7.0_45"
+ Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
+ Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
+
+* **384 MB RAM** for the JVM. That's the default setting, how to change that is described [here|1.4. Basic configuration tasks#MemoryAllocation]
+
+
+## Download a server installer
+
+We provide native installers for several platforms:
+
+* Windows (exe)
+* Mac OS X (dmg)
+* Debian package (deb)
+* RPM package (rpm)
+* Linux Binary (bin)
+
+Additional we provide an zip and tar.gz archive suitable for any platform.
+
+You can download them from [here](https://directory.apache.org/apacheds/downloads.html).
+
+An option for people familiar with tools like Subversion and Maven is to built the server from the sources on their own. This is described [here](../advanced-ug/0.2-building-trunks.html).
+
+
+# Installation on Windows
+
+Installing can be easily done using the Windows installer. Its interface and functionality is similar to other wizard based installers.
+
+<CENTER>
+![Windows Installer](images/Windows_Installer.png)
+</CENTER>
+
+To install the ApacheDS as Windows service you need *Administrator* privileges.
+
+### Starting and stopping the server
+
+The server can be started and stopped with Windows Services manager (*Control Panel > Administrative Tools > Services*). You must be admin to do this.
+
+From there, you can easily start, stop and restart Apache DS.
+
+## Installation on Mac OS X
+
+To install Apache DS on Mac OS X, simply open the downloaded DMG file and then the "Apache Directory Server Installer.pkg" in it.
+
+<CENTER>
+![MacOSX installer](images/MacOSX_Installer.png)
+</CENTER>
+
+From there, you will be guided to install Apache DS on your system.
+
+### Starting and stopping the server
+
+On Mac OS X, Apache DS is installed as a [launchd](http://developer.apple.com/macosx/launchd.html) service and is loaded at startup time (and upon successful installation).
+
+You can stop the server by unloading the launchd service with the following command line:
+
+ sudo launchctl unload /Library/LaunchDaemons/org.apache.directory.server.plist
+
+You can start the server by loading the launchd service with the following command line:
+
+ sudo launchctl load /Library/LaunchDaemons/org.apache.directory.server.plist
+
+If you want to disable the automatic startup of the server, just modify the plist file :
+
+ <key>Disabled</key>
+ <false/>
+
+should be replaced by
+
+ <key>Disabled</key>
+ <true/>
+
+Once the server has been installed, you can start it with :
+
+ sudo launchctl start org.apache.directory.server
+
+and stop it with :
+
+ sudo launchctl stop org.apache.directory.server
+
+
+## Installation on Linux
+
+The installation for different installers is described on the [Apache Directory Server Downloads](https://directory.apache.org/apacheds/downloads.html) page.
diff --git a/source/apacheds/basic-ug/1.4-basic-configuration-tasks.md b/source/apacheds/basic-ug/1.4-basic-configuration-tasks.md
new file mode 100644
index 0000000..2db0ffa
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4-basic-configuration-tasks.md
@@ -0,0 +1,21 @@
+---
+title: 1.4 - Basic configuration tasks
+navPrev: 1.3-installing-and-starting.html
+navPrevText: 1.3 - Installing and starting the server
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 1.4.1-changing-server-port.html
+navNextText: 1.4.1 - Changing the server port for LDAP
+---
+
+# 1.4 - Basic configuration tasks
+In this chapter, we will explain how to configure some basic parameters in the server you just installed. We won't expose all the options in this _Basic User Guide_, you can check in the _Advanced User Guide_ for more options if needed.
+
+## Table of content
+
+* [1.4.1 - Changing the server port for LDAP](1.4.1-changing-server-port.html)
+* [1.4.2 - Changing the admin password](1.4.2-changing-admin-password.html)
+* [1.4.3 - Adding your own partition](1.4.3-adding-partition.html)
+* [1.4.4 - Configure logging](1.4.4-configure-logging.html)
+* [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)
+
diff --git a/source/apacheds/basic-ug/1.4.1-changing-server-port.md b/source/apacheds/basic-ug/1.4.1-changing-server-port.md
new file mode 100644
index 0000000..7ef56f0
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4.1-changing-server-port.md
@@ -0,0 +1,119 @@
+---
+title: 1.4.1 - Changing the server port for LDAP
+navPrev: 1.4-basic-configuration-tasks.html
+navPrevText: 1.4 - Basic configuration tasks
+navUp: 1.4-basic-configuration-tasks.html
+navUpText: 1.4 - Basic configuration tasks
+navNext: 1.4.2-changing-admin-password.html
+navNextText: 1.4.2 - Changing the admin password
+---
+
+# 1.4.1 - Changing the server port for LDAP
+
+This section describes how to change to port for the LDAP protocol. There are two ways to do that : either you use the configuration plugin available in **Apache Directory Studio**, or you update the LDIF partition that contains the configuration.
+
+{{% toc %}}
+
+## The task and how to accomplish it
+
+By default the LDAP server listens on port 10389 (unencrypted or StartTLS) and 10636 (SSL). It is quite common to run LDAP on 389, which is the well-known port for this protocol, but that requires the server to be started with a root user (or with sudo). Of course other options are imaginable as well. Changing the LDAP port is a good example for adjusting the existing Spring configuration as introduced in the last section.
+
+<DIV class="note" markdown="1">
+Due to traditional Unix security restrictions, ports less than 1024 were "trusted". Thus on a Unix-System, a non-root process must listen on a port greater than 1023.
+</DIV>
+
+
+Basically, there are two cases :
+* The server is not started
+* The server is started
+
+We will see how to change the port in those two cases.
+
+### Using Apache Directory Studio
+
+#### The server is started
+
+The best solution is to connect on the server using Studio, and to open it's configuration :
+
+<CENTER>
+![Studio port configuration](images/studio-port-config1.png)
+</CENTER>
+
+When you select this menu, you will get the main configuration screen, containing the port for LDAP and LDAPS :
+
+<CENTER>
+![Studio port configuration](images/studio-port-config2.png)
+</CENTER>
+
+
+Now, change the values of _port_ to your needs, then save the configuration. You have to restart the server afterwards in order to take this change into effect.
+
+#### The server is not started
+
+You can start it and update the configuration, of course. But if you want to configure the server when it's stopped, you will have to load the configuration file, which is on _.../instances/default/conf/config.ldif_, when the server has been installed using the default setting.
+
+Opening this file will open the exact same window :
+
+<CENTER>
+![Studio port configuration](images/studio-port-config2.png)
+</CENTER>
+
+You can update the _ports_ and save the file.
+
+<DIV class="warning" markdown="1">
+ Note that you will requite write access on this file !
+</DIV>
+
+### Modifying the configuration LDIF partition
+
+All the **ApacheDS** configuration is stored as a LDIF file, and can be modified either using a text editor (although we don't consider this as a safe practice) or using a Modify request on a running server.
+
+<DIV class="info" markdown="1">
+ Modifying the configuration on a running server will **not** change the listening port of the running server. You will have to relaunch the server in order to get this new configuration to be available.
+</DIV>
+
+
+The configuration is stored as a set of LDAP entries, so you can update one of them. In order to modify the entry containing the ports, you have first to find it, and second to send a valid modify request.
+
+All the **ApacheDS** configuration is stored under the _ou=config_ partition. The ports are stored in some entries under _DN: ldap,ou=transports,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config_ (obviously, dependning on your installation, this DN might change : the _ads-directoryServiceId_ may have a different name, so is the _ads-serverId_). In any case, the _ou=transports_ branch contains two entries :
+
+for LDAP :
+
+ dn: ads-transportid=ldap,ou=transports,ads-serverId=ldapServer,ou=servers,ad
+ s-directoryServiceId=default,ou=config
+ ads-systemport: 10389
+ ads-enabled: TRUE
+ ads-transportnbthreads: 8
+ ads-transportaddress: 0.0.0.0
+ ads-transportid: ldap
+ objectclass: ads-transport
+ objectclass: ads-tcpTransport
+ objectclass: ads-base
+ objectclass: top
+
+and for LDAPS :
+
+ dn: ads-transportid=ldaps,ou=transports,ads-serverId=ldapServer,ou=servers,a
+ ds-directoryServiceId=default,ou=config
+ ads-systemport: 10636
+ ads-transportenablessl: TRUE
+ ads-enabled: TRUE
+ ads-transportaddress: 0.0.0.0
+ ads-transportid: ldaps
+ objectclass: ads-transport
+ objectclass: ads-tcpTransport
+ objectclass: ads-base
+ objectclass: top
+
+You just have to send a ModifyRequest using such a LDIF :
+
+ dn: ads-transportid=ldaps,ou=transports,ads-serverId=ldapServer,ou=servers,ads
+ -directoryServiceId=default,ou=config
+ changetype: modify
+ replace: ads-systemport
+ ads-systemport: 10637
+ -
+
+(here, we have modified the LDAPS Port from 10636 to 10637)
+
+Those modification can be done directly on the _config.ldif_ file, but you won't have any syntax check if you do so.
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/1.4.2-changing-admin-password.md b/source/apacheds/basic-ug/1.4.2-changing-admin-password.md
new file mode 100644
index 0000000..5fa6f16
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4.2-changing-admin-password.md
@@ -0,0 +1,51 @@
+---
+title: 1.4.2 - Changing the admin password
+navPrev: 1.4.1-changing-server-port.html
+navPrevText: 1.4.1 - Changing the server port for LDAP
+navUp: 1.4-basic-configuration-tasks.html
+navUpText: 1.4 - Basic configuration tasks
+navNext: 1.4.3-adding-partition.html
+navNextText: 1.4.3 - Adding your own partition
+---
+
+# 1.4.2 - Changing the admin password
+
+This section describes the steps necessary to change the administrator password. Follow the instructions provided here step by step.
+
+{{% toc %}}
+
+## Step one: Changing the value in the system partition
+
+While the server is up and running, change the value of the _userPassword_ attribute of the admin (uid=admin,ou=system) via LDAP. There are several ways to accomplish this task. In the following, we use the Eclipse based Apache Directory Studio.
+
+A new LDAP connection with this tool is created via "New Connection ..." from the _Connections_ view. Enter your connection data in the first step ...
+
+![New LDAP connection](images/NewLDAPConnection1.png)
+
+... and in the next step, enter the admin DN _uid=admin,ou=system_ and the current password (default is "secret"). Saving the password is not necessary, we will change it anyway.
+
+![New LDAP connection](images/NewLDAPConnection2.png)
+
+Click _Finish_ to establish the connection.
+
+Afterwards, modify the value of the _userPassword_ attribute of the entry _uid=admin,ou=system_. Navigate to the entry in the DIT (_LDAP Browser_ view), and double click the attribute in the _Entry Editor_ view:
+
+![Entry Editor](images/entryEditor.png)
+
+The Password Editor dialog shows up; enter the new password. You can optionally select a hash algorithm like _SHA_. In this case, the password will be stored one-way encrypted in the attribute value -- not a bad idea.
+
+![Password Editor](images/passwordEditor.png)
+
+Pressing _OK_ stores the new value. Close the connection and shutdown the server.
+
+## Step two: Verification
+
+Verify that you can login as admin with the new password. With Apache Directory Studio, you can change the properties of the existing connection profile via a right click in the _Connections_ view and a selection of the _Properties_ menu item. The following dialog appears:
+
+![Connection Properties](images/connectionProperties.png)
+
+Enter the new password and press _OK_. Establishing a connection should now work.
+
+## Resources
+
+* [Apache Directory Studio](https://directory.apache.org/studio/): The tool used in steps 1 and 2
diff --git a/source/apacheds/basic-ug/1.4.3-adding-partition.md b/source/apacheds/basic-ug/1.4.3-adding-partition.md
new file mode 100644
index 0000000..7666da9
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4.3-adding-partition.md
@@ -0,0 +1,167 @@
+---
+title: 1.4.3 - Adding your own partition
+navPrev: 1.4.2-changing-admin-password.html
+navPrevText: 1.4.2 - Changing the admin password
+navUp: 1.4-basic-configuration-tasks.html
+navUpText: 1.4 - Basic configuration tasks
+navNext: 1.4.4-configure-logging.html
+navNextText: 1.4.4 - Configure logging
+---
+
+# 1.4.3 - Adding your own partition
+
+This section describes how to add your own data partition.
+
+{{% toc %}}
+
+## What are partitions?
+
+In ApacheDS entries are stored in partitions. Each partition contains a complete entry tree, also referred to as a DIT. Multiple partitions may exist and the entry trees they contain are disconnected from each other, meaning that changes to entries in partition _A_ would never affect entries in partition _B_. The entries in a particular partition are stored below some naming context called the partition suffix.
+
+The default implementation of partitions is based on [JDBM](http://jdbm.sourceforge.net/) B+Trees (but it's possible to add custom partition implementations). The ApacheDS default configuration contains a a data partition with the suffix "dc=example,dc=com". The image below shows the suffixes of a freshly installed ApacheDS within Apache Directory Studio.
+
+![Partition in studio after installation](images/partitions-in-studio-after-installation.png)
+
+The schema subsystem and ApacheDS itself store their information in special partitions, "ou=schema", "ou=config" and "ou=system" respectively.
+
+## Minimal partition definition
+
+For the examples in the following sections, we want to add a partition with the suffix "o=sevenSeas". This requires editing of the configuration, and injecting a first entry, associated with the root of this partition (here, "o=sevenseas"). This can be done using _Apache Directory Studio_. Open the server configuration :
+
+![Studio Apacheds Configuration](images/studio-apacheds-configuration1.png)
+
+and select the _Partitions_ tab :
+
+![Studio Apacheds Partitions Configuration](images/studio-partitions-configuration.png)
+
+Add another jdbmPartition element for the sevenSeas partition, just below the _example_ partition:
+
+![SevenSeas Partition Creation](images/sevenseas-partition-creation.png)
+
+As you can see, we have modified the _ID_ and the _Suffix_, all the other parameters remaining to their default values.
+
+Save the configuration now, and restart the server.
+
+The server has a new suffix now, but no context entry has been created for it. If you connect with an LDAP Browser (Apache Directory Studio for instance), the partition is only visible in the Root DSE. Below the Entry Editor of Directory Studio for the Root DSE after connecting to an ApacheDS instance configured like above.
+
+![RootDSE](images/sevenseas-naming-context.png)
+
+Before using the partition (e.g. adding entries), you have to add a context entry. If you plan to load LDIF data to your partition anyway, simply provide the context entry (the "root" of your partition) as a first data set. In our example it might look like this:
+
+ dn: o=sevenSeas
+ o: sevenSeas
+ objectClass: top
+ objectClass: organization
+ description: The context entry for suffix o=sevenSeas
+
+It is also possible to import a file to ApacheDS which only contains such an entry, of cause. Here is an example on how to procede for the seven seas :
+
+In the LDAP Browser of Directory Studio, right click on the DIT entry and select "Import \-> LDIF Import...". A file selections dialog appears. Browse to the LDIF file and click Finish. The entry (or entries, if you provide more of them) will be added to to partition.
+
+The following image depicts the partitions after reconnecting with Apache Directory Studio (_LDAP Browser_ view).
+
+![Partition in Studio after addition](images/partitions-in-studio-after-addition.png)
+
+## Adding a partition programmatically
+
+The same o=sevenseas partition can be created through the application code using the Partition and DirectoryService API
+
+Here is the sample code to create a new partition o=sevenseas and its context entry programmatically
+
+```java
+// Get the SchemaManager, we need it for this addition
+SchemaManager schemaManager = directoryService.getSchemaManager();
+
+// Create the partition
+JdbmPartition sevenseasPartition = new JdbmPartition( schemaManager );
+sevenseasPartition.setId("sevenseas");
+Dn suffixDn = new Dn( schemaManager, "o=sevenseas" );
+sevenseasPartition.setSuffix( suffixDn );
+sevenseasPartition.setCacheSize(1000);
+sevenseasPartition.init(directoryService);
+sevenseasPartition.setPartitionPath( <a path on your disk> );
+
+// Create some indices (optional)
+sevenseasPartition.addindex( new JdbmIndex( "objectClass", false ) );
+sevenseasPartition.addindex( new JdbmIndex( "o", false ) );
+
+// Initialize the partition
+sevenseasPartition.initialize();
+
+// create the context entry
+Entry contextEntry = new DefaultEntry( schemaManager, "o=sevenseas",
+ "objectClass: top",
+ "objectClass: organization",
+ "o: sevenseas" );
+
+// add the context entry
+sevenseasPartition.add( new AddOperationContext( null, entry ) );
+
+// We are done !
+```
+
+## More configuration options for a JDBM partition
+
+Here is a list of the used attributes, their default values and meaning :
+
+| Property | Description | Default Value | Required |
+|:-:|:-:|:-:|:-:|
+| ads-partitionId | Uniquely identifies the partition | N/A | yes |
+| ads-partitionSuffix | A DN ("o=sevenseas"), for instance | N/A | yes |
+| ads-contextEntry | The context entry | Will be automatically deduced if no value is provided | no |
+| ads-optimizerEnabled | Tells the server to turn on the optimizer | true | no |
+| ads-partitionCacheSize | The cache size (only for JDBM partitions) | -1 (no cache) | no |
+| ads-partitionSyncOnWrite | Syncs disks on every write operation | true | no |
+
+
+## Adding a partition manually
+
+When migrating from an earlier release, or perhaps a different LDAP Directory product, you might prefer to manually add your own partition with your specific directory root DN. There are two techniques available, and the most appropriate will depend on whether you have already allowed the apacheds server to start.
+
+When the server starts for the first time after installation, _config.ldif_ is renamed to *config.ldif_migrated*. After that time, this priming ldif file is never referred to again, so any changes you make will be ignored. [The reason for this change is discussed in a JIRA](https://issues.apache.org/jira/browse/DIRSERVER-2050).
+
+
+### Before starting the server
+
+Therefore, if you would like to have your (empty) partition created immediately following installation, you should prevent your server from starting during or after installation, i.e. when config.ldif has not yet been migrated.
+
+Next, edit _config.ldif_ to change all occurrences of "_example_" to suit the name of your own partition. Once the server has started and you run your first ldapsearch as the admin user, you will see that the server has created your own empty partition (instead of the example one).
+
+Note that the entry for the "_example_" partition does NOT have an _ads-contextEntry_ attribute. This "signature" attribute is created during the "migration" process (see below for details).
+
+Subsequent ldif changes to your new partition should work provided they use the default schema.
+
+
+### With ldapmodify to a running server
+
+This is task more tricky because the root of your new partition MUST have a valid _ads-contextEntry_ attribute and you must determine its value. The other attributes (see the definitions above) are quite straightforward, but this control value must be synthesised based on the specific attribute values of your own partition.
+
+Let us look at the ldif required to add the "example" partition:
+
+ dn: ads-partitionId=example,ou=partitions,ads-directoryServiceId=default,ou=config
+ objectclass: top
+ objectClass: ads-base
+ objectclass: ads-partition
+ objectclass: ads-jdbmPartition
+ ads-partitionSuffix: dc=example,dc=com
+ ads-contextentry:: ZG46IGRjPWV4YW1wbGUsZGM9Y29tCmRjOiBleGFtcGxlCm9iamVjdGNsYXNzOiBkb21haW4Kb2JqZWN0Y2xhc3M6IHRvcAoK
+ ads-jdbmpartitionoptimizerenabled: TRUE
+ ads-partitioncachesize: 10000
+ ads-partitionsynconwrite: TRUE
+ ads-partitionid: example
+ ads-enabled: TRUE
+
+The _ads-contextentry_ attribute is a binary value which has been base64 encoded. The algorithm has to be followed accurately to be successful. Consider our example partition and take these four lines:
+
+ dn: dc=example,dc=com
+ dc: example
+ objectclass: domain
+ objectclass: top
+
+Base64 these four lines as a single string (with \n newlines, but without the prefix spaces). The result should match the _ads-contextentry_ value shown above.
+
+However, you need to be careful because simply adding an extra space or newline will change the base64 value and make it unacceptable to the server. Also, any valid UTF-8 attribute values which are not in the base64 character set (such as accented characters) _MUST_ be base64-encoded strings, which effectively makes them double-encoded.
+e.g. _"dn: cn=lécharny,dc=com"_ needs to be specified as _"dn:: Y249bMOpY2hhcm55LGRjPWNvbQ=="_.
+
+You will probably want to create some associated index entries. You can use those of the "_example_" partition in _config.ldif-migrated_ for your templates (which do not require any special encoded attributes).
+
diff --git a/source/apacheds/basic-ug/1.4.4-configure-logging.md b/source/apacheds/basic-ug/1.4.4-configure-logging.md
new file mode 100644
index 0000000..ffa6f01
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4.4-configure-logging.md
@@ -0,0 +1,195 @@
+---
+title: 1.4.4 - Configure logging
+navPrev: 1.4.3-adding-partition.html
+navPrevText: 1.4.3 - Adding your own partition
+navUp: 1.4-basic-configuration-tasks.html
+navUpText: 1.4 - Basic configuration tasks
+navNext: 1.4.5-anonymous-access.html
+navNextText: 1.4.5 - Enable and disable anonymous access
+---
+
+# 1.4.4 - Configure logging
+
+In order to detect and analyze problems, adjusting the log level of a server can be a valuable tool. This section describes how to configure logging within a standalone ApacheDS.
+
+{{% toc %}}
+
+## ApacheDS and logging
+
+ApacheDS 2.0 uses [SLF4J](http://www.slf4j.org/) as its logging solution. This is a simple facade for various logging APIs. The default for ApacheDS 2.0 is [log4j](http://logging.apache.org/log4j/).
+
+## Default behavior after installation
+
+By default, ApacheDS writes log files in the directory _<APACHEDS_HOME>/var/log/_. Besides stdout, a [RollingFileAppender](http://logging.apache.org/log4j/docs/api/org/apache/log4j/RollingFileAppender.html) is used to collect warnings and errors. It backups the log files when they reach a certain size.
+
+Here is what the default configuration file _log4j.properties_, which is located in _<APACHEDS_HOME>/conf/_, looks like.
+The name of the _RollingFileAppender_ is "R":
+
+ log4j.rootCategory=WARN, stdout, R
+
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
+ log4j.appender.R.File=apacheds-rolling.log
+
+ log4j.appender.R.MaxFileSize=1024KB
+ # Keep some backup files
+ log4j.appender.R.MaxBackupIndex=5
+
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+
+ # with these we'll not get inundated when switching to DEBUG
+ log4j.logger.org.apache.directory.shared.ldap.name=WARN
+ log4j.logger.org.springframework=WARN
+ log4j.logger.org.apache.directory.shared.codec=WARN
+ log4j.logger.org.apache.directory.shared.asn1=WARN
+
+In this file "R" is configured like this:
+
+| Property name | Value in file above | Meaning |
+|:-:|:-:|---|
+| File | apacheds-rolling.log | Path to the output log file, in our case relative to _var/log_ |
+| MaxFileSize | 1024KB | Maximum size that the output file is allowed to reach before being rolled over to backup files |
+| MaxBackupIndex | 5 | Number of backup files kept |
+| layout.ConversionPattern | [%d{HH:mm:ss}] %p [%c] - %m%n | Format string for logging events |
+
+If the default logging does not meet your requirements, you can easily adjust the configuration to your needs.
+
+## Adjusting logging to your needs
+
+### Log file location (where the log files are placed)
+
+By default the log files are placed at _<APACHEDS_HOME>/var/log/_, but that can be changed.
+
+#### Linux/MacOS/Solaris
+On this systems the location of the log files is configured via an entry in */bin/server.init*. Look for the following lines and change it to your preferences:
+
+ $DAEMON_HOME/apacheds \
+ ...
+ -outfile $SERVER_HOME/var/log/apacheds-stdout.log \
+ -errfile $SERVER_HOME/var/log/apacheds-stderr.log \
+ ...
+ $APACHEDS_HOME start
+
+#### Windows
+
+On Windows you can use the configuration wizard for the service as shown in the screenshot above. To adjust the log path you have to adjust the values of *Redirect Stdout* and *Redirect Stderror*
+
+### Log level (how detailed the logs are)
+
+The following log levels from log4j are used for messages within ApacheDS:
+
+| Level | Description from log4j documentation |
+|:-:|---|
+| DEBUG | Designates fine-grained informational events that are most useful to debug an application |
+| INFO | Designates informational messages that highlight the progress of the application at coarse-grained level |
+| WARN | Designates potentially harmful situations |
+| ERROR | Designates error events that might still allow the application to continue running |
+| FATAL | Designates very severe error events that will presumably lead the application to abort |
+
+The default (global) log level in the configuration is _WARN_. All messages of level WARN and more severe (ERROR, FATAL) are written to the rolling log file. The easiest way to get finer log messages is to change it like this
+
+ log4j.rootCategory=DEBUG, stdout, R
+ ...
+
+These detailed log messages took much file space and time and therefore should only be enabled globally in order to analyze problems.
+
+It is possible to configure the logging more fine grained by using categories. Within the default configuration there are some examples:
+
+ ...
+ # with these we'll not get inundated when switching to DEBUG
+ log4j.logger.org.apache.directory.shared.ldap.name=WARN
+ log4j.logger.org.springframework=WARN
+ log4j.logger.org.apache.directory.shared.codec=WARN
+ log4j.logger.org.apache.directory.shared.asn1=WARN
+
+If the global level is switched to DEBUG, these definitions override the setting with WARN for certain areas and therefore keep the file a little bit smaller. Learn more about the concept of categories in the [Short introduction to log4j](http://logging.apache.org/log4j/docs/manual.html).
+
+### Format for log messages
+
+The format of each line within a log file is controlled by a pattern. For the _RollingFileAppender_ in the default configuration it looks like this
+
+ ...
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
+ log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+ ...
+
+Some examples lines within the log file, formatted with the pattern "\[%d\{HH:mm:ss\}\] %p \[%c\] - %m%n" are:
+
+ ...
+ [12:29:03] WARN [org.apache.directory.server.core.DefaultDirectoryService]
+ - You didn't change the admin password of directory service instance 'default'.
+ Please update the admin password as soon as possible to prevent a possible security breach.
+ ...
+ [12:29:05] INFO [org.apache.directory.server.jndi.ServerContextFactory]
+ - Successful bind of an LDAP Service (636) is complete.
+ [12:29:05] INFO [org.apache.directory.server.Service] - server: started in 6750 milliseconds
+ ...
+
+The pattern uses the following conversion characters:
+
+| Character | Output |
+|:-:|---|
+| %d | Date of the logging event in the given format. like "12:29:05" for %d{HH:mm:ss} |
+| %p | Priority (level) of the logging event, like "INFO" or "WARN" |
+| %c | Category of the logging event, like "org.apache.directory.server.Service" |
+| %m | Application supplied message associated with the logging event |
+| %n | Platform dependent line separator |
+
+The [javadoc of log4j](http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html) contains a table with all valid %-characters and their meaning.
+
+Simple adjust the pattern in the _log4j.properties file_ to get the log format of your choice, for instance
+
+ log4j.appender.R.layout.ConversionPattern=[%d{dd.MM.yyyy HH:mm:ss}] %p: %c{1}.%M() - %m%n
+
+leads to messages of this form:
+
+ ...
+ [29.12.2006 13:50:44] INFO: ServerContextFactory.startLDAP0()
+ - Successful bind of an LDAP Service (636) is complete.
+ [29.12.2006 13:50:44] INFO: Service.init() - server: started in 3016 milliseconds
+ ...
+
+<DIV class="warning" markdown="1">
+** Warning**
+
+"Generating caller location information like with %M or %L is extremely slow. Its use should be avoided unless execution speed is not an issue." (from the log4j documentation)
+</DIV>
+
+### Advanced log4j configuration
+
+You can take advantage of other features of log4j as well, such as other appenders like the daily rolling file appender. And you can configure logging to make it easier for you to view the messages with tools like Log Factor 5 or [Chainsaw](http://logging.apache.org/log4j/docs/chainsaw.html).
+
+Learn more about log4j and related tools at its [homepage](http://logging.apache.org/log4j/docs/index.html).
+
+## Example configurations
+
+The following example could be used to log all incoming search, add, delete, modify and moddn requests:
+
+ log4j.logger.org.apache.directory.server.ldap.handlers.SearchHandler=DEBUG
+ log4j.logger.org.apache.directory.server.ldap.handlers.AddHandler=DEBUG
+ log4j.logger.org.apache.directory.server.ldap.handlers.DeleteHandler=DEBUG
+ log4j.logger.org.apache.directory.server.ldap.handlers.ModifyHandler=DEBUG
+ log4j.logger.org.apache.directory.server.ldap.handlers.ModifyDnHandler=DEBUG
+
+## Log settings of the Windows service
+
+To run as a Windows service, the ApacheDS Java classes must be executed within a Windows native binary. The ApacheDS project relies on the Tanuki Software Java Service Wrapper's wrapper.exe to manage the ApacheDS Java Virtual Machine (JVM) process. While the ApacheDS Java code's logging is log4j-based, the wrapper.exe Windows service has its own logging configuration. For example, the wrapper.conf log settings govern the destination of the JVM's stdout and stderr logging and the logging of the communication between the wrapper.exe Windows service container and the JVM it hosts.
+
+An ApacheDS installation's wrapper.exe log settings are stored in:
+
+ C:\Program Files (x86)\ApacheDS\conf\wrapper.conf.
+
+The Tanuki Software Java Service Wrapper web site documents all configuration settings for wrapper.exe including logging:
+
+ https://wrapper.tanukisoftware.com/doc/english/introduction.html#logging
+
+## Resources
+
+* [Short introduction to log4j](http://logging.apache.org/log4j/docs/manual.html)
+
+
diff --git a/source/apacheds/basic-ug/1.4.5-anonymous-access.md b/source/apacheds/basic-ug/1.4.5-anonymous-access.md
new file mode 100644
index 0000000..4ed5269
--- /dev/null
+++ b/source/apacheds/basic-ug/1.4.5-anonymous-access.md
@@ -0,0 +1,23 @@
+---
+title: 1.4.5 - Enable and disable anonymous access
+navPrev: 1.4.4-configure-logging.html
+navPrevText: 1.4.4 - Configure logging
+navUp: 1.4-basic-configuration-tasks.html
+navUpText: 1.4 - Basic configuration tasks
+navNext: 1.5-sample-configuration.html
+navNextText: 1.5. - About the sample configurations and sample directory data
+---
+
+# 1.4.5 - Enable and disable anonymous access
+
+This section briefly describes how to enable and disable anonymous access.
+
+Anonymous access to the server is enabled by default. This includes read and write access!
+
+You can disable anonymous binds by changing the value for property _allow Anonymous Access_ in the server configuration screen :
+
+![Anonymous Access](images/anonymous-access.png)
+
+A restart of the server is necessary for this change to take effect. Afterwards, all clients have to provide their name (distinguished name) and password in order to bind to the directory service.
+
+Learn more about authentication option in the corresponding section of this guide [here](3.1-authentication-options.html).
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/1.5-sample-configuration.md b/source/apacheds/basic-ug/1.5-sample-configuration.md
new file mode 100644
index 0000000..fbc22a1
--- /dev/null
+++ b/source/apacheds/basic-ug/1.5-sample-configuration.md
@@ -0,0 +1,75 @@
+---
+title: 1.5. - About the sample configurations and sample directory data
+navPrev: 1.4.5-anonymous-access.html
+navPrevText: 1.4.5 - Enable and disable anonymous access
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 1.6-backup-restore.html
+navNextText: 1.6. - Backup/Restore
+---
+
+# 1.5. - About the sample configurations and sample directory data
+
+This section describes basic parameters used throughout the examples in this guide. It also introduces the sample directory "Sailors of the seven seas", and other requisites you need.
+
+{{% toc %}}
+
+## Basic server parameters
+
+In the following sections we assume that you will install, configure and run Apache Directory Server on a host with the following host name using the parameters given in the following table:
+
+| Parameter name | Parameter value |
+|---|---|
+| Hostname | zanzibar |
+| Port | 10389 |
+| Suffix ("Base DN") | o=sevenSeas |
+| Admin User DN | uid=admin,ou=system |
+| Admin User Password | secret |
+
+Before you start playing with the data make sure that you have added a partition with the suffix o=sevenSeas to the server. How to do this is described [here|1.4. Basic configuration tasks#Adding your own partition (suffix)]
+In order to increase recognition, all examples of the Basic User's Guide use these values. Adjust them to your needs (especially the password).
+
+## LDAP Clients
+
+LDAP is a client/server protocol. Hence you need an LDAP client to connect remotely to the Apache Directory Server (or at least the directory part of it, to be precise). There are different options here. Because the protocol is standardized, you may use every LDAP compliant client. This is comparable to HTTP, where you can use each web browser to communicate with virtually each web server, and totally different to relational databases. The latter have a (more or less) standardized query language (SQL), but vendors tend to use individual network access protocols. In practice, the LDAP situation is even better than HTTP, because there were no LDAP browser wars ...
+
+Many software components may act as an LDAP client. Normally they use LDAP libraries to connect. In the following sections you meet LDAP clients with GUI and LDAP command line tools. Some Java programming examples which takes advantage of JNDI are provided as well.
+
+In other sections you will learn how E-Mail clients like Mozilla Thunderbird and application servers like Apache Tomcat connect to Apache Directory server, either to use the data stored in the directory (e.g. mail addresses) or to perform authentication and authorization.
+
+Recapitulating the Basic User's Guide describes connecting to the server with tools provided by ApacheDS as well as third party products. In all cases the examples will use the connection data depicted above (_ldap://zanzibar:10389/o=sevenSeas_)
+
+## The sample data (Sailors of the seven seas)
+
+The file [Apache DS Tutorial](resources/apache-ds-tutorial.ldif) contains some sample data, which is used in the following sections. It is a text file in the so called *LDIF* format. LDIF stands for LDAP Data Interchange Format. It is widely adopted in the LDAP world and standardized in [RFC 2849](http://www.faqs.org/rfcs/rfc2849.html). Therefore you are able to import our sample data into other directory solutions as well, not only into Apache Directory Server.
+
+The sample directory tree contains entries for persons and groups. These are structured in sub trees (ou=people and ou=groups), see image below. The person entries describe sailors (historic and fictional), the group entries bundle them. An example for a group is the ship crew of HMS Bounty.
+
+![Sample Structure](images/sample-structure.gif)
+
+This snippet of the file represents a single entry, just to give you an impression of how LDIF files look like.
+
+ ...
+ # Entry for Fletcher Christian
+ #
+ dn: cn=Fletcher Christian,ou=people,o=sevenSeas
+ cn: Fletcher Christian
+ objectClass: top
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ sn: Christian
+ givenName: Fletcher
+ description: Lieutenant Fletcher Christian
+ manager: cn=William Bligh,ou=people,o=sevenSeas
+ ...
+
+There are different ways to import the data. Generally perform the following steps:
+
+* Download and install the server, described in [1.3. Installing and starting the server](1.3-installing-and-starting.html)
+* Configure a partition for the sample date, described in [1.4. Basic configuration tasks](1.4-basic-configuration-tasks.html)
+* Import the data, for instance using [Apache Directory Studio](https://directory.apache.org/studio/)
+
+h2. Resources
+
+* [RFC 2849 - The LDAP Data Interchange Format (LDIF)](http://www.faqs.org/rfcs/rfc2849.html) -- Technical Specification
diff --git a/source/apacheds/basic-ug/1.6-backup-restore.md b/source/apacheds/basic-ug/1.6-backup-restore.md
new file mode 100644
index 0000000..e2095c4
--- /dev/null
+++ b/source/apacheds/basic-ug/1.6-backup-restore.md
@@ -0,0 +1,26 @@
+---
+title: 1.6. - Backup/Restore
+navPrev: 1.5-sample-configuration.html
+navPrevText: 1.5 - About the sample configurations and sample directory data
+navUp: 1-how-to-begin.html
+navUpText: 1 - How to begin
+navNext: 2-handling-data.html
+navNextText: 2 - Handling data within your directory
+---
+
+# 1.6. - Backup/Restore
+
+You may want to save your data in a safe place, and be able to restore them.
+
+**ApacheDS** stores its data into a set of files, which are binary files. You can't simply copy those files in a backup directory, because there is no guarantee that their state is consistant when you do a copy (unless you have stopped the server while doing so) : one update operation might be running when you do a copy, and unless this update has been completed, the database is nt in a stable state.
+
+The current solution is to extract a LDIF from ApacheDS. You can do so either by using Apache Directory Studio, or through a script using the slapsearch utility, on the partition you are interested in. In any case, you must requests all the attributes, including the operational attributes (use the '+' special attributes for that purpose). Here is a sample command line that extract the data from the 'example' partition, on a default ApacheDS install :
+
+ $ ldapsearch -D "uid=admin,ou=system" -w secret -p 10389 -h localhost -b "dc=example,dc=com" -s sub "(ObjectClass=*)" * + > backup.ldif
+
+(note that you will have to change the password, port, server name and partition name to fits your setup)
+
+Restoring the database is a matter of starting frm a blank partition, and reimport the LDIF.
+
+Note : This is not really convenient. First, it requires that an external tool is present to run the extract. Second, reimporting a huge database will take a lot of time...
+We are working on a new system that guarantees that the file containing the data can be copied directly and restored as is.
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/2-handling-data.md b/source/apacheds/basic-ug/2-handling-data.md
new file mode 100644
index 0000000..deca7f2
--- /dev/null
+++ b/source/apacheds/basic-ug/2-handling-data.md
@@ -0,0 +1,27 @@
+---
+title: 2 - Handling of data within your directory
+navPrev: 1.6-backup-restore.html
+navPrevText: 1.6. - Backup/Restore
+navUp: ../basic-user-guide.html
+navUpText: Basic User Guide
+navNext: 2.1-data-modification.html
+navNextText: 2.1 - Data modification
+---
+
+# 2 - Handling data within your directory
+
+Now that your server is up and running, you can use it to add, modify, remove and search entries. You can also manage its schema, extending it to fit your needs.
+
+## Table of content
+
+* [2.1 - Data modification](2.1-data-modification.html)
+ * [2.1.1 - Adding Entries](2.1.1-adding-entries.html)
+ * [2.1.2 - Deleting Entries](2.1.2-deleting-entries.html)
+* [2.2 - Searching Data](2.2-searching-data.html)
+ * [2.2.1 - Simple search](2.2.1-simple-search.html)
+ * [2.2.2 - More search options](2.2.2-more-search-options.html)
+* [2.3 - Introducing the Schema ](2.3-introducing-schema.html)
+ * [2.3.1 - Adding Schema Elements](2.3.1-adding-schema-elements.html)
+ * [2.3.2 - Enabling Schema](2.3.2-enabling-schema.html)
+
+
diff --git a/source/apacheds/basic-ug/2.1-data-modification.md b/source/apacheds/basic-ug/2.1-data-modification.md
new file mode 100644
index 0000000..ce2cf8c
--- /dev/null
+++ b/source/apacheds/basic-ug/2.1-data-modification.md
@@ -0,0 +1,28 @@
+---
+title: 2.1 - Data modification
+navPrev: 2-handling-data.html
+navPrevText: 2 - Handling of data within your directory
+navUp: 2-handling-data.html
+navUpText: 2 - Handling of data within your directory
+navNext: 2.1.1-adding-entries.html
+navNextText: 2.1.1 - Adding Entries
+---
+
+# 2.1 - Data modification
+
+We will first expose the way you inject entries in _Apache Directory Server_. There are four type of operations you can use for that :
+* Addition
+* Deletion
+* Modification
+* Move and/or rename
+
+(The last operation allows a user to move, rename or move and rename entries).
+
+We will show how to add or delete entries in the following chapters, just to show you how it works with _Apache Directory Server_. There is nothing really different with any other servers.
+
+For further information about data modifications, you should either check the [Apache LDAP API documentation](../../api/index.html) documentation, or the [Apache Directory Studio documentation](../../studio/users-guide.html).
+
+## Table of content
+
+* [2.1.1 - Adding Entries](2.1.1-adding-entries.html)
+* [2.1.2 - Deleting Entries](2.1.2-deleting-entries.html)
diff --git a/source/apacheds/basic-ug/2.1.1-adding-entries.md b/source/apacheds/basic-ug/2.1.1-adding-entries.md
new file mode 100644
index 0000000..0fce796
--- /dev/null
+++ b/source/apacheds/basic-ug/2.1.1-adding-entries.md
@@ -0,0 +1,90 @@
+---
+title: 2.1.1 - Adding Entries
+navPrev: 2.1-data-modification.html
+navPrevText: 2.1 - Data modification
+navUp: 2.1-data-modification.html
+navUpText: 2.1 - Data modification
+navNext: 2.1.2-deleting-entries.html
+navNextText: 2.1.2 - Deleting Entries
+---
+
+# 2.1.1 - Adding Entries
+
+We will see how to add new entries into the server. Assuming that we have already created a partition (see [Adding a partition](1.4.3-adding-partition.html)), we will use this added partition as a root for the entry addition. We will also create the _ou=people_ entry.
+
+We try to add a new user to the "Seven Seas" partition. The data for the entry is inspired by "Peter Pan" and provided by this LDIF file ([Captain hook](resources/captain-hook-hierarchy.ldif)):
+
+ # File captain_hook.ldif
+ dn: ou=people,o=sevenSeas
+ objectclass: organizationalUnit
+ objectclass: top
+ ou: people
+
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ objectclass: inetOrgPerson
+ objectclass: organizationalPerson
+ objectclass: person
+ objectclass: top
+ cn: James Hook
+ description: A pirate captain and Peter Pan's nemesis
+ sn: Hook
+ mail: jhook@neverland
+ userpassword: peterPan
+
+The first entry creates the _ou=people_ container, which is necessary otherwise we can't inject the second entry.
+
+## Using the command line
+
+You have to use an authorized user to inject the entry, here, _cn=Horatio Nelson,ou=people,o=sevenSeas_ :
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -a -f captain_hook.ldif
+ adding new entry cn=James Hook,ou=people,o=sevenSeas
+ $
+
+Afterwards a new entry is successfully created within the "Seven Seas" partition by user "Horatio Nelson". The '+' sign in the attributes list of the _ldapsearch_ command causes ApacheDS to return the operational attributes, which demonstrate this.
+
+ $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
+ version: 1
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
+ creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
+ createTimestamp: 20061203140109Z
+
+## Using Apache Directory Studio
+
+Once connected on the server with studio, you should be able to inject new entries -assuming you have the sufficent priviledge - :
+
+![Import entry with studio](images/import-entry-studio.png)
+
+Then select the LDIF file containing the entry :
+
+![LDIF import](images/ldif-import-file-select.png)
+
+When imported, the _log_ windows should contain this message :
+
+ #!RESULT OK
+ #!CONNECTION ldap://localhost:10389
+ #!DATE 2012-10-30T14:36:21.294
+ dn: ou=people,o=sevenSeas
+ changetype: add
+ ou: people
+ objectclass: organizationalUnit
+ objectclass: top
+
+ #! RESULT OK
+ #! CONNECTION ldap://localhost:10389
+ #! DATE 2012-10-30T14:36:21.320
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ changetype: add
+ mail: jhook@neverland
+ userpassword: peterPan
+ description: A pirate captain and Peter Pan's nemesis
+ objectclass: inetOrgPerson
+ objectclass: organizationalPerson
+ objectclass: person
+ objectclass: top
+ sn: Hook
+ cn: James Hook
+
+This is it for this basic introduction on how to add entries in the server. There are other ways, like using and LDAP API, to do the same thing.
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/2.1.2-deleting-entries.md b/source/apacheds/basic-ug/2.1.2-deleting-entries.md
new file mode 100644
index 0000000..012883f
--- /dev/null
+++ b/source/apacheds/basic-ug/2.1.2-deleting-entries.md
@@ -0,0 +1,53 @@
+---
+title: 2.1.2 - Deleting Entries
+navPrev: 2.1.1-adding-entries.html
+navPrevText: 2.1.1 - Adding Entries
+navUp: 2.1-data-modification.html
+navUpText: 2.1 - Data modification
+navNext: 2.2-searching-data.html
+navNextText: 2.2 - Searching Data
+---
+
+# 2.1.2 - Deleting Entries
+
+Deleting entries is quite simple : you just need to provide their _DN_, and require for the deletion of the associated entry. Although there are a few conditions that must be fulfilled for this operatio to be successful :
+* The entry must exist;
+* It should not have any children;
+* The user requiring the deletion must have enough priviledge to do so
+
+Assuming those three conditions being fulfilled, you can proceed with the deletion. We will show how it works on the entry we added in the previous chapter.
+
+
+## Using the command line
+
+You have to use an authorized user to delete the entry, here, _cn=Horatio Nelson,ou=people,o=sevenSeas_ :
+
+With an LDIF file ([Captain hook delete](resources/captain-hook-delete.ldif)) with an appropriate change entry, this can easily be accomplished, if the bind user is allowed to do so. Here is the content of this _LDIF_ file :
+
+ # File captain_hook_delete.ldif
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ changetype: delete
+
+and here is the command line to use :
+
+ $ ldapdel -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -a -f captain_hook.ldif
+ deleting entry cn=James Hook,ou=people,o=sevenSeas
+ $
+
+
+## Using Apache Directory Studio
+
+With studio, just select the entry you want to delete, and select the "Delete" menu :
+
+![Delete entry with studio](images/delete-entry.png)
+
+When deleteed, the _log_ windows should contain this message :
+
+ #!RESULT OK
+ #!CONNECTION ldap://localhost:10389
+ #!DATE 2012-10-30T14:57:47.399
+ dn: cn=James Hook,ou=people,o=SevenSeans
+ changetype: delete
+
+Studio allows you to delete entries which have children, but it will first try to delete all the children recursively. There is no such things when you send an LDAP _DeleteRequest_.
\ No newline at end of file
diff --git a/source/apacheds/basic-ug/2.2-searching-data.md b/source/apacheds/basic-ug/2.2-searching-data.md
new file mode 100644
index 0000000..a28207b
--- /dev/null
+++ b/source/apacheds/basic-ug/2.2-searching-data.md
@@ -0,0 +1,20 @@
+---
+title: 2.2 - Searching Data
+navPrev: 2.1.2-deleting-entries.html
+navPrevText: 2.1.2 - Deleting Entries
+navUp: 2-handling-data.html
+navUpText: 2 - Handling of data within your directory
+navNext: 2.2.1-simple-search.html
+navNextText: 2.2.1 - Simple search
+---
+
+# 2.2 - Searching Data
+
+Searching is the most frequent operation done on a LDAP server : everything is optimized so that the search operation is as fast as possible.
+
+We will show how to do some simple searches on _Apache Directory Server_ in the following pages.
+
+## Table of content
+
+* [2.2.1 - Simple search](2.2.1-simple-search.html)
+* [2.2.2 - More search options](2.2.2-more-search-options.html)
diff --git a/source/apacheds/basic-ug/2.2.1-simple-search.md b/source/apacheds/basic-ug/2.2.1-simple-search.md
new file mode 100644
index 0000000..edd24f5
--- /dev/null
+++ b/source/apacheds/basic-ug/2.2.1-simple-search.md
@@ -0,0 +1,40 @@
+---
+title: 2.2.1 - Simple search
+navPrev: 2.2-searching-data.html
+navPrevText: 2.2 - Searching Data
+navUp: 2.2-searching-data.html
+navUpText: 2.2 - Searching Data
+navNext: 2.2.2-more-search-options.html
+navNextText: 2.2.2 - More search options
+---
+
+# 2.2.1 - Simple search
+
+Basically, a search in **LDAP** requires a few parameters :
+* A server on which we will send the request
+* A port for this server
+* A base _DN_, the location where to start the search from
+* A filter to select the entries to be returned
+* The user doing the search
+* A password if the user is not already bound
+* A scope, defining the depth we should look for
+* The list of attributes to return
+
+There are several other options, which will be exposed in the next chapter.
+
+## Doing a Simple Search on the command line
+
+Here is an exemple of search done on the base we have created :
+
+ $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
+ version: 1
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
+ creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
+ createTimestamp: 20061203140109Z
+
+Here, we see that we are connecting to the **zanzibar** server, on its **10389** port. As we haven't provided any user, this is an anonymous search, which should be allowed if the server accept anonymous searches.
+We then have the base _DN_, **"o=sevenseas"**, the filter **"(cn=James Hook)"** and the scope : **"sub"**. The last parameter, **"+"**, asks the server to return all the operational attributes.
+
+The result is just shown as a result of the command (here, we get back one single entry).
+
diff --git a/source/apacheds/basic-ug/2.2.2-more-search-options.md b/source/apacheds/basic-ug/2.2.2-more-search-options.md
new file mode 100644
index 0000000..795e195
--- /dev/null
+++ b/source/apacheds/basic-ug/2.2.2-more-search-options.md
@@ -0,0 +1,66 @@
+---
+title: 2.2.2 - More search options
+navPrev: 2.2.1-simple-search.html
+navPrevText: 2.2.1 - Simple search
+navUp: 2.2-searching-data.html
+navUpText: 2.2 - Searching Data
+navNext: 2.3-introducing-schema.html
+navNextText: 2.3 - The Schema
+---
+
+# 2.2.2 - More search options
+
+There are many parameters we haven't explained in the previous chapter.
+
+## Bound/anonymous searches
+
+When you send a SearchRequest to the server, you may be anonymous, or you may have been bound before the search is done. Binding on a server creates an **LDAP** session, which stores the credentials. This is used by the authorization system to filter the requests and the returned data, depending on the server settings.
+
+Not all the server allow an anonymous search : _Apache Directory Server_ default to not enabling such anonymous searches (this is for security questions).
+
+Generally speaking, users do bind before sending a search request.
+
+## Filters
+
+The **LDAP** filters can be quite complex. Although they aren't even close to what **SQL** provide : there is no way you can do a Join on a LDAP server.
+
+A filter is a set of nodes connected with operators like **and**, **or**, **not**...
+
+Here is the list of possible connectors :
+
+| Connector | Description | Example |
+|:-:|---|:-:|
+| And | All the nodes should be evaluated to true | (&(objectClass=person)(cn=acme)) |
+| Or | At least one of the node should be evaluated to true | (|(objectClass=person)(cn=acme)) |
+| Not | Select the entries that does not evaluate to true for this filter | (!(objectClass=person)) |
+
+Each node proceeds a check on the attributeType and value provided in the filter. For instance, the **"(o=sevenseas)"** filter tells the server to look for all the entries which have an "organization" attribute with a value of **"sevenseas"**. Here are the various kind of filters you can use :
+
+| Filter |
+|:-:|
+| = (Equality) |
+| Substring |
+| >= |
+| <= |
+| =* (Present) |
+| ~= (ApproxMatch) |
+| extensibleMatch |
+
+## Scope
+
+A Search can span across the whole **DIT**, or just a subset of it. In **LDAP**, you can use three different scopes :
+
+* OBJECT : the Object itself, none of its children
+* ONELEVEL : all of the base direct children, but not it's children's children not the base object
+* SUBLEVEL : everything
+
+## Returned attributes
+
+A search can also list the attributes to be returned. This can be :
+
+* '*' for all the user attributes
+* '+' for all the operational attributes
+* a list of attributes name
+* 1.1 if we don't want the attributes values to be returned, but we want the entries' DN that match the filter
+
+
diff --git a/source/apacheds/basic-ug/2.3-introducing-schema.md b/source/apacheds/basic-ug/2.3-introducing-schema.md
new file mode 100644
index 0000000..d2f1dcc
--- /dev/null
+++ b/source/apacheds/basic-ug/2.3-introducing-schema.md
@@ -0,0 +1,52 @@
+---
+title: 2.3 - The Schema
+navPrev: 2.2.2-more-search-options.html
+navPrevText: 2.2.2 - More search options
+navUp: 2-handling-data.html
+navUpText: 2 - Handling of data within your directory
+navNext: 2.3.1-adding-schema-elements.html
+navNextText: 2.3.1 - Adding Schema Elements
+---
+
+# 2.3 - The Schema
+
+All the data stored into a LDAP server are structured following a schema, a bit like any DBMS. _Apache Directory Server_ does have a dynamic schema : that means you can modify the schema without having to restart the server.
+
+We won't describe in the basic user guide how to manage the schema, this will be extensively described in the _Advanced user guide_, this chapter is just a short introduction.
+
+
+## Table of content
+
+* [2.3.1 - Adding Schema Elements](2.3.1-adding-schema-elements.html)
+* [2.3.2 - Enabling Schema](2.3.2-enabling-schema.html)
+
+## What is the LDAP schema ?
+
+It's a set of elements defining the data structure that can be stored in the server. It defines the following elements :
+
+* AttributeType : the type of values that can be stored in an attribute
+* ObjectClass : the set of AttributeType that can or must be used in an entry
+* Syntax : The syntax the values must abide to
+* MatchingRule : The rules used to retrieve the data
+
+There are more schema elements which are not currently used in _Apache Directory Server_.
+
+The following diagram shows all the interactions between each schema element :
+
+![Schema elements interactions](images/schema-objects.png)
+
+## How do we use it in ApacheDS ?
+
+The schema is everywhere in the server : each entry is controlled against the schema when it's added or modified. The schema is a critical part of the server.
+
+The _Apache Directory Server_ comes with a predefined schema, which should fit a large part of users need. You may though need to extend it...
+
+Hopefully, the schema can be extended. This will be explained in the _Advanced User Guide_.
+
+Enough said that you can browse the existing schema using _Apache Directory Studio_ :
+
+![Open Schema Browser](images/open-schema-browser.png)
+
+then you get the Schema browser :
+
+![Schema Browser](images/schema-browser.png)
diff --git a/source/apacheds/basic-ug/2.3.1-adding-schema-elements.md b/source/apacheds/basic-ug/2.3.1-adding-schema-elements.md
new file mode 100644
index 0000000..7d6073c
--- /dev/null
+++ b/source/apacheds/basic-ug/2.3.1-adding-schema-elements.md
@@ -0,0 +1,191 @@
+---
+title: 2.3.1 - Adding Schema Elements
+navPrev: 2.3-introducing-schema.html
+navPrevText: 2.3 - Introducing Schema
+navUp: 2.3-introducing-schema.html
+navUpText: 2.3 - Introducing Schema
+navNext: 2.3.2-enabling-schema.html
+navNextText: 2.3.2 - Enabling Schema
+---
+
+# 2.3.1 - Adding Schema Elements
+
+## Motivation
+
+The schema of an LDAP server is comprised of object classes, attributes, syntaxes and matching rules. Basically it defines which entries are allowed within the server and how the server should handle them
+
+
+<DIV class="info" markdown="1">
+<b>Is it always necessary to define my own schema elements?</b><br/>
+No. <b>ApacheDS</b> comes with a comprehensive set of predefined, standardized schema elements (like <em>inetOrgPerson</em>). It is quite common to solely use the predefined schema. The same holds true for other directory servers, by the way.
+</DIV>
+
+In the following text the addition of user defined schema elements to the schema is described in tutorial style.
+
+## Browsing ApacheDS schemas
+
+LDAPv3 servers publish their schema via LDAP. Thus it is possible to list the schema elements with standard LDAP tools. For instance it is possible to use the ldapsearch command line tool to list all object classes
+
+
+ $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w ****** \
+ -b "cn=schema" -s base "(objectclass=subschema)" objectclasses
+ ...
+ objectClasses: ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top
+ STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $
+ seeAlso $ description ) X-SCHEMA 'core' )
+ ...
+
+The output (formatted as defines in RFC 4512) contains all things which are interesting to know about an object class (required attributes, optional attributes etc.), but is not easy to read by a human user. It is therefore often appropriate to use a GUI tool to browse the schema (which basically performs the same search operations but presents the output prettily). One option is Apache Directory Studio, an Eclipse based LDAP tool set which contains a powerful graphical Schema browser:
+
+![Schema brower](images/schema-browser-person.png)
+
+The techniques described above work for all LDAP v3 compliant servers. The ability to browse the schema gives us a chance to check whether our future changes to the schema really took place.
+
+The schema subsystem of ApacheDS 1.5 stores the schema elements as entries in the DIT. You can find them within a special partition with suffix ou=schema; simply browse the content with your favorite LDAP Browser. With Apache Directory Studio, it looks like this:
+
+![ApacheDS Schemas](images/schema-browser-tree.png)
+
+Browsing the schema like this gives a good impression of the ApacheDS implementation of the schema subsystem and an even better way to analyze effects during schema updates. But keep in mind that the storage scheme is server dependent; not all LDAP server implementations store the schema elements in the DIT.
+
+## Which OIDs should you use?
+
+If you plan to add custom schema elements, you need numerical OIDs (object identifiers) for them. If you implement schema elements defined somewhere else (like eduPerson), you can use the OIDs which are are part of their descriptions. But what if you plan to design your own?
+
+
+### Some OID background information
+
+An OID is a string formed by a series of numbers which are separated by a dot (like "12.4.1971.0.1"). Many elements in directory world use OIDs: Controls, extended operations and schema elements (like "2.5.6.6" for object class person). They identify these objects in a unique fashion and therefore avoid name clashes.
+
+How is this accomplished? OIDs are assigned hierarchically: The owner of an OID is allowed to create new IDs by simply appending numbers. S/he is also allowed to delegate ownership of newly created OIDs to someone else. This way every person or organization is able to allocate an arbitrary number of new OIDs after obtaining one from "higher command", and they are still unique world-wide.
+
+
+### OIDs in the example
+
+OIDs starting with **1.3.6.1.4.1** represent IANA-registered private enterprises, Apache Software Foundation for instance owns the OID **1.3.6.1.4.1.18060**. The **1.3.6.1.4.1.18060.0** has been assigned to the Apache Directory project by the ASF, and we have decided to use the branch "1.3.6.1.4.1.18060.0.4.3" for schema elements used as examples in the documentation.
+
+### OIDs for your own custom schema elements
+
+If you just want to play around with the schema subsystem, want to explore the capabilities, or learn about LDAP in general, you will probably not mind about unique OIDs. This is comparable to using self-signed certificates for SSL experiments. But it is nevertheless necessary that you use OIDs which are not used in the schema yet (otherwise addition will fail).
+
+But if you plan to use your schema elements in a production environment (an object class for instance which describes employees with company specific attributes), or to ship your schema elements with a product (e.g. a CRM or portal solution), you should definitely use unique OIDs. In order to do this you have to obtain OIDs from a branch assigned to your company or organization (your network administrators will be helpful here, do not invent OIDs without asking or obtaining a branch from someone who owns the prefix OID). If your company or organization does not own on OID, there are several option to obtain one, one is the IANA (Internet Assigned Numbers Authority). It is also possible to get an OID branch as an individual.
+
+
+<DIV class="info" markdown="1">
+**Obtaining a PEN**
+You can ask for your own PEN (Private Enterprise Number) here : http://pen.iana.org/pen/PenApplication.page
+It takes a few weeks to have a private OID assigned to you, so be patient, or do it early !
+</DIV>
+
+## A simple example
+
+The goal is to store ship entries in our directory, backing the "Seven Seas" example used throughout the Basic User's Guide. There are no schema elements shipped with ApacheDS covering our naval requirements. So we add some.
+
+Here is a sample entry for a ship in LDIF:
+
+
+ dn: cn=HMS Victory,ou=ships,o=sevenSeas
+ objectClass: top
+ objectClass: ship
+ cn: HMS Victory
+ numberOfGuns: 104
+ description: a ship of the line of the Royal Navy
+ description: built between 1759 and 1765
+
+A ship entry is comprised of a mandatory value for common name (cn) of the ship, description values and the number of guns (numberOfGuns). Thus a new object class ship and a new attribute type numberOfGuns have to be added to the schema. There are different ways to accomplish the task. In any case, we have to add the attribute type first, because the object class refers to it.
+
+#### attribute type numberOfGuns
+
+Here is the definition of our custom attribute type numberOfGuns formatted according to RFC 4512.
+
+
+ ( 1.3.6.1.4.1.18060.0.4.3.2.1
+ NAME 'numberOfGuns' DESC 'Number of guns of a ship'
+ EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ SINGLE-VALUE
+ )
+
+#### object class ship
+
+Custom object class ship is defined as follows
+
+
+ ( 1.3.6.1.4.1.18060.0.4.3.3.1
+ NAME 'ship' DESC 'An entry which represents a ship'
+ SUP top STRUCTURAL
+ MUST cn MAY ( numberOfGuns $ description )
+ )
+
+## Using Apache Directory Studio Schema Editor to load the new schema elements
+
+A very convenient way to add your own schema elements to Apache Directory Server is to use the Schema Editor of Apache Directory Studio. It is even possible to define/design them within the UI, but we opt here use a prepared file in OpenLDAP format and import it using Studio. This is a good choice if you have the schema to add already described that way.
+
+Our file sevenSeas.schema looks like this:
+
+
+ attributetype ( 1.3.6.1.4.1.18060.0.4.3.2.1
+ NAME 'numberOfGuns'
+ DESC 'Number of guns of a ship'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ SINGLE-VALUE
+ )
+
+ objectclass ( 1.3.6.1.4.1.18060.0.4.3.3.1
+ NAME 'ship'
+ DESC 'An entry which represents a ship'
+ SUP top
+ STRUCTURAL
+ MUST cn
+ MAY ( numberOfGuns $ description )
+ )
+
+In Eclipse with the Apache Directory Studio plugins installed (or alternatively the standalone RCP application of Apache Directory Studio, if you prefer this), open the Schemas Editor :
+
+![Schema Editor](images/schema-editor.png)
+
+Now, create a new schema project. Here, you have a choice :
+ * either you create a offline schema project
+ * or you create a project that will pull the schema from an existing ApacheDS server (it must be running, and a connection must have been created in Studio)
+
+### Offline schema project
+
+You need to create a new schema project, and to select the targeted server (either ApacheDS or OpenLDAP) :
+
+![Select target server](images/select-target-server.png)
+
+Then select all the schema you want to use this is necessary if you are to extend an AttributeType or an ObjectClass in your own schema)
+
+### Connected schema project
+
+In this case, you will see all the existing schema in the ApacheDS server you are connected to :
+
+![Connected Schema Project](images/connected-schema-project.png)
+
+### Creating the new schema
+
+Create the new schema you want to add by clicking on the 'schema creation' icon, as shown in the following picture :
+
+![Create Schema](images/create-schema.png)
+
+Now, you can add the Attribute Type or ObjectClasses you need in this added schema (see how to create schema elements in Apache Directory Studio documentation).
+
+<DIV class="warning" markdown="1">
+Sadly, in this version, the modifications you have made on a schema won't be injected into the server. In fact, the existing schemas are loaded from the server, and every modification is applied locally, not on the remote server.
+
+In order to inject the modified schema, you need to export the modifications in LDIF format for ApacheDS, and to import this LDIF into the targeted ApacheDS server.
+</DIV>
+
+Once this is done, you hav to export the modifications in a format that will fit what is expected by ApacheDS. Right click on the schemas windows, select 'export-> Schemas for ApacheDS', and in the popup, select the schema you have added :
+
+![Export Schema](images/export-schema.png)
+
+### Importing the schema
+
+The last step is to import the newly created LDIF into your ApacheDS instance. Just import it as any other LDIF, it will create a new element in your server schema :
+![Import Schema](images/import-schema.png)
+
+You should see your schema into the list of supported schemas.
+
+<DIV class="warning" markdown="1">
+You must restart the server if you want to use the added AttributeTypes or ObjectClasses. The schema is currently not dynamic in ApacheDS
+</DIV>
diff --git a/source/apacheds/basic-ug/2.3.2-enabling-schema.md b/source/apacheds/basic-ug/2.3.2-enabling-schema.md
new file mode 100644
index 0000000..f64d5c2
--- /dev/null
+++ b/source/apacheds/basic-ug/2.3.2-enabling-schema.md
@@ -0,0 +1,190 @@
+---
+title: 2.3.2 - Enabling Schema
+navPrev: 2.3.1-adding-schema-elements.html
+navPrevText: 2.3.1 - Adding Schema Elements
+navUp: 2.3-introducing-schema.html
+navUpText: 2.3 - Introducing Schema
+navNext: 3-basic-security.html
+navNextText: 3 - Basic Security
+---
+
+# 2.3.2 - Enabling Schema
+
+## Motivation
+
+
+
+<DIV class="info" markdown="1">
+<B>Is it always necessary to define my own schema elements?</B>
+No. ApacheDS comes with a comprehensive set of predefined, standardized schema elements (like inetOrgPerson). It is quite common to solely use the predefined schema. The same holds true for other directory servers, by the way.
+</DIV>
+
+In the following text the addition of user defined schema elements to the schema is described in tutorial style.
+
+## Browsing ApacheDS schemas
+
+LDAPv3 servers publish their schema via LDAP. Thus it is possible to list the schema elements with standard LDAP tools. For instance it is possible to use the ldapsearch command line tool to list all object classes
+
+
+ $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w ****** \
+ -b "cn=schema" -s base "(objectclass=subschema)" objectclasses
+ ...
+ objectClasses: ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top
+ STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $
+ seeAlso $ description ) X-SCHEMA 'core' )
+ ...
+
+The output (formatted as defines in RFC 4512) contains all things which are interesting to know about an object class (required attributes, optional attributes etc.), but is not easy to read by a human user. It is therefore often appropriate to use a GUI tool to browse the schema (which basically performs the same search operations but presents the output prettily). One option is Apache Directory Studio, an Eclipse based LDAP tool set which contains a powerful graphical Schema browser:
+
+![Schema brower](images/schema-browser-person.png)
+
+The techniques described above work for all LDAP v3 compliant servers. The ability to browse the schema gives us a chance to check whether our future changes to the schema really took place.
+
+The schema subsystem of ApacheDS 1.5 stores the schema elements as entries in the DIT. You can find them within a special partition with suffix ou=schema; simply browse the content with your favorite LDAP Browser. With Apache Directory Studio, it looks like this:
+
+![ApacheDS Schemas](images/schema-browser-tree.png)
+
+Browsing the schema like this gives a good impression of the ApacheDS implementation of the schema subsystem and an even better way to analyze effects during schema updates. But keep in mind that the storage scheme is server dependent; not all LDAP server implementations store the schema elements in the DIT.
+
+## Which OIDs should you use?
+
+If you plan to add custom schema elements, you need numerical OIDs (object identifiers) for them. If you implement schema elements defined somewhere else (like eduPerson), you can use the OIDs which are are part of their descriptions. But what if you plan to design your own?
+
+
+### Some OID background information
+
+An OID is a string formed by a series of numbers which are separated by a dot (like "12.4.1971.0.1"). Many elements in directory world use OIDs: Controls, extended operations and schema elements (like "2.5.6.6" for object class person). They identify these objects in a unique fashion and therefore avoid name clashes.
+
+How is this accomplished? OIDs are assigned hierarchically: The owner of an OID is allowed to create new IDs by simply appending numbers. S/he is also allowed to delegate ownership of newly created OIDs to someone else. This way every person or organization is able to allocate an arbitrary number of new OIDs after obtaining one from "higher command", and they are still unique world-wide.
+
+
+### OIDs in the example
+
+OIDs starting with **1.3.6.1.4.1** represent IANA-registered private enterprises, Apache Software Foundation for instance owns the OID **1.3.6.1.4.1.18060**. The **1.3.6.1.4.1.18060.0** has been assigned to the Apache Directory project by the ASF, and we have decided to use the branch "1.3.6.1.4.1.18060.0.4.3" for schema elements used as examples in the documentation.
+
+### OIDs for your own custom schema elements
+
+If you just want to play around with the schema subsystem, want to explore the capabilities, or learn about LDAP in general, you will probably not mind about unique OIDs. This is comparable to using self-signed certificates for SSL experiments. But it is nevertheless necessary that you use OIDs which are not used in the schema yet (otherwise addition will fail).
+
+But if you plan to use your schema elements in a production environment (an object class for instance which describes employees with company specific attributes), or to ship your schema elements with a product (e.g. a CRM or portal solution), you should definitely use unique OIDs. In order to do this you have to obtain OIDs from a branch assigned to your company or organization (your network administrators will be helpful here, do not invent OIDs without asking or obtaining a branch from someone who owns the prefix OID). If your company or organization does not own on OID, there are several option to obtain one, one is the IANA (Internet Assigned Numbers Authority). It is also possible to get an OID branch as an individual.
+
+
+<DIV class="info" markdown="1">
+**Obtaining a PEN**
+You can ask for your own PEN (Private Enterprise Number) here : http://pen.iana.org/pen/PenApplication.page
+It takes a few weeks to have a private OID assigned to you, so be patient, or do it early !
+</DIV>
+
+## A simple example
+
+The goal is to store ship entries in our directory, backing the "Seven Seas" example used throughout the Basic User's Guide. There are no schema elements shipped with ApacheDS covering our naval requirements. So we add some.
+
+Here is a sample entry for a ship in LDIF:
+
+
+ dn: cn=HMS Victory,ou=ships,o=sevenSeas
+ objectClass: top
+ objectClass: ship
+ cn: HMS Victory
+ numberOfGuns: 104
+ description: a ship of the line of the Royal Navy
+ description: built between 1759 and 1765
+
+A ship entry is comprised of a mandatory value for common name (cn) of the ship, description values and the number of guns (numberOfGuns). Thus a new object class ship and a new attribute type numberOfGuns have to be added to the schema. There are different ways to accomplish the task. In any case, we have to add the attribute type first, because the object class refers to it.
+
+#### attribute type numberOfGuns
+
+Here is the definition of our custom attribute type numberOfGuns formatted according to RFC 4512.
+
+
+ ( 1.3.6.1.4.1.18060.0.4.3.2.1
+ NAME 'numberOfGuns' DESC 'Number of guns of a ship'
+ EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ SINGLE-VALUE
+ )
+
+#### object class ship
+
+Custom object class ship is defined as follows
+
+
+ ( 1.3.6.1.4.1.18060.0.4.3.3.1
+ NAME 'ship' DESC 'An entry which represents a ship'
+ SUP top STRUCTURAL
+ MUST cn MAY ( numberOfGuns $ description )
+ )
+
+## Using Apache Directory Studio Schema Editor to load the new schema elements
+
+A very convenient way to add your own schema elements to Apache Directory Server is to use the Schema Editor of Apache Directory Studio. It is even possible to define/design them within the UI, but we opt here use a prepared file in OpenLDAP format and import it using Studio. This is a good choice if you have the schema to add already described that way.
+
+Our file sevenSeas.schema looks like this:
+
+
+ attributetype ( 1.3.6.1.4.1.18060.0.4.3.2.1
+ NAME 'numberOfGuns'
+ DESC 'Number of guns of a ship'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+ SINGLE-VALUE
+ )
+
+ objectclass ( 1.3.6.1.4.1.18060.0.4.3.3.1
+ NAME 'ship'
+ DESC 'An entry which represents a ship'
+ SUP top
+ STRUCTURAL
+ MUST cn
+ MAY ( numberOfGuns $ description )
+ )
+
+In Eclipse with the Apache Directory Studio plugins installed (or alternatively the standalone RCP application of Apache Directory Studio, if you prefer this), open the Schemas Editor :
+
+![Schema Editor](images/schema-editor.png)
+
+Now, create a new schema project. Here, you have a choice :
+ * either you create a offline schema project
+ * or you create a project that will pull the schema from an existing ApacheDS server (it must be running, and a connection must have been created in Studio)
+
+### Offline schema project
+
+You need to create a new schema project, and to select the targeted server (either ApacheDS or OpenLDAP) :
+
+![Select target server](images/select-target-server.png)
+
+Then select all the schema you want to use this is necessary if you are to extend an AttributeType or an ObjectClass in your own schema)
+
+### Connected schema project
+
+In this case, you will see all the existing schema in the ApacheDS server you are connected to :
+
+![Connected Schema Project](images/connected-schema-project.png)
+
+### Creating the new schema
+
+Create the new schema you want to add by clicking on the 'schema creation' icon, as shown in the following picture :
+
+![Create Schema](images/create-schema.png)
+
+Now, you can add the Attribute Type or ObjectClasses you need in this added schema (see how to create schema elements in Apache Directory Studio documentation).
+
+<DIV class="warning" markdown="1">
+Sadly, in this version, the modifications you have made on a schema won't be injected into the server. In fact, the existing schemas are loaded from the server, and every modification is applied locally, not on the remote server.
+
+In order to inject the modified schema, you need to export the modifications in LDIF format for ApacheDS, and to import this LDIF into the targeted ApacheDS server.
+</DIV>
+
+Once this is done, you hav to export the modifications in a format that will fit what is expected by ApacheDS. Right click on the schemas windows, select 'export-> Schemas for ApacheDS', and in the popup, select the schema you have added :
+
+![Export Schema](images/export-schema.png)
+
+### Importing the schema
+
+The last step is to import the newly created LDIF into your ApacheDS instance. Just import it as any other LDIF, it will create a new element in your server schema :
+![Import Schema](images/import-schema.png)
+
+You should see your schema into the list of supported schemas.
+
+<DIV class="warning" markdown="1">
+You must restart the server if you want to use the added AttributeTypes or ObjectClasses. The schema is currently not dynamic in ApacheDS
+</DIV>
diff --git a/source/apacheds/basic-ug/3-basic-security.md b/source/apacheds/basic-ug/3-basic-security.md
new file mode 100644
index 0000000..c508591
--- /dev/null
+++ b/source/apacheds/basic-ug/3-basic-security.md
@@ -0,0 +1,19 @@
+---
+title: 3 - Basic Security
+navPrev: 2.3.2-enabling-schema.html
+navPrevText: 2.3.2 - Enabling Schema
+navUp: ../basic-user-guide.html
+navUpText: Basic User Guide
+navNext: 3.1-authentication-options.html
+navNextText: 3.1 - Authentication options
+---
+
+# 3 - Basic Security
+
+This chapter expose the basic security configuration you can setup. It covers simple authentication, authorization and SSL.
+
+## Table of content
+
+* [3.1 - Authentication options](3.1-authentication-options.html)
+* [3.2 - Basic authorization](3.2-basic-authorization.html)
+* [3.3 - How to enable SSL](3.3-enabling-ssl.html)
diff --git a/source/apacheds/basic-ug/3.1-authentication-options.md b/source/apacheds/basic-ug/3.1-authentication-options.md
new file mode 100644
index 0000000..d69f7dc
--- /dev/null
+++ b/source/apacheds/basic-ug/3.1-authentication-options.md
@@ -0,0 +1,390 @@
+---
+title: 3.1 - Authentication options
+navPrev: 3-basic-security.html
+navPrevText: 3 - Basic Security
+navUp: 3-basic-security.html
+navUpText: 3 - Basic Security
+navNext: 3.2-basic-authorization.html
+navNextText: 3.2 - Basic authorization
+---
+
+# 3.1 - Authentication options
+
+This section describes the authentication options of ApacheDS 2.0. Anonymous and simple binds are supported, as well as SASL mechanisms. Configuring and using the first two of them is described below with the help of examples.
+
+{{% toc %}}
+
+## What is authentication?
+
+*Authentication* is the process of determining whether someone (or something) in fact is what he/she/it asserts to be.
+
+Within ApacheDS you will likely want to authenticate clients in order to check whether they are allowed to read, add or manipulate certain data stored within the directory. The latter, i.e. whether an authenticated client is permitted to do something, is deduced during *authorization*.
+
+Quite often, the process of authentication is delegated to a directory service by other software components. Because in doing so, authentication data (e.g. username, password) and authorization data (e.g. group relationships) are stored and managed centrally in the directory, and all connected software solutions benefit from it. The integration sections of this guide provide examples for Apache Tomcat, Apache HTTP servers, and others.
+
+ApacheDS 2.0 supports simple authentication and anonymous binds while storing passwords within _userPassword_ attributes in user entries. Passwords can be stored in clear text or one-way encrypted with a hash algorithm like MD5 or SHA1. Since version 1.5.1, SASL mechanism are supported as well. We start with anonymous binds.
+
+## Simple binds
+
+Authentication via simple bind is widely used. The method is supported by ApacheDS 2.0 for all person entries stored within any partition, if they contain a password attribute. How does it work? An LDAP client provides the DN of a user entry and a password to the server, the parameters of the bind operation. ApacheDS checks whether the given password is the same as the one stored in the _userpassword_ attribute of the given entry. If not, the bind operation fails (LDAP error code 49, LDAP_INVALID_CREDENTIALS), and the user is not authenticated.
+
+### Using command line tools
+
+Assume this entry from the Seven Seas partition is stored within the directory (only a fragment with the relevant attributes is shown).
+
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ objectclass: person
+ objectclass: organizationalPerson
+ cn: Horatio Hornblower
+ sn: Hornblower
+ userpassword: pass
+ ...
+
+In the following search command, a user tries to bind with the given DN (option -D) but a wrong password (option -w). The bind fails and the command terminates without performing the search.
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
+ -w wrong -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
+ ldap_simple_bind: Invalid credentials
+ ldap_simple_bind: additional info: Bind failed: null
+
+If the user provides the correct password during the call of the ldapsearch command, the bind operation succeeds and the seach operation is performed afterwards.
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
+ -w pass -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
+ version: 1
+ dn: ou=people,o=sevenSeas
+ ou: people
+ description: Contains entries which describe persons (seamen)
+ objectclass: organizationalUnit
+ objectclass: top
+
+### Binds from Java components using JNDI
+
+Using JNDI, authentication via simple binds is accomplished by appropriate configuration. One option is to provide the parameters in a Hashtable object like this
+
+```java
+import java.util.Hashtable;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+
+public class SimpleBindDemo {
+
+ public static void main(String[] args) throws NamingException {
+
+ if (args.length < 2) {
+ System.err.println("Usage: java SimpleBindDemo <userDN> <password>");
+ System.exit(1);
+ }
+
+ Hashtable env = new Hashtable();
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+ env.put(Context.PROVIDER_URL, "ldap://zanzibar:10389/o=sevenSeas");
+
+ env.put(Context.SECURITY_AUTHENTICATION, "simple");
+ env.put(Context.SECURITY_PRINCIPAL, args[0]);
+ env.put(Context.SECURITY_CREDENTIALS, args[1]);
+
+ try {
+ Context ctx = new InitialContext(env);
+ NamingEnumeration enm = ctx.list("");
+
+ while (enm.hasMore()) {
+ System.out.println(enm.next());
+ }
+
+ enm.close();
+ ctx.close();
+ } catch (NamingException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+}
+```
+
+If the DN of a user entry and the fitting password are provided as command line arguments, the program binds successfully and performs a search:
+
+```bash
+$ java SimpleBindDemo "cn=Horatio Hornblower,ou=people,o=sevenSeas" pass
+ou=people: javax.naming.directory.DirContext
+ou=groups: javax.naming.directory.DirContext
+```
+
+On the other hand, providing an incorrect password results in a failed bind operation. JNDI maps it to a _NamingException_:
+
+```bash
+$ java SimpleBindDemo "cn=Horatio Hornblower,ou=people,o=sevenSeas" quatsch
+[LDAP: error code 49 - Bind failed: null]
+```
+
+In real life, you obviously want to separate most of the configuration data from the source code, for instance with the help of the _jndi.properties_ file.
+
+## Passwords stored one-way encrypted
+
+If passwords are stored in the directory in clear like above, the administrator (_uid=admin,ou=system_) is able to read them. This holds true even if authorization is enabled. The passwords would also be visible in exported LDIF files. This is often unacceptable.
+
+<DIV class="warning" markdown="1">
+Not only the administrator will be able to read your password, or be visible in LDIF files, but if one does not use SSL, the password is transmitted in clear text above the wire...
+</DIV>
+
+### Passwords not stored in clear text
+
+ApacheDS does also support simple binds, if user passwords are stored one-way encrypted. An LDAP client, which creates user entries, applies a hash-function (SHA for instance) to the user passwords beforehand, and stores the users with these fingerprints as _userpassword_ values (instead of the clear text values), for instance:
+
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ objectclass: person
+ objectclass: organizationalPerson
+ cn: Horatio Hornblower
+ sn: Hornblower
+ userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
+ ...
+
+The value "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=" means that _SHA_ (Secure Hash Algorithm) was applied to the password, and "nU4eI71bcnBGqeO0t9tXvY1u5oQ=" was the result (Base-64 encoded). Please note that it is not possible to calculate the source ("pass" in our case) back from the result. This is why it is called one-way encrypted -- it is rather difficult to decrypt it. One may guess many times, calculate the hash values (the algorithms are public) and compare the result. But this would take a long time, especially if you choose a more complex password than we did ("pass").
+
+### But how to obtain the hash value for a password?
+
+With some lines of code, it is quite easy to accomplish this task programatically in Java:
+
+```java
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import sun.misc.BASE64Encoder;
+
+public class DigestDemo {
+ public static void main(String[] args) throws NoSuchAlgorithmException {
+ String password = "pass";
+ String algorithm = "SHA";
+
+ // Calculate hash value
+ MessageDigest md = MessageDigest.getInstance(algorithm);
+ md.update(password.getBytes());
+ byte[] bytes = md.digest();
+
+ // Print out value in Base64 encoding
+ BASE64Encoder base64encoder = new BASE64Encoder();
+ String hash = base64encoder.encode(bytes);
+ System.out.println('{'+algorithm+'}'+hash);
+ }
+}
+```
+
+The output is "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=".
+
+Another option is to use command line tools to calculate the hash value; the [OpenSSL](http://www.openssl.org) project provides such stuff. Furthermore many UI LDAP tools allow you to store passwords automatically encrypted with the hash algorithm of your choice. See below [Apache Directory Studio](https://directory.apache.org/studio/) as an example. The dialog automatically shows up if a _userPassword_ attribute is to be manipulated (added, changed).
+
+![Password Edit](images/password-edit-ls.png)
+
+### From an LDAP client point of view
+
+From an LDAP client point of view, the behavior during authentication is the same as with passwords stored in clear. During a simple bind, a client sends DN and password (unencrypted, i.e. no hash algorithm applied) to the server. If ApacheDS detects, that the user password for the given DN is stored in the directory with a hash function applied, it calculates the hash value of the given password with the appropriate algorithm (this is why the algorithm is stored together with the hashed password). Afterwards it compares the result with the stored attribute value. In case of a match, the bind operation ends successfully:
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
+ -w pass -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
+ version: 1
+ dn: ou=people,o=sevenSeas
+ ou: people
+ description: Contains entries which describe persons (seamen)
+ objectclass: organizationalUnit
+ objectclass: top
+
+Providing the hashed value of the _userPassword_ attribute instead of the original value will be rejected by ApacheDS:
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Hornblower,ou=people,o=sevenSeas" \\
+ -w "{SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=" -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
+ ldap_simple_bind: Invalid credentials
+ ldap_simple_bind: additional info: Bind failed: null
+
+This is intended. If someone was able to catch this value (from an LDIF export for instance), s/he must still provide the password itself in order to get authenticated.
+
+<DIV class="note" markdown="1">
+<b>Be Warned: Limited security added</b>
+
+Please note that storing user passwords one-way encrypted only adds limited security. During the bind operation, the credentials are still transmitted unencrypted, if no SSL/TLS communication is used (thus you should definitely consider to do so).
+
+Furthermore, if someone gets an LDIF file with userpassword values digested with SHA etc., s/he may be able to determine some of the passwords with brute force. Calculation of hash functions can be done very fast, and the attacker can attempt millions of values with ease, without you getting notice of it. Therefore protect your data, even if one-way encryption is applied to the passwords!
+</DIV>
+
+
+## Anonymous binds
+
+In some occasions it is appropriate to allow LDAP clients to permit operations without authentication. If data managed by the directory service is well known by all clients, it is not uncommon to allow search operations (not manipulation) within this data to all clients -- without providing credentials. An example for this are enterprise wide telephone books, if clients access the directory service from the intranet.
+
+### Enable/disable anonymous binds
+
+Anonymous access is enabled by default. Changing this is one of the basic configuration tasks (see [1.4.5 - Enable and disable anonymous access](1.4.5-anonymous-access.html)).
+
+### Example: Server behavior with anonymous binds disabled
+
+Assume anonymous binds are disabled and our sample partition _Seven Seas_ present in the server. Here is an example with a search operation performed by a command line tool as a client. It tries to connect anonymously (no DN and password given, i.e. options -D and -w missing) to the server. Afterwards the entry _ou=people,o=sevenSeas_ should be displayed.
+
+See the command and the resulting error message provided by the server below
+
+ $ ldapsearch -h zanzibar -p 10389 -b "ou=people,o=sevenSeas" -s one "(objectclass=*)"
+ ldap_search: Insufficient access
+ ldap_search: additional info: failed on search operation: Anonymous binds have been disabled!
+
+### Example: Server behavior with anonymous binds enabled
+
+Now the same command performed against ApacheDS 1.5 with anonymous access enabled as described above. The behavior is different -- the entry is visible.
+
+ $ ldapsearch -h zanzibar -p 10389 -b "ou=people,o=sevenSeas" -s base "(objectclass=*)"
+ version: 1
+ dn: ou=people,o=sevenSeas
+ ou: people
+ description: Contains entries which describe persons (seamen)
+ objectclass: organizationalUnit
+ objectclass: top
+
+### Other clients
+
+The examples above have used a command line tool. Of course graphical tools and programmatical access (JNDI etc.) allow anonymous binds as well. Below is a screen shot from the configuration dialog of [Apache Directory Studio](https://directory.apache.org/studio/) as an example. During configuration of the connection data ("New LDAP Connection", for instance), the option _Anonymous Authentication_ leads to anonymous binds. Other UI tools offer this feature as well.
+
+![Authentication options](images/authentication-options-ls.png)
+
+<DIV class="note" markdown="1">
+**Use this feature wisely**
+
+With anonymous access enabled it is not only possible to search the directory without providing username and password. With autorization disabled, anonymous users may also be able to modify data. It is therefore highly recommended to enable and configure the authorization subsystem as well. Learn more about authorization in the [3.2. Basic authorization] section.
+</DIV>
+
+## How to authenticate a user by uid and password?
+
+If you want to use simple binds with user DN and password within a Java component, in order to authenticate users programatically, in practice one problem arises: Most users do not know their DN. Therefore they will not be able to enter it. And even if they know it, it would be frequently very laborious due to the length of the DN. It would be easier for a user if s/he only has to probvide a short, unique _ID_ and the password, like in this web form
+
+![Confluence Logon](images/confluence-logon.png)
+
+Usually the ID is an attribute within the user's entry. In our sample data (Seven Seas), each user entry contains the _uid_ attribute, for instance uid=hhornblo for Captain Hornblower:
+
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ objectclass: person
+ objectclass: organizationalPerson
+ objectclass: inetOrgPerson
+ objectclass: top
+ cn: Horatio Hornblower
+ description: Capt. Horatio Hornblower, R.N
+ givenname: Horatio
+ sn: Hornblower
+ uid: hhornblo
+ mail: hhornblo@royalnavy.mod.uk
+ userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
+
+But how to authenticate a user who provides "hhornblo"/"pass" instead of "cn=Horatio Hornblower,ou=people,o=sevenSeas"/"pass" with the help of ApacheDS?
+
+### An algorithm
+
+In order to accomplish this task programmatically, one option is to perform the following steps
+
+#### Arguments
+* _uid_ of a user (e.g. "hhornblo")
+* _password_ proclaimed to be correct for the user
+
+#### Steps
+
+* Bind to ApacheDS anonymously, or with the DN of a technical user. In both cases it must be possible to search the directory afterwards (authorization has to be configured that way)
+* Perform a search operation with an appropriate filter to find the user entry for the given ID, in our case "(&(objectClass=inetorgperson)(uid=hhornblo))"
+ * If the search result is empty, the user does not exist -- terminate
+ * If the search result contains more than one entry, the given ID is not unique, this is likely a data error within your directory
+* Bind to ApacheDS with the DN of the entry found in the previous search, and the _password_ provided as argument
+ * If the bind operation fails, the password is wrong, and the result is _false_ (not authenticated)
+ * If the bind is successful, authenticate the user
+
+### Sample code with JNDI
+
+The algorithm described above is implemented by many software solutions which are able to integrate LDAP directories. You will learn more about some of them and their configuration options within a later section of this guide.
+
+For illustration purposes, here is a simple Java program which performs the steps with the help of JNDI. It uses anonymous bind for the first step, hence it must be enabled (replace with a technical user, if it better meets your requirements).
+
+```java
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
+
+public class AdvancedBindDemo {
+
+ public static void main(String[] args) throws NamingException {
+
+ if (args.length < 2) {
+ System.err.println("Usage: java AdvancedBindDemo <uid> <password>");
+ System.exit(1);
+ }
+
+ Hashtable env = new Hashtable();
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+ env.put(Context.PROVIDER_URL, "ldap://zanzibar:10389/");
+ env.put(Context.SECURITY_AUTHENTICATION, "simple");
+
+ String uid = args[0];
+ String password = args[1];
+
+ DirContext ctx = null;
+
+ try {
+ // Step 1: Bind anonymously
+ ctx = new InitialDirContext(env);
+
+ // Step 2: Search the directory
+ String base = "o=sevenSeas";
+ String filter = "(&(objectClass=inetOrgPerson)(uid={0}))";
+ SearchControls ctls = new SearchControls();
+ ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+ ctls.setReturningAttributes(new String[0]);
+ ctls.setReturningObjFlag(true);
+ NamingEnumeration enm = ctx.search(base, filter, new String[] { uid }, ctls);
+
+ String dn = null;
+
+ if (enm.hasMore()) {
+ SearchResult result = (SearchResult) enm.next();
+ dn = result.getNameInNamespace();
+
+ System.out.println("dn: "+dn);
+ }
+
+ if (dn == null || enm.hasMore()) {
+ // uid not found or not unique
+ throw new NamingException("Authentication failed");
+ }
+
+ // Step 3: Bind with found DN and given password
+ ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, dn);
+ ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);
+ // Perform a lookup in order to force a bind operation with JNDI
+ ctx.lookup(dn);
+ System.out.println("Authentication successful");
+
+ enm.close();
+ } catch (NamingException e) {
+ System.out.println(e.getMessage());
+ } finally {
+ ctx.close();
+ }
+ }
+}
+```
+
+Some example calls:
+
+ $ java AdvancedBindDemo unknown sailor
+ Authentication failed
+
+ $ java AdvancedBindDemo hornblo pass
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ Authentication successful
+
+ $ java AdvancedBindDemo hornblo quatsch
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ [LDAP: error code 49 - Bind failed: null]
+
+The examples consist of an unknown user (an _inetOrgPerson_ entry with uid=unknown does not exist), a successful authenttication, and an attempt with an existing uid but a wrong password.
+
+## Resources
+
+* [RFC 2829](http://www.faqs.org/rfcs/rfc2829.html) Authentication Methods for LDAP
+* [The Secure Hash Algorithm Directory](http://www.secure-hash-algorithm-md5-sha-1.co.uk/) MD5, SHA-1 and HMAC Resources
diff --git a/source/apacheds/basic-ug/3.2-basic-authorization.md b/source/apacheds/basic-ug/3.2-basic-authorization.md
new file mode 100644
index 0000000..e423abf
--- /dev/null
+++ b/source/apacheds/basic-ug/3.2-basic-authorization.md
@@ -0,0 +1,535 @@
+---
+title: 3.2 - Basic authorization
+navPrev: 3.1-authentication-options.html
+navPrevText: 3.1 - Authentication options
+navUp: 3-basic-security.html
+navUpText: 3 - Basic Security
+navNext: 3.3-enabling-ssl.html
+navNextText: 3.3 - How to enable SSL
+---
+
+# 3.2 - Basic authorization
+
+This section describes the default authorization functionality of ApacheDS 1.5, which is very simple. On the other hand, it is inadequate for most serious deployments. Therefore a basic example to the "real" authorization subsystem is provided as well.
+
+{{% toc %}}
+
+## What is authorization?
+
+After authentication of a user or an application (or more generally an LDAP client) against the directory server (or attaining anonymous access respectively), certain LDAP operations will be granted or rejected, according to configuration and certain rules. This process of granting access is called authorization.
+
+Authorization for directory operations is not strictly standardized in the LDAP world, [RFC 2829 - Authentication Methods for LDAP](http://www.faqs.org/rfcs/rfc2829.html) describes various scenarios and concepts, but does not enforce a concrete implementation. Thus each product comes with its own authorization feature. So does ApacheDS. A powerful authorization subsystem is provided since version 0.9.3, but disabled as a default.
+
+### Authorization for directory operations vs. group membership
+
+In order to accomplish their authorization functionality, software components often take advantage of LDAP groups stored within the directory. _groupOfNames_ and _groupOfUniqueNames_ are common object classes for groups entries; they contain the DNs of their members (users, other groups) as attribute values.
+
+In order to illustrate this, the "Seven Seas" example partition contains such group entries below "ou=groups,o=sevenSeas". Here the entry of a group describing the HMS Bounty crew (before the mutiny) in LDIF format.
+
+ dn: cn=HMS Bounty,ou=crews,ou=groups,o=sevenSeas
+ objectclass: groupOfUniqueNames
+ objectclass: top
+ cn: HMS Bounty
+ uniquemember: cn=William Bligh,ou=people,o=sevenSeas
+ uniquemember: cn=Fletcher Christian,ou=people,o=sevenSeas
+ uniquemember: cn=John Fryer,ou=people,o=sevenSeas
+ ...
+
+In such a scenario, a user, who is directly or indirectly member of a certain group is permitted to do something. The software component acts as a normal LDAP client and determines group belonging with the help of ordinary search operations. This is widely used but has nothing to do with the authorization for directory operations as described in this section (except that the client needs the permission to search the data). Learn more about best practices in this area in the article [Practices in Directory Groups](http://middleware.internet2.edu/dir/groups/docs/internet2-mace-dir-groups-best-practices-200210.htm). Further examples in this guide are the Tomcat and Apache HTTPD integration sections.
+
+## Default authorization behavior for directory operations
+
+Without access controls enabled all entries are accessible and alterable by all: even anonymous users. There are however some minimal built-in rules for protecting users and groups within the server without having to turn on the ACI subsystem.
+
+### Sample data within "ou=users,ou=system"
+
+In addition to our brave sailors below _ou=people,o=sevenSeas_, assume the following to entries present within _ou=users,ou=system_:
+
+![Authorization Sample Entries](images/authorization-sample-entries.png)
+
+ dn: cn=Tori Amos,ou=users,ou=system
+ objectclass: person
+ objectclass: top
+ sn: Amos
+ cn: Tori Amos
+ userpassword: amos
+
+ dn: cn=Kate Bush,ou=users,ou=system
+ objectclass: person
+ objectclass: top
+ sn: Bush
+ cn: Kate Bush
+ userpassword: bush
+
+They are used in the following examples, in conjunction with _o=sevenSeas_, to describe the default authorization rules.
+
+### Rules and sample operations
+
+Without ACIs the server automatically protects, hides, the admin user from everyone but the admin user. Here a sample search operation in order to demonstrate this protection. The same command is submitted three times with different users.
+
+ $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
+ -b "ou=system" -s one "(uid=admin)" dn
+ version: 1
+ dn: uid=admin,ou=system
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -b "ou=system" -s one "(uid=admin)" dn
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Tori Amos,ou=users,ou=system" -w amos \\
+ -b "ou=system" -s one "(uid=admin)" dn
+
+ $
+
+Users cannot see other user entries under the 'ou=users,ou=system' entry. So placing new users there automatically protects them. Placing new users anywhere else exposes them.
+
+ $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
+ -b "ou=users,ou=system" -s one "(objectclass=*)" dn
+ version: 1
+ dn: cn=Tori Amos,ou=users,ou=system
+
+ dn: cn=Kate Bush,ou=users,ou=system
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Kate Bush,ou=users,ou=system" -w bush \\
+ -b "ou=users,ou=system" -s one "(objectclass=*)" dn
+ version: 1
+ dn: cn=Kate Bush,ou=users,ou=system
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -b "ou=users,ou=system" -s one "(objectclass=*)" dn
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -b "ou=people,o=sevenSeas" -s one "(objectclass=*)" dn
+ version: 1
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+
+ dn: cn=William Bush,ou=people,o=sevenSeas
+
+ dn: cn=Thomas Masterman Hardy,ou=people,o=sevenSeas
+
+ dn: cn=Cornelius Buckley,ou=people,o=sevenSeas
+
+ dn: cn=William Bligh,ou=people,o=sevenSeas
+ ...
+ $
+
+Groups defined using _groupOfNames_ or _groupOfUniqueNames_ under the 'ou=groups,ou=system' are also protected from access or alteration by anyone other than the admin user. Again this protection is not allowed anywhere else but under these entries.
+
+### Is this sufficient?
+
+For simple configurations the described rules should provide adequate protection but it lacks flexibility. For advanced configurations users should enable the ACI subsystem. This however shuts down access to everything by everyone except the admin user which bypasses the ACI subsystem. Directory administrators should look at the documentation on how to specify access control information in the Advanced User's Guide.
+
+## Simple example for the ACI subsystem
+
+As an appetizer for the stunning ACI subsystem (ACI = access control item) within ApacheDS, we provide a simple yet realistic example. It manifests the following requirements
+
+### Requirements met
+
+* Suffix "o=sevenSeas" used as Access Control Specific Area
+* User "cn=Horatio Nelson,ou=people,o=sevenSeas" should be able to perform all operations (delete, add, ...) below the base "o=sevenSeas"
+* Other users and anonymous users should only be able to search and compare (no add, modify etc.)
+* Other users and anonymous users should not be able to read the userPassword attribute
+
+### Enable the ACI Subsystem
+
+The authorization (ACI) subsystem is disabled by default. It is recommended that you enable it using the _Apache Directory Studio_ configuration editor as follows :
+
+![Enable access control](images/enable-access-control.png)
+
+However, ACI subsystem can also be enabled with an ldapmodify operation. [This technique discussed in the Advanced User Guide](apacheds/advanced-ug/4.2.3-enabling-access-control.html).
+
+A restart of the server is necessary for this change to take effect.
+
+### Further configuration tasks to perform afterwards
+
+1. Create an operational attribute _administrativeRole_ with value "accessControlSpecificArea" in the entry "o=sevenSeas".
+2. Create a subentry subordinate to "o=sevenSeas" to grant all operations' permissions to "cn=Horatio Nelson,ou=people,o=sevenSeas", who acts as directory manager
+
+The subentry should contain the following attributes and values:
+
+ cn="sevenSeasAuthorizationRequirementsACISubentry"
+ subtreeSpecification="{}"
+ prescriptiveACI="{
+ identificationTag "directoryManagerFullAccessACI",
+ precedence 11,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ name { "cn=Horatio Nelson,ou=people,o=sevenSeas" }
+ },
+ userPermissions
+ {
+ {
+ protectedItems
+ {
+ entry, allUserAttributeTypesAndValues
+ },
+ grantsAndDenials
+ {
+ grantAdd, grantDiscloseOnError, grantRead,
+ grantRemove, grantBrowse, grantExport, grantImport,
+ grantModify, grantRename, grantReturnDN,
+ grantCompare, grantFilterMatch, grantInvoke
+ }
+ }
+ }
+ }
+ }"
+
+3. A new attribute value should added to the previously created Subentry's prescriptiveACI attribute to grant search and compare permissions to all users.
+
+The new value:
+
+ prescriptiveACI="{
+ identificationTag "allUsersSearchAndCompareACI",
+ precedence 10,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ allUsers
+ },
+ userPermissions
+ {
+ {
+ protectedItems
+ {
+ entry, allUserAttributeTypesAndValues
+ },
+ grantsAndDenials
+ {
+ grantRead, grantBrowse, grantReturnDN,
+ grantCompare, grantFilterMatch, grantDiscloseOnError
+ }
+ }
+ }
+ }
+ }"
+
+4. A new attribute value should added to the previously created Subentry's prescriptiveACI attribute to deny search and compare permissions for _userPassword_ attribute to all users.
+
+The new value:
+
+ prescriptiveACI="{
+ identificationTag "preventAllUsersFromReadingUserPasswordAttributeACI",
+ precedence 10,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ allUsers
+ },
+ userPermissions
+ {
+ {
+ protectedItems
+ {
+ attributeType { userPassword }
+ },
+ grantsAndDenials
+ {
+ denyRead, denyCompare, denyFilterMatch
+ }
+ }
+ }
+ }
+ }"
+
+The two values given in 3 and 4 can be combined in a single value as:
+
+ prescriptiveACI="{
+ identificationTag "allUsersACI",
+ precedence 10,
+ authenticationLevel none,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ allUsers
+ },
+ userPermissions
+ {
+ {
+ protectedItems { entry, allUserAttributeTypesAndValues },
+ grantsAndDenials { grantRead, grantBrowse, grantReturnDN,
+ grantCompare, grantFilterMatch, grantDiscloseOnError }
+ },
+ {
+ protectedItems { attributeType { userPassword } },
+ grantsAndDenials { denyRead, denyCompare, denyFilterMatch }
+ }
+ }
+ }
+ }"
+
+### LDIF for this configuration
+
+The following LDIF file ([^authz_sevenSeas.ldif]) provides a set of changes made to directory entries in the "Seven Seas" data. In total it performs the steps described above.
+
+ # File authz_sevenSeas.ldif
+ #
+ # Create an operational attribute "administrativeRole"
+ # with value "accessControlSpecificArea" in the entry "o=sevenSeas".
+ #
+ dn: o=sevenSeas
+ changetype: modify
+ add: administrativeRole
+ administrativeRole: accessControlSpecificArea
+
+ # Create a subentry subordinate to "o=sevenSeas" to grant all operations' permissions
+ # to "cn=Horatio Nelson,ou=people,o=sevenSeas", to grant search and compare permissions
+ # to all users and to deny search and compare permissions for userPassword attribute to all users.
+ #
+ dn: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
+ changetype: add
+ objectclass: top
+ objectclass: subentry
+ objectclass: accessControlSubentry
+ cn: sevenSeasAuthorizationRequirementsACISubentry
+ subtreeSpecification: {}
+ prescriptiveACI: {
+ identificationTag "directoryManagerFullAccessACI",
+ precedence 11,
+ authenticationLevel simple,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ name { "cn=Horatio Nelson,ou=people,o=sevenSeas" }
+ },
+ userPermissions
+ {
+ {
+ protectedItems
+ {
+ entry, allUserAttributeTypesAndValues
+ },
+ grantsAndDenials
+ {
+ grantAdd, grantDiscloseOnError, grantRead,
+ grantRemove, grantBrowse, grantExport, grantImport,
+ grantModify, grantRename, grantReturnDN,
+ grantCompare, grantFilterMatch, grantInvoke
+ }
+ }
+ }
+ }
+ }
+ prescriptiveACI: {
+ identificationTag "allUsersACI",
+ precedence 10,
+ authenticationLevel none,
+ itemOrUserFirst userFirst:
+ {
+ userClasses
+ {
+ allUsers
+ },
+ userPermissions
+ {
+ {
+ protectedItems { entry, allUserAttributeTypesAndValues },
+ grantsAndDenials { grantRead, grantBrowse, grantReturnDN,
+ grantCompare, grantFilterMatch, grantDiscloseOnError }
+ },
+ {
+ protectedItems { attributeType { userPassword } },
+ grantsAndDenials { denyRead, denyCompare, denyFilterMatch }
+ }
+ }
+ }
+ }
+
+To apply this configuration to the sample data partition, you can perform an _ldapmodify_ with the LDIF as agrument:
+
+ $ ldapmodify -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret -f authz_sevenSeas.ldif
+ modifying entry o=sevenSeas
+
+ adding new entry cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
+ $
+
+It is also possible to use graphical tools; some of them offer the feature to perform operations given in LDIF.
+
+## Verification, that it works
+
+After successfully applying the changes to the sample partition, one may ask how to check whether it works. We therefore perform some operations with the help of command line tools. Some will be permitted, some will not (and cause an appropriate error message). It would also be able to check this with the help of graphical tools (you might like to do this instead). But it is easier to document the parameters used with the help command line arguments.
+
+### Performing some search operations in order to read data
+
+Bind as user "William Bush" and search for entries which match "(uid=hhornblo)". Expected behavior: We are able to read the attributes of entry "cn=Horatio Hornblower,ou=people,o=sevenSeas" (the only entry which matches the filter). The password attribute should not be visible. It works as desired:
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -b "o=sevenSeas" -s sub "(uid=hhornblo)"
+ version: 1
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ mail: hhornblo@royalnavy.mod.uk
+ objectclass: person
+ objectclass: organizationalPerson
+ objectclass: inetOrgPerson
+ objectclass: top
+ cn: Horatio Hornblower
+ uid: hhornblo
+ givenname: Horatio
+ description: Capt. Horatio Hornblower, R.N
+ sn: Hornblower
+
+In the described configuration, the user "Horatio Nelson" acts as a directory manager below "o=sevenSeas". Hence he should basically be allowed to do everything. He should even be able to see other users' _userPassword_ values. In our case, the hash function _SHA_ was applied to them:
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -b "o=sevenSeas" -s sub "(objectclass=person)" uid userPassword
+ version: 1
+ dn: cn=Horatio Hornblower,ou=people,o=sevenSeas
+ userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
+ uid: hhornblo
+
+ dn: cn=William Bush,ou=people,o=sevenSeas
+ userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
+ uid: wbush
+
+ dn: cn=Thomas Quist,ou=people,o=sevenSeas
+ userpassword: {SHA}nU4eI71bcnBGqeO0t9tXvY1u5oQ=
+ uid: tquist
+ ...
+
+But "Horation Nelson" is not able to perform searches in other areas than "o=sevenSeas" to see the entries. Of course our global ApacheDS administrator "uid=admin,ou=system" is still able to see them:
+
+ $ ldapsearch -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -b "ou=system" -s sub "(objectclass=person)"
+
+ $ ldapsearch -h zanzibar -p 10389 -D "uid=admin,ou=system" -w secret \\
+ -b "ou=system" -s sub "(objectclass=person)"
+ version: 1
+ dn: uid=admin,ou=system
+ sn: administrator
+ cn: system administrator
+ objectClass: top
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ userpassword: secret
+ uid: admin
+ displayName: Directory Superuser
+
+ dn: cn=Tori Amos,ou=users,ou=system
+ cn: Tori Amos
+ userpassword: amos
+ objectclass: person
+ objectclass: top
+ sn: Amos
+ ...
+
+### Trying to manipulate data
+
+Until now the authorization only hided data (entries, attributes) from users with insufficient access rights. Let's perform some operations which try to manipulate the directory data!
+
+#### Adding an entry
+
+First we try to add a new user to the "Seven Seas" partition. The data for the entry is inspired by "Peter Pan" and provided by this LDIF file ([Captain hook](resources/captain-hook.ldif)):
+
+ # File captain_hook.ldif
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ objectclass: inetOrgPerson
+ objectclass: organizationalPerson
+ objectclass: person
+ objectclass: top
+ cn: James Hook
+ description: A pirate captain and Peter Pan's nemesis
+ sn: Hook
+ mail: jhook@neverland
+ userpassword: peterPan
+
+An anonymous user is not allowed to create new entries, as the following error message shows:
+
+ $ ldapmodify -h zanzibar -p 10389 -a -f captain_hook.ldif
+ adding new entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_add: Insufficient access
+ ldap_add: additional info: failed to add entry cn=James Hook,ou=people,o=sevenSeas: null
+ $
+
+The same holds true for all "Seven Seas"-user other than "Horatio Nelson". The latter is permitted to do so:
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -a -f captain_hook.ldif
+ adding new entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_add: Insufficient access
+ ldap_add: additional info: failed to add entry cn=James Hook,ou=people,o=sevenSeas: null
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -a -f captain_hook.ldif
+ adding new entry cn=James Hook,ou=people,o=sevenSeas
+ $
+
+Afterwards a new entry is successfully created within the "Seven Seas" partition by user "Horatio Nelson". The '+' sign in the attributes list of the _ldapsearch_ command causes ApacheDS to return the operational attributes, which demonstrate this.
+
+
+ $ ldapsearch -h zanzibar -p 10389 -b "o=sevenSeas" -s sub "(cn=James Hook)" +
+ version: 1
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ accessControlSubentries: cn=sevenSeasAuthorizationRequirementsACISubentry,o=sevenSeas
+ creatorsName: cn=Horatio Nelson,ou=people,o=sevenSeas
+ createTimestamp: 20061203140109Z
+
+#### Modifying an entry
+
+As a further example which tries to write to the directory, we add a new value to the description attribute of the freshly created entry for Captain Hook. With a change entry in an LDIF file, it looks like this (file [Captain Hook](resources/captain-hook-modify.ldif)):
+
+ # File captain_hook_modify.ldif
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ changetype: modify
+ add: description
+ description: Wears an iron hook in place of his right hand
+ -
+
+Performing the modification with the _ldapmodify_ command line tool again fails for users other than "Horation Nelson" (who is allowed to due to the authorization configuration) and "uid=admin,ou=system".
+
+ $ ldapmodify -h zanzibar -p 10389 -f captain_hook_modify.ldif
+ modifying entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_modify: Insufficient access
+ ldap_modify: additional info: failed to modify entry cn=James Hook,ou=people,o=sevenSeas: null
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -f captain_hook_modify.ldif
+ modifying entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_modify: Insufficient access
+ ldap_modify: additional info: failed to modify entry cn=James Hook,ou=people,o=sevenSeas: null
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -f captain_hook_modify.ldif
+ modifying entry cn=James Hook,ou=people,o=sevenSeas
+
+#### Deleting an entry
+
+Now it is finale time. A demonstration on how to delete the villain's entry from the directory. With an LDIF file ([Captain hook delete](resources/captain-hook-delete.ldif)) with an appropriate change entry, this can easily be accomplished, if the bind user is allowed to do so.
+
+ # File captain_hook_delete.ldif
+ dn: cn=James Hook,ou=people,o=sevenSeas
+ changetype: delete
+
+Applying this file with the help of _ldapmodify_ results in a behavior comparable to the modification. Anonymous or "normal" users (like "William Bush") are not permitted to delete Captain Hook's entry. The user "Horatio Nelson", our directory manager for "Seven Seas", is:
+
+ $ ldapmodify -h zanzibar -p 10389 -f captain_hook_delete.ldif
+ deleting entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_delete: Insufficient access
+ ldap_delete: additional info: failed to delete entry cn=James Hook,ou=people,o=sevenSeas: null
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=William Bush,ou=people,o=sevenSeas" -w pass \\
+ -f captain_hook_delete.ldif
+ deleting entry cn=James Hook,ou=people,o=sevenSeas
+ ldap_delete: Insufficient access
+ ldap_delete: additional info: failed to delete entry cn=James Hook,ou=people,o=sevenSeas: null
+
+ $ ldapmodify -h zanzibar -p 10389 -D "cn=Horatio Nelson,ou=people,o=sevenSeas" -w pass \\
+ -f captain_hook_delete.ldif
+ deleting entry cn=James Hook,ou=people,o=sevenSeas
+ $
+
+The entry "cn=James Hook,ou=people,o=sevenSeas" has been successfully deleted from the partition. Our little demonstration on how the ACI subsystem with a realistic configuration behaves end here. Learn more about it in the Advanced User's Guide.
+
+## Resources
+
+* [Practices in Directory Groups](http://middleware.internet2.edu/dir/groups/docs/internet2-mace-dir-groups-best-practices-200210.htm) describes how to use groups within LDAP directories. Highly recommended.
+* The [ApacheDS v1.0 Advanced User's Guide](../advanced-users-guide.html) provides a detailed authorization chapter
+* [RFC 2849](http://www.faqs.org/rfcs/rfc2849.html) The LDAP Data Interchange Format (LDIF) is used extensively in this section
diff --git a/source/apacheds/basic-ug/3.3-enabling-ssl.md b/source/apacheds/basic-ug/3.3-enabling-ssl.md
new file mode 100644
index 0000000..547c0f5
--- /dev/null
+++ b/source/apacheds/basic-ug/3.3-enabling-ssl.md
@@ -0,0 +1,268 @@
+---
+title: 3.3 - How to enable SSL
+navPrev: 3.2-basic-authorization.html
+navPrevText: 3.2 - Basic authorization
+navUp: 3-basic-security.html
+navUpText: 3 - Basic Security
+navNext: 4-integrating-apacheds.html
+navNextText: 4 - Integrating ApacheDS with other programs
+---
+
+# 3.3 - How to enable SSL
+
+This section describes the transport layer security options for LDAP, and especially how to enable LDAPS on ApacheDS.
+
+{{% toc %}}
+
+## Transport layer security and LDAP
+
+Several requirements related to security can be easily accomplished with the help of *SSL* technology (Secure Socket Layer) or its standardized successor *TLS* (Transport Layer Security, RFC 2246). Among these are the protection of data against eavesdropping and modification, when on transit between client and server (data integrity), and the authentication of a server toward a client with the help of a certificate.
+
+There are two approaches to utilize these technologies in the LDAP world.
+
+* ldaps (LDAP over SSL/TLS, generally on port 636)
+* StartTLS (extended operation)
+
+The first option is comparable to HTTPS and inserts an SSL/TLS layer between the TCP/IP protocol and LDAP. Establishing a connection like this is normally provided via a different server port (port 636 is common, it is a well-known port, like port 389 is for LDAP). In URIs the schema "ldaps" is specified (for instance _ldaps://zanzibar:636/_) instead of "ldap". It is possible to write programs which switch between ldap and ldaps without changes in the source, if the connection data is configured external.
+
+In the second option a client establishes at first a "normal" LDAP connection. With a special request (extended operation StartTLS) it tries to switch to secure communication afterwards. It is not necessary to change the port for this, the communication continues on the established connection. The client may go back to the original connection state ("TLS Closure Alert"), in doing so protecting only selected parts of the communication.
+
+Both ways to utilize SSL/TLS within LDAP require the configuration of the server with an appropriate certificate.
+
+<DIV class="warning" markdown="1">
+**LDAPS** is considered as deprecated. You should always favor startTLS instead.
+</DIV>
+
+## Server configuration
+
+ApacheDS 2.0 supports both options and requires a JDK 1.5 or above. The feature is enabled by default, but you may need to configure it. There are some steps to follow in order to obtain a SSL enabled server.
+
+<DIV class="note" markdown="1">
+In order to keep it simple for beginners, you don't need any certificate to get LDAPS working. The latest version generates its own self signed certificate. From the user point of view, it's just a matter of enabling the ldaps service to get it working.
+
+However, if one wants to use a signed certificate, another configuration is needed, where you tell the server about the keystore to use, and the certificate password to use.
+</DIV>
+
+### In case you want ADS to generate the certificate
+
+There is nothing to do but enabling SSL and specifying the port to use in the server configuration file :
+
+![LDAPS configuration](images/studio-apacheds-configuration-ldaps.png)
+
+As soon as the "Enable LDAPS server" checkbox is checked, your server is LDAPS capable !
+
+### In case you want to use an external keystore
+
+A certificate is a signed public key (signed normally by a third party, a certificate authority, CA).
+
+There are different options
+- either you buy a certificate from a Certificate Authority (like Verisign, etc.), or you obtain one from your enterprise CA, if available
+- or you ask for a free certificate from [CACERT organisation](http://www.cacert.org/)
+- or you create your own certificate, self-signed or signed by your private CA, which will not be trusted.
+
+We will do it the last way (self-signed), primarily because it's easy and fast (you won't have to pay nor to wait to obtain your certificate)
+
+#### Key creation
+
+First it is necessary to create a key pair (public/private key) for your server, _zanzibar_ in our case. One option is to use the JDK tool _keytool_ for this task. In the following example, we use these options
+
+| Command Option | Value | Description |
+|:-:|:-:|---|
+| -genkey | - | Command to generate a key pair |
+| -keyalg | "RSA" | Algorithm to be used to generate the key pair, in our case, default is "DSA" |
+| -dname | "cn=zanzibar, ou=ApacheDS, o=ASF, c=US" | The X.500 Distinguished Name to be associated with alias, used as the issuer and subject fields in the self-signed certificate |
+| -alias | zanzibar | Name to refer the entry within the keystore |
+| -keystore | zanzibar.ks | Keystore file location |
+| -storepass | secret | Password used to protect the integrity of the keystore |
+| -validity | 730 | Number of days for which the certificate should be considered valid, default is 90 |
+
+Learn more about keytool at the [manpage](http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html).
+
+ $ keytool -genkey -keyalg "RSA" -dname "cn=zanzibar, ou=ApacheDS, o=ASF, c=US" \\
+ -alias zanzibar -keystore zanzibar.ks -storepass secret -validity 730
+ Enter key password for <zanzibar>
+ (RETURN if same as keystore password):
+ $ ls -l
+ total 4
+ -rw-r--r-- 1 stefan users 1275 Jun 10 20:42 zanzibar.ks
+ $ keytool -list -keystore zanzibar.ks
+ Enter keystore password: secret
+
+ Keystore type: jks
+ Keystore provider: SUN
+
+ Your keystore contains 1 entry
+
+ zanzibar, Jun 10, 2007, keyEntry,
+ Certificate fingerprint (MD5): 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
+ $
+
+Another option is to use graphical tools for key creation like [Portecle](http://portecle.sourceforge.net/), which is basically a user-friendly front-end for keytool with comparable functionality. For a first impression see a screen shot below.
+
+![Portecle Keystore](images/portecle-with-keystore.png)
+
+#### Configuring ApacheDS to use this external keystore
+
+Enabling SSL in Apache Directory Server and using the key pair created as above is quite easy. Simply put the keystore file in the _conf_ directory of ApacheDS, and enable ldaps. Then you just have to setup the configuration using _Apache Directory Studio_, feeling the required input boxes, as shown on the following picture :
+
+![Keystore Configuration](images/keystore-configuration.png)
+
+The following properties were used :
+
+| Property | Default Value | Description |
+|:-:|:-:|---|
+| keystoreFile | none | Path of the X509 (or JKS) certificate file for LDAPS |
+| certificatePassword | changeit | Password which is used to load the LDAPS certificate file |
+| port | 10636 | LDAPS TCP/IP port number to listen to |
+| enableSSL | true | Sets if SSL is enabled or not |
+
+After modification of the configuration, the server has to be restarted in order to take effect.
+
+## Verification, Clients
+
+After restarting the server, you should have a server offering both ldap and ldaps. How to verify whether it works?
+
+### Using Apache Directory Studio to connect
+
+Apache Directory Studio happily supports ldaps connections. Enter the connection data (hostname and port) and select "Use SSL encryption" from the dropdown, if you create or modify a connection:
+
+![Studio SSL](images/studio-ssl.png)
+
+Afterwards the connection behaves like LDAP does. No difference in functionality, but the transmission is secured by SSL.
+
+Because our self-signed certificate is not trustworthy, many tools will present a warning (as Studio). You will likely be able to view the certificate, and decide to continue (accepting the certificate always or this session only), like with web browsers.
+
+### Other clients, Java programs using JNDI
+
+If you use other graphical clients, the behavior will be comparable. Sometimes clients don't allow to connect to a server, if the certificate is not trustworthy. This is for instance the case for Java clients using JNDI.
+
+The following simple Java program tries to connect via JNDI/JSSE (Java Secure Socket Extension) and LDAPS to _ldaps://zanzibar:10636_
+
+ import java.util.Hashtable;
+ import javax.naming.*;
+ import javax.naming.directory.*;
+
+ public class ConnectWithLdaps {
+
+ public static void main(String[] args) throws NamingException {
+
+ Hashtable env = new Hashtable();
+
+ // Simple bind
+ env.put(Context.SECURITY_AUTHENTICATION, "simple");
+ env.put(Context.SECURITY_PRINCIPAL,
+ "cn=Horatio Hornblower,ou=people,o=sevenSeas");
+ env.put(Context.SECURITY_CREDENTIALS, "pass");
+
+ env.put(Context.INITIAL_CONTEXT_FACTORY,
+ "com.sun.jndi.ldap.LdapCtxFactory");
+ env.put(Context.PROVIDER_URL, "ldaps://zanzibar:636/o=sevenSeas");
+
+ DirContext ctx = new InitialDirContext(env);
+ NamingEnumeration enm = ctx.list("");
+
+ while (enm.hasMore()) {
+ System.out.println(enm.next());
+ }
+
+ enm.close();
+ ctx.close();
+ }
+ }
+
+It causes a _CommunicationException_, if the certificate is not trusted:
+
+ $ java ConnectWithLdaps
+ Exception in thread "main" javax.naming.CommunicationException:
+ simple bind failed: zanzibar:636
+ [Root exception is javax.net.ssl.SSLHandshakeException:
+ sun.security.validator.ValidatorException: PKIX path building failed:
+ sun.security.provider.certpath.SunCertPathBuilderException:
+ unable to find valid certification path to requested target]
+ at com.sun.jndi.ldap.LdapClient.authenticate(Unknown Source)
+ ...
+
+In order to make the client trust our server, one option is to share a self signed certificate.
+So we export the certificate (DER format) using keytool like this:
+
+ $ keytool -export -keystore zanzibar.ks -alias zanzibar -file zanzibar.cer
+ Enter keystore password: secret
+ Certificate stored in file <zanzibar.cer>
+ $ ls -l
+ total 6
+ -rw-r--r-- 1 stefan users 504 Jun 10 21:51 zanzibar.cer
+ -rw-r--r-- 1 stefan users 1275 Jun 10 20:42 zanzibar.ks
+ $
+
+Please note that you don't want to share the server keystore file itself with arbitrary clients, because it holds the private key. Instead we create a separate keystore _trusted.ks_ with the help of _keytool_. We import the certificate _zanzibar.cer_ like this:
+
+ $ keytool -import -file zanzibar.cer -alias zanzibar -keystore trusted.ks -storepass secret
+ Owner: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
+ Issuer: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
+ Serial number: 466c4611
+ Valid from: Sun Jun 10 20:42:25 CEST 2007 until: Tue Jun 09 20:42:25 CEST 2009
+ Certificate fingerprints:
+ MD5: 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
+ SHA1: C5:63:E0:DA:BB:C8:0E:E8:27:D0:91:1D:28:DD:11:BB:93:21:13:C9
+ Trust this certificate? [no]: yes
+ Certificate was added to keystore
+ $ keytool -list -keystore trusted.ks -storepass secret
+ Keystore type: jks
+ Keystore provider: SUN
+
+ Your keystore contains 1 entry
+
+ zanzibar, Jun 11, 2007, trustedCertEntry,
+ Certificate fingerprint (MD5): 95:4A:90:3D:69:09:64:84:C7:21:FD:F7:B8:82:11:8C
+ $
+
+Instead of using the command line version of keytool, it is also possible to perform the certificate export and import operations with Portecle or any other graphical frontend. This is for instance how the _trusted.ks_ files with the imported certificate looks like in Portecle.
+
+![Portecle with certificate](images/portecle-with-certificate.png)
+
+Clients may use this keystore in order to connect to the server. Therefore they can configure _trusted.ks_ as the trusted store via the environment like this:
+
+ $ java -Djavax.net.ssl.trustStore=trusted.ks ConnectWithLdaps
+ ou=people: javax.naming.directory.DirContext
+ ou=groups: javax.naming.directory.DirContext
+
+Another option would be to import the certificate in the default keystore of the JRE installation (within $JAVA_HOME/jre/lib/security). For a test certificate this proceeding is not appropriate.
+
+#### Troubleshooting
+
+In practice connection establishment with LDAP over SSL may lead to various problems. In order to eliminate the errors it is helpful to see communication-specific debug information. The system property _javax.net.debug_ is available for this task. The value "ssl" provides information about the certificates in the used key store, the server certificate, and the steps during establishing of the SSL connection (handshake):
+
+ $ java -Djavax.net.ssl.trustStore=trusted.ks -Djavax.net.debug=ssl ConnectWithLdaps
+ setting up default SSLSocketFactory
+ use default SunJSSE impl class: com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
+ class com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl is loaded
+ keyStore is :
+ keyStore type is : jks
+ keyStore provider is :
+ init keystore
+ init keymanager of type SunX509
+ trustStore is: trusted.ks
+ trustStore type is : jks
+ trustStore provider is :
+ init truststore
+ adding as trusted cert:
+ Subject: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
+ Issuer: CN=zanzibar, OU=ApacheDS, O=ASF, C=US
+ Algorithm: RSA; Serial number: 0x466c4611
+ Valid from Sun Jun 10 20:42:25 CEST 2007 until Tue Jun 09 20:42:25 CEST 2009
+
+ init context
+ trigger seeding of SecureRandom
+ done seeding SecureRandom
+ instantiated an instance of class com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
+ %% No cached client session
+ *** ClientHello, TLSv1
+ ...
+
+You should be able to determine any SSL-related configuration problem with the help of this log.
+
+## Resources
+
+* [Java Secure Socket Extension (JSSE)](http://java.sun.com/products/jsse/)
+* [Portecle](http://portecle.sourceforge.net) a free UI application for creating, managing and examining keystores
+* [SSL 3.0 Specification (Netscape)](http://wp.netscape.com/eng/ssl3/)
diff --git a/source/apacheds/basic-ug/4-integrating-apacheds.md b/source/apacheds/basic-ug/4-integrating-apacheds.md
new file mode 100644
index 0000000..533ef0b
--- /dev/null
+++ b/source/apacheds/basic-ug/4-integrating-apacheds.md
@@ -0,0 +1,14 @@
+---
+title: 4 - Integrating ApacheDS with other programs
+navPrev: 3.3-enabling-ssl.html
+navPrevText: 3.3 - How to enable SSL
+navUp: ../basic-user-guide.html
+navUpText: Basic User Guide
+---
+
+# 4 - Integrating ApacheDS with other programs
+
+In this chapter, we expose various environments that are depending on _Apache Directory Server_, and how to set those environments. As _Apache Directory Server_ is an **LDAP** server, it can be used to manage messaging users, web servers like **Tomcat**, users in a **Unix** environment, etc.
+
+## Table of content
+* [4.1 - Mozilla Thunderbird Integration](4.1-mozilla-thunderbird.html)
diff --git a/source/apacheds/basic-ug/4.1-mozilla-thunderbird.md b/source/apacheds/basic-ug/4.1-mozilla-thunderbird.md
new file mode 100644
index 0000000..adab9bd
--- /dev/null
+++ b/source/apacheds/basic-ug/4.1-mozilla-thunderbird.md
@@ -0,0 +1,82 @@
+---
+title: 4.1 - Mozilla Thunderbird Integration
+navPrev: 4-integrating-apacheds.html
+navPrevText: 4 - Integrating ApacheDS with other programs
+navUp: 4-integrating-apacheds.html
+navUpText: 4 - Integrating ApacheDS with other programs
+---
+
+# 4.1 - Mozilla Thunderbird Integration
+
+In this section you will learn how to integrate Apache Directory Server into a mail client in order to use the data as an address book. Mozilla Thunderbird is used as an example.
+
+{{% toc %}}
+
+## E-Mail clients and Mozilla Thunderbird
+
+Integrating an LDAP server in an E-Mail client is a very traditionally task, because directories are commonly used as user repositories within companies and organizations. Contact data is stored for all users of the enterprise, and it is quite common to build the companies online phone/address book on this directory. These address books are often web based application within the intranet. But many E-Mail clients allow to connect to an LDAP based directory directly and use its data as an address book. This seamless integration provides better user experience. One of these clients is Mozilla Thunderbird. Other E-Mail clients that support LDAP integration for address books include [Microsoft Outlook Expess](http://www.microsoft.com/windows/oe/), [Eudora Email](http://www.eudora.com/) and [IBM Lotus Notes](http://www.ibm.com/software/lotus/).
+
+Technically, a mail program acts as a normal LDAP client, as described in earlier sections (i.e. the client connects to the server and performs LDAP search operations). Therefore the parameters you have to specify are the same. Main difference between searches with E-Mail clients and searches with LDAP Browsers like Softerra or JXplorer is that most of the complexity of the LDAP search is hidden to the user. Hence these tools are easier to use, but less powerful.
+
+### Mozilla Thunderbird
+
+Mozilla Thunderbird is a popular open source E-Mail client which supports many platforms. Actually it is more than just an E-Mail client (e.g. a news client as well). Features include junk mail control and RSS reading. Learn more about this software at the projects Homepage: [Mozilla Thunderbird](http://www.mozilla.org/products/thunderbird/).
+
+Within this lesson we use Thunderbird primarily because of its broad support for different operation systems and hardware platforms (and because it allows the integration of LDAP servers as address books, of course). You may use other E-Mail clients as well. It is likely that that allow the integration of LDAP directories as well, and even that the configuration is similar to Thunderbird. Check your product documentation for details.
+
+## Prerequisites
+
+We assume that you have Mozilla Thunderbird installed on your system (or you use another E-Mail client and are willing to assimilate the instructions to your situation). You may wish to download the software at the homepage ([Mozilla Thunderbird](http://www.mozilla.org/products/thunderbird/)) and install it, before proceed with this lesson.
+Furthermore you need an LDAP server up and running, which address data should be used as an address book within your E-Mail client. For the instructions it is assumed that you have installed Apache Directory Server as described in the first trail and loaded our sample data. To sum it up the following is assumed for the environment:
+* Apache Directory runs on host *zanzibar*. LDAP and listens to port *10389*
+* Anonymous access to the directory is allowed
+* Data is imported as described in section 2, Base DN is *o=sevenSeas*
+
+You may use this lesson as a blueprint to integrate other directory servers as well. At least you need the data given above in *bold*.
+
+## Define Apache Directory Server as an address book
+
+### Open the address book
+
+After starting Mozilla Thunderbird on your workstation, go to the address book by
+* clicking the adress book icon or
+* activation of the corresponding menu item ("Tools" -- "Address Book") or
+* pressing Ctrl+2
+
+![Thunderbirs open addressbook](images/thunderbird-open-adressbook.png)
+
+### Define a new LDAP directory
+
+Within the adress book window open the dialog to define a new LDAP directory by
+* activation of the corresponding menu item ("File" -- "New" -- "LDAP Directory...")
+
+![thunderbird new ldap directory](images/thunderbird-new-ldap-directory-menu.png)
+
+Thunderbird opens a dialog with three tabbed panes to provide the data of the directory.
+
+### Provide connection data
+
+Within the "General" tab, enter basic connection data to your directory:
+* Name: A name which is used by Thunderbird within the UI, e.g. "Seven Seas"
+* Hostname: the hostname or IP address of the server, "zanzibar" in our case
+* Base DN: Search base for looking up people, we choose "ou=people,o=sevenSeas"
+* Port number: The port the LDAP provider of Apache Directory Server is listening on, "10389" in our case
+
+![Thunderbird new ldap](images/thunderbird-new-ldap-1.png)
+
+In this example we do not provide a Bind DN but let Thunderbird look up the users within our directory anonymously. Apache Directory Server should be appropriately configured for that, or you have to provide a user here.
+
+The advance tab of the dialog provides input fields for result set limits, search scope and search filter. In our example we perform a search with subtree scope and a maximum number of 100 entries within the result set. The search filter restricts the results to person entries only.
+
+![Thunderbird new ldap](images/thunderbird-new-ldap-2.png)
+
+You probably have noticed that the input fields in the two tabbed panes corresponds exactly to the parameters for an LDAP search operation as described in lesson [Search the directory] of this trail.
+
+## Searching your new address book
+
+![Thunderbird new ldap](images/thunderbird-adressbook.png)
+
+## Resources
+
+ * [An introduction to Thunderbird](http://opensourcearticles.com/articles/introduction_to_thunderbird), Open Source Articles
+ * [LDAP Attribute Mapping](http://www.mozilla.org/projects/thunderbird/specs/ldap.html) for Mozilla Thunderbird
\ No newline at end of file
diff --git a/source/apacheds/basic-user-guide.md b/source/apacheds/basic-user-guide.md
new file mode 100644
index 0000000..b3748cf
--- /dev/null
+++ b/source/apacheds/basic-user-guide.md
@@ -0,0 +1,50 @@
+---
+title: Basic User Guide
+---
+
+# ApacheDS v2.0 Basic User's Guide
+
+This guide is primarily for people new to ApacheDS 2.0. If you plan to use the server as is, maybe even for your first LDAP experience, you'll (hopefully) find all information necessary to do so. Only basic configuration tasks are covered. Learn more about the options you have (and many other things) in the [ApacheDS v2.0 Advanced User's Guide](advanced-user-guide.html).
+
+**LDAP** is a complex set of technology, _Apache Directory Server_ is offering more than just **LDAP**, so it's good to get a quick grip on the server.
+
+## About this guide
+
+Getting started. Learn how to download and install ApacheDS 2.0 on different platforms, connect to it with various clients (graphical tools among others), manipulate the data within your directory and integrate ApacheDS with other software. The same sample data, provided as a download, is used through the whole guide.
+
+## Table of contents
+
+* [1 - How to begin](basic-ug/1-how-to-begin.html)
+ * [1.1 - What Apache Directory Server is](basic-ug/1.1-what-apacheds-is.html)
+ * [1.2 - Some Background. Directories, directory services and LDAP](basic-ug/1.2-some-background.html)
+ * [1.3 - Installing and starting the server](basic-ug/1.3-installing-and-starting.html)
+ * [1.4 - Basic configuration tasks](basic-ug/1.4-basic-configuration-tasks.html)
+ * [1.4.1 - Changing the server port for LDAP](basic-ug/1.4.1-changing-server-port.html)
+ * [1.4.2 - Changing the admin password](basic-ug/1.4.2-changing-admin-password.html)
+ * [1.4.3 - Adding your own partition](basic-ug/1.4.3-adding-partition.html)
+ * [1.4.4 - Configure logging](basic-ug/1.4.4-configure-logging.html)
+ * [1.4.5 - Enable and disable anonymous access](basic-ug/1.4.5-anonymous-access.html)
+ * [1.5 - About the sample configurations and sample directory data](basic-ug/1.5-sample-configuration.html)
+ * [1.6 - Backup/Restore](basic-ug/1.6-backup-restore.html)
+* [2 - Handling of data within your directory](basic-ug/2-handling-data.html)
+ * [2.1 - Data modification](basic-ug/2.1-data-modification.html)
+ * [2.1.1 - Adding Entries](basic-ug/2.1.1-adding-entries.html)
+ * [2.1.2 - Deleting Entries](basic-ug/2.1.2-deleting-entries.html)
+ * [2.2 - Searching Data](basic-ug/2.2-searching-data.html)
+ * [2.2.1 - Simple search](basic-ug/2.2.1-simple-search.html)
+ * [2.2.2 - More search options](basic-ug/2.2.2-more-search-options.html)
+ * [2.3 - Introducing the Schema ](basic-ug/2.3-introducing-schema.html)
+ * [2.3.1 - Adding Schema Elements](basic-ug/2.3.1-adding-schema-elements.html)
+ * [2.3.2 - Enabling Schema](basic-ug/2.3.2-enabling-schema.html)
+* [3 - Basic Security](basic-ug/3-basic-security.html)
+ * [3.1 - Authentication options](basic-ug/3.1-authentication-options.html)
+ * [3.2 - Basic authorization](basic-ug/3.2-basic-authorization.html)
+ * [3.3 - How to enable SSL](basic-ug/3.3-enabling-ssl.html)
+* [4 - Integrating ApacheDS with other programs](basic-ug/4-integrating-apacheds.html)
+ * [4.1 - Mozilla Thunderbird](basic-ug/4.1-mozilla-thunderbird.html)
+
+### Feedback welcome!
+
+We are quite interested to improve the content of this guide. Feel free to provide us feedback:
+
+![email](../images/email.png) [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
diff --git a/source/apacheds/coding-standards.md b/source/apacheds/coding-standards.md
new file mode 100644
index 0000000..ca0566b
--- /dev/null
+++ b/source/apacheds/coding-standards.md
@@ -0,0 +1,155 @@
+---
+title: Coding Standards
+---
+
+# Coding Standards
+
+Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enfore the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
+
+
+```java
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+```
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A descrption of this class/interface
+* an *author* tag which should be :
+
+```java
+@author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+```
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
+* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please !
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningfull names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+```java
+...
+int result = myMethod( param1, param2 )
+
+if ( result > 0 )
+{
+ // do something
+}
+...
+```
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
diff --git a/source/apacheds/configuration/ads-2.0-configuration.md b/source/apacheds/configuration/ads-2.0-configuration.md
new file mode 100644
index 0000000..756a426
--- /dev/null
+++ b/source/apacheds/configuration/ads-2.0-configuration.md
@@ -0,0 +1,960 @@
+---
+title: ADS 2.0 configuration
+---
+
+<a name="ADS2.0configuration-Introduction"></a>
+# Introduction
+
+ADS 2.0 configuration has been completely reworked since 1.0 and 1.5
+versions. While those two versions were XML based, we decided to store the
+new configuration in the DiT (Directory Information Tree).
+
+It's now available either through an LDAP browser, programatically using an
+LDAP API or simply by editing the LDIF files stored on the disk.
+
+<a name="ADS2.0configuration-Configurationstructure"></a>
+# Configuration structure
+
+ADS is more than a *LDAP* server. It's also a *Kerberos* server, a *DNS*
+Server and a *DHCP* server. In other words, we have to define a
+configuration for many servers, some of them being backed by a *Directory
+Service*.
+
+We can consider that the main service is the *Directory Service*, on top of
+which we have servers. Each server has a specific network configuration. We
+will expose the associated configuration.
+
+<a name="ADS2.0configuration-UsingApacheDirectoryStudiotomanagetheconfiguration"></a>
+## Using Apache DirectoryStudio to manage the configuration
+
+The easiest way to manage a server configuration is to use Studio for that.
+Defining a new server will allow you to configure it, but you can also
+modify an existing server's configuration, as soon as you can connect on to
+this server. Let's see how we process in both cases.
+
+<a name="ADS2.0configuration-Newserverconfiguration"></a>
+### New server configuration
+
+You can define a brand new server configuration using Studio. All you have
+to do is :
+- to create a new Server instance
+- modify it's configuration
+- save the configuration as a file (ldif)
+- move this ldif file in the installed server workspace at the right place
+(under the configuration partition)
+
+<a name="ADS2.0configuration-Creationofanewserver"></a>
+#### Creation of a new server
+
+Click on the 'New Server' icon :
+
+
+![New server icon](../../images/NewServer.png)
+
+This will popup this window :
+
+![New server creation](../../images/NewServerCreation.png)
+
+Select the type of server you want to configure (here, 2.0) and name your
+server.
+
+<a name="ADS2.0configuration-Configurationoverview"></a>
+#### Configuration overview
+
+By double-clicking on the created server, you will see an overview of the
+current configuration (all the value are default values at this point) :
+
+![Overview](../../images/Overview.png)
+
+You can modify the server port here, and access to the advanced
+configurations from this screen.
+
+<a name="ADS2.0configuration-LDAP/LDAPSconfiguration"></a>
+#### LDAP/LDAPS configuration
+
+The LDAP/LDAPS tab let you configure all the SASL and TLS configuration,
+plus the server limits :
+
+![Ldap Ldaps](../../images/LdapLdaps.png)
+
+We manage two kind of limits :
+- The maximum time the server will take to process a request (when this
+time has been expired, the request will be stopped)
+- The maximum number of entries we will return
+
+<a name="ADS2.0configuration-Kerberosconfiguration"></a>
+#### Kerberos configuration
+In this tab, you can setup all the parameters needed to configure your
+Kerberos server :
+
+![Kerberos](../../images/Kerberos.png)
+
+<a name="ADS2.0configuration-Partitionconfiguration"></a>
+#### Partition configuration
+
+This is where you add new partitions and modify them.
+
+There are a few importants elements to configure for a partition :
+- its ID, which is an external name
+- its Suffix, which must be a valid DN
+- the cache size used for this partition (it's the number of page that will
+be kept in memory, considering that a page may contain more than one entry)
+
+Then you also have to configure the index used by this partition. Some of
+them are mandatory (*apacheRdn*, *apacheSubLevel*, *apachePresence*,
+*apacheOneLevel*, *apacheOneAlias*, *apacheSubAlias*, *apacheAlias*,
+*objectClass*, *entryUuid*, *entryCsn*), you can just modify their cache,
+all the others are user index, you have to create them. Each index is
+associated with an existing AttributeType.
+
+![Partition](../../images/Partition.png)
+
+<a name="ADS2.0configuration-Replication"></a>
+#### Replication
+Not yet available
+
+<a name="ADS2.0configuration-Modifyinganexistingserverconfiguration"></a>
+### Modifying an existing server configuration
+
+The server should accept live modification. If this is the case, you just
+have to connect on the server and to modify it.
+
+<a name="ADS2.0configuration-DiTconfigurationstructure"></a>
+## DiT configuration structure
+
+We need to define a directory tree to store the configuration.
+
+Here is the existing structure, where we have defined one *LDAP* server
+(_ldapServer1_), backed by one *Directory Service* (_DS1_), and two
+associated transports (*ldapSrv1* and *ldapsSrv1*) :
+
+
+ ou=config
+ |
+ +--ads-directoryServiceId=default
+ |
+ +--ads-changeLogId=defaultChangeLog
+ |
+ +--ads-journalId=defaultJournal
+ |
+ +--ou=interceptors
+ | |
+ | +--ads-interceptorId=aciAuthorizationInterceptor
+ | |
+ | +--ads-interceptorId=authenticationInterceptor
+ | | |
+ | | +--ou=authenticators
+ | | | |
+ | | | +--ads-authenticatorid=anonymousauthenticator
+ | | | |
+ | | | +--ads-authenticatorid=simpleauthenticator
+ | | | |
+ | | | +--ads-authenticatorid=strongauthenticator
+ | | |
+ | | +--ou=passwordPolicies
+ | | |
+ | | +--ads-pwdId=default
+ | |
+ | +--ads-interceptorId=collectiveAttributeInterceptor
+ | |
+ | +--ads-interceptorId=defaultAuthorizationInterceptor
+ | |
+ | +--ads-interceptorId=eventInterceptor
+ | |
+ | +--ads-interceptorId=exceptionInterceptor
+ | |
+ | +--ads-interceptorId=keyDerivationInterceptor
+ | |
+ | +--ads-interceptorId=normalizationInterceptor
+ | |
+ | +--ads-interceptorId=operationalAttributeInterceptor
+ | |
+ | +--ads-interceptorId=passwordHashingInterceptor
+ | |
+ | +--ads-interceptorId=referralInterceptor
+ | |
+ | +--ads-interceptorId=schemaInterceptor
+ | |
+ | +--ads-interceptorId=subentryInterceptor
+ | |
+ | +--ads-interceptorId=triggerInterceptor
+ |
+ +--ou=partitions
+ | |
+ | +--ads-partitionId=system
+ | | |
+ | | +--ou=indexes
+ | | |
+ | | +--ads-indexAttributeId=apacheRdn
+ | | |
+ | | +--ads-indexAttributeId=apacheSubLevel
+ | | |
+ | | +--ads-indexAttributeId=apachePresence
+ | | |
+ | | +--ads-indexAttributeId=apacheOneLevel
+ | | |
+ | | +--ads-indexAttributeId=apacheOneAlias
+ | | |
+ | | +--ads-indexAttributeId=apacheSubAlias
+ | | |
+ | | +--ads-indexAttributeId=apacheAlias
+ | | |
+ | | +--ads-indexAttributeId=objectClass
+ | | |
+ | | +--ads-indexAttributeId=entryUUID
+ | | |
+ | | +--ads-indexAttributeId=entryCSN
+ | | |
+ | | +--ads-indexAttributeId=ou
+ | | |
+ | | +--ads-indexAttributeId=uid
+ | |
+ | +--ads-partitionId=example
+ | |
+ | +--ou=indexes
+ | |
+ | +--ads-indexAttributeId=apacheRdn
+ | |
+ | +--ads-indexAttributeId=apacheSubLevel
+ | |
+ | +--ads-indexAttributeId=apachePresence
+ | |
+ | +--ads-indexAttributeId=apacheOneLevel
+ | |
+ | +--ads-indexAttributeId=apacheOneAlias
+ | |
+ | +--ads-indexAttributeId=apacheSubAlias
+ | |
+ | +--ads-indexAttributeId=apacheAlias
+ | |
+ | +--ads-indexAttributeId=objectClass
+ | |
+ | +--ads-indexAttributeId=entryUUID
+ | |
+ | +--ads-indexAttributeId=entryCSN
+ | |
+ | +--ads-indexAttributeId=ou
+ | |
+ | +--ads-indexAttributeId=uid
+ | |
+ | +--ads-indexAttributeId=dc
+ | |
+ | +--ads-indexAttributeId=krb5PrincipalName
+ |
+ +--ou=servers
+ |
+ +--ads-serverId=changePasswordServer
+ | |
+ | +--ou=transports
+ | |
+ | +--ads-transportId=tcp
+ | |
+ | +--ads-transportId=udp
+ |
+ +--ads-serverId=dnsServer
+ | |
+ | +--ou=transports
+ | |
+ | +--ads-transportId=tcp
+ | |
+ | +--ads-transportId=udp
+ |
+ +--ads-serverId=httpServer
+ | |
+ | +--ou=transports
+ | | |
+ | | +--ads-transportid=http
+ | | |
+ | | +--ads-transportid=https
+ | |
+ | +--ou=httpWebApps
+ | |
+ | +--ads-id=testapp
+ |
+ +--ads-serverId=kerberosServer
+ | |
+ | +--ou=transports
+ | |
+ | +--ads-transportid=tcp
+ | |
+ | +--ads-transportid=udp
+ |
+ +--ads-serverId=ldapServer
+ | |
+ | +--ou=replConsumers
+ | |
+ | +--ou=transports
+ | | |
+ | | +--ads-transportid=ldap
+ | | |
+ | | +--ads-transportid=ldaps
+ | |
+ | +--ou=extendedOpHandlers
+ | | |
+ | | +--ads-extendedOpId=gracefulShutdownHandler
+ | | |
+ | | +--ads-extendedOpId=starttlshandler
+ | | |
+ | | +--ads-extendedOpId=storedprochandler
+ | |
+ | +--ou=saslMechHandlers
+ | |
+ | +--ads-saslMechName=CRAM-MD5
+ | |
+ | +--ads-saslMechName=DIGEST-MD5
+ | |
+ | +--ads-saslMechName=GSS-SPNEGO
+ | |
+ | +--ads-saslMechName=GSSAPI
+ | |
+ | +--ads-saslMechName=NTLM
+ | |
+ | +--ads-saslMechName=SIMPLE
+ |
+ +--ads-serverId=ntpServer
+ |
+ +--ou=transports
+ |
+ +--ads-transportId=tcp
+ |
+ +--ads-transportId=udp
+
+
+![configuration-schema-dit](../../images/configuration-dit.png)
+
+<a name="ADS2.0configuration-DirectoryService"></a>
+### Directory Service
+
+For every server backed by a directory, this is the place we define this
+service's configuration.
+
+The Directory Service configuration itself depends on some sub-elements,
+which needs their own configuration :
+* changeLog
+* interceptors
+* journal
+* partitions
+* replication
+
+see [configuration schema description](adsconfig.html)
+
+Otherwise, we also have a set of simple parameters, listed in the following
+table :
+
+<a name="ADS2.0configuration-ads-directoryServiceObjectClass"></a>
+#### ads-directoryService ObjectClass
+
+We have many parameters we can configure in order to get the
+DirectoryService functioning. Some parameters are mandatory, other aren't.
+Some may have one single value, others may not.
+
+Here is the list of mandatory and optional parameters
+
+<a name="ADS2.0configuration-Mandatoryparameters"></a>
+##### Mandatory parameters
+
+<table>
+<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
+<tr><td> ads-directoryServiceId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.100 </td><td>
+Yes </td><td> PrintableString </td><td> SV </td><td>
+No </td><td> The unique identifier for this DirectoryService </td></tr>
+<tr><td> ads-dsReplicaId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.112 </td><td> Yes </td><td>
+PrintableString </td><td> SV </td><td> No </td><td> The numeric ID
+(between 000 and 999) for this instance </td></tr>
+<tr><td> ads-interceptors </td><td> 1.3.6.1.4.1.18060.0.4.1.2.116 </td><td> Yes </td><td>
+PrintableString </td><td> MV </td><td> Yes </td><td> The list of
+interceptors </td></tr>
+<tr><td> ads-partitions </td><td> 1.3.6.1.4.1.18060.0.4.1.2.108 </td><td> Yes </td><td>
+PrintableString </td><td> MV </td><td> Yes </td><td> The list of
+partitions </td></tr>
+</table>
+
+<a name="ADS2.0configuration-Optionalparameters"></a>
+##### Optional parameters
+
+<table>
+<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
+<tr><td> ads-servers </td><td> 1.3.6.1.4.1.18060.0.4.1.2.115 </td><td> No </td><td>
+PrintableString </td><td> SV </td><td> Yes </td><td> The servers we
+have to start </td></tr>
+<tr><td> ads-dsAccessControlEnabled </td><td> 1.3.6.1.4.1.18060.0.4.1.2.101 </td><td>
+No </td><td> Boolean </td><td> SV </td><td> No </td><td> Is
+the access control enabled or not (default to no) </td></tr>
+<tr><td> ads-dsAllowAnonymousAccess </td><td> 1.3.6.1.4.1.18060.0.4.1.2.102 </td><td>
+No </td><td> Boolean </td><td> SV </td><td> No </td><td> If
+one can connect with the anonymous account (default to no) </td></tr>
+<tr><td> ads-changeLog </td><td> 1.3.6.1.4.1.18060.0.4.1.2.105 </td><td> No </td><td>
+PrintableString </td><td> SV </td><td> Yes </td><td> The ChangeLog
+configuration </td></tr>
+<tr><td> ads-dsDenormalizeOpAttrsEnabled </td><td> 1.3.6.1.4.1.18060.0.4.1.2.103 </td><td>
+No </td><td> Boolean </td><td> SV </td><td> No </td><td> A
+flag telling the server to return a denormalized version of operational
+attributes </td></tr>
+<tr><td> ads-journal </td><td> 1.3.6.1.4.1.18060.0.4.1.2.117 </td><td> No </td><td>
+PrintableString </td><td> SV </td><td> Yes </td><td> The Journal
+configuration </td></tr>
+<tr><td> ads-dsMaxPDUSize </td><td> 1.3.6.1.4.1.18060.0.4.1.2.110 </td><td> No </td><td>
+Integer </td><td> SV </td><td> No </td><td> The max size for an
+incoming PDU </td></tr>
+<tr><td> ads-dsPasswordHidden </td><td> 1.3.6.1.4.1.18060.0.4.1.2.104 </td><td> No
+</td><td> Boolean </td><td> SV </td><td> No </td><td> Tells if the password
+is hidden </td></tr>
+<tr><td> ads-dsSyncPeriodMillis </td><td> 1.3.6.1.4.1.18060.0.4.1.2.111 </td><td>
+No </td><td> Integer </td><td> SV </td><td> No </td><td>
+Duration between two flush on disk </td></tr>
+<tr><td> ads-dsTestEntries </td><td> 1.3.6.1.4.1.18060.0.4.1.2.113 </td><td> No </td><td>
+PrintableString </td><td> MV </td><td> No </td><td> The set of
+entries to inject at startup (may be obsolete) </td></tr>
+</table>
+
+
+<a name="ADS2.0configuration-Interceptors"></a>
+## Interceptors
+
+Some interceptors can be configured (Authentication and PassowordPolicy).
+They will be described with a specific ObjectClass.
+
+Otherwise, they only have an identifier, and an order number, as the
+interceptors are used in an ordered chain. (we may want later to allow an
+administrator to inject a new interceptor)
+
+This ObjectClass contains the informations relative to a base interceptor.
+It will be extended by each interceptor specific interceptor.
+
+<a name="ADS2.0configuration-Mandatoryparameters"></a>
+#### Mandatory parameters
+
+<table>
+<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
+<tr><td> ads-interceptorId </td><td> 1.3.6.1.4.1.18060.0.4.1.2.130 </td><td> Yes </td><td>
+PrintableString </td><td> SV </td><td> No </td><td> The Interceptor
+identifier </td></tr>
+<tr><td> ads-interceptorOrder </td><td> 1.3.6.1.4.1.18060.0.4.1.2.131 </td><td>
+Yes </td><td> Integer </td><td> SV </td><td> No </td><td>
+The Interceptor order number </td></tr>
+<tr><td> ads-interceptorClassName </td><td> 1.3.6.1.4.1.18060.0.4.1.2.804 </td><td>
+Yes </td><td> PrintableString </td><td> SV </td><td>
+No </td><td> Fully qualified class name of the interceptor </td></tr>
+</table>
+
+<a name="ADS2.0configuration-Authenticationinterceptor"></a>
+### Authentication interceptor
+
+<a name="ADS2.0configuration-ads-authenticationInterceptor"></a>
+#### ads-authenticationInterceptor
+
+<table>
+<tr><th> Name </th><th> OID </th><th> Mandatory </th><th> type </th><th> SV/MV </th><th> Composite </th><th> Description </th></tr>
+<tr><td> ads-authenticators </td><td> 1.3.6.1.4.1.18060.0.4.1.2.933 </td><td> No </td><td>
+N/A </td><td> MV </td><td> Yes </td><td> A
+reference to the authenticators </td></tr>
+<tr><td> ads-passwordPolicies </td><td> 1.3.6.1.4.1.18060.0.4.1.2.313 </td><td> No
+</td><td> PrintableString </td><td> MV </td><td> Yes </td><td> The
+PasswordPolicy configurations </td></tr>
+</table>
+
+
+
+
+
+
+
+<a name="ADS2.0configuration-ChangeLog"></a>
+## ChangeLog
+
+Here is the configuration :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> changeLogStore </td><td> </td><td> A store for change events on the directory (not
+described atm) </td></tr>
+<tr><td> enabled </td><td> true </td><td> Tells if the changeLog system is up and running </td></tr>
+<tr><td> exposed </td><td> false </td><td> Tells if the changeLog system is visible by the clients
+</td></tr>
+<tr><td> partitionSuffix </td><td> ou=changelog </td><td> The prefix of the partition </td></tr>
+<tr><td> revisionsContainerName </td><td> ou=revisions </td><td> The name of the revisions
+container under the partition </td></tr>
+<tr><td> tagsContainerName </td><td> ou=tags </td><td> The name of the tags container under the
+partition </td></tr>
+</table>
+
+{note}
+The _partitionSuffix_, _revisionsContainerName_ and _tagsContainerName_
+should not be exposed. They won't be associated with a schema element. The
+_changeLogStore_ is not defined right now, as we only have a InMemory
+changeLog system working.
+{note}
+
+
+
+<a name="ADS2.0configuration-ChangeLogschema"></a>
+### ChangeLog schema
+
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+Here is the list of AttributeTypes we need for the changeLog :
+
+<table>
+<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-changeLogEnabled](configuration-schema#ads-changelogenabled.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> </td></tr>
+<tr><td> [ads-changeLogExposed](configuration-schema#ads-changelogexposed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClass"></a>
+#### ObjectClass
+
+Here is the ObjectClass we need for the changeLog :
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-changeLog](configuration-schema#ads-changelog.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The ChangeLog
+ObjectClass </td></tr>
+</table>
+
+
+<a name="ADS2.0configuration-Journal"></a>
+## Journal
+
+This is the system storing every modifications in order to be able to
+restore the server if it crashes, or to manage replication. It is backed by
+a store, which needs to be configured too. Here is the configuration :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> enabled </td><td> true </td><td> Tells if the journal system is up and running </td></tr>
+<tr><td> rotation </td><td> 0 </td><td> The size before a journal rotation occurs </td></tr>
+<tr><td> filename </td><td> journal.ldif </td><td> The journal's file name </td></tr>
+<tr><td> workingDirectory </td><td> the DirectoryService working directory </td><td> The place on
+disk where the journal is stored </td></tr>
+</table>
+
+<a name="ADS2.0configuration-Journalschema"></a>
+### Journal schema
+
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+Here is the list of AttributeTypes we need for the journal :
+
+<table>
+<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-journalFileName](configuration-schema#ads-journalfilename.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The journal's file name </td></tr>
+<tr><td> [ads-journalWorkingDirectory](configuration-schema#ads-journalworkingdirectory.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The place on disk where the
+journal is stored </td></tr>
+<tr><td> [ads-journalRotation](configuration-schema#ads-journalrotation.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The size before a journal rotation
+occurs </td></tr>
+<tr><td> [ads-journalEnabled](configuration-schema#ads-journalenabled.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells if the journal system is up
+and running </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClass"></a>
+#### ObjectClass
+
+Here is the ObjectClass we need for the journal :
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-journal](configuration-schema#ads-journal.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The Journal
+ObjectClass </td></tr>
+</table>
+
+
+<a name="ADS2.0configuration-Partition"></a>
+## Partition
+
+The Partition parameters are listed in the following table :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> cacheSize </td><td> 100 </td><td> Number of cached entries </td></tr>
+<tr><td> id </td><td> N/A </td><td> The partition id </td></tr>
+<tr><td> indexedAttributes </td><td> N/A </td><td> The list of indexed attributes </td></tr>
+<tr><td> optimizerEnabled </td><td> true </td><td> Tells if the optimizer is enabled or not </td></tr>
+<tr><td> property </td><td> N/A </td><td> ??? </td></tr>
+<tr><td> suffix </td><td> N/A </td><td> The partition's suffix </td></tr>
+<tr><td> syncOnWrite </td><td> true </td><td> Tells the server to flush on disk for every write </td></tr>
+</table>
+
+the *indexedAttributes* parameter itself is a composite attribute, and will
+be described below.
+
+{note}
+The 'property' parameter will probably be removed.
+{note}
+
+{note}
+The 'optimizerEnabled' parameter will probably be removed.
+{note}
+
+
+<a name="ADS2.0configuration-Partitionschema"></a>
+### Partition schema
+
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> ads-partitionCacheSize </td><td> 100 </td><td> Number of cached entries </td></tr>
+<tr><td> ads-partitionId </td><td> N/A </td><td> The partition Id </td></tr>
+<tr><td> ads-partitionIndexedAttributes </td><td> N/A </td><td> The list of indexed attributes </td></tr>
+<tr><td> ads-partitionOptimizerEnabled </td><td> true </td><td> Tells if the optimizer is enabled
+or not. probably a useless parameter </td></tr>
+<tr><td> ads-partitionProperty </td><td> N/A </td><td> Will be removed </td></tr>
+<tr><td> ads-partitionSuffix </td><td> N/A </td><td> The partition suffix </td></tr>
+<tr><td> ads-partitionSyncOnWrite </td><td> true </td><td> Tells the server to flush on disk for
+every write </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClass"></a>
+#### ObjectClass
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> ads-partition </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The
+Partition ObjectClass </td></tr>
+</table>
+
+<a name="ADS2.0configuration-Index"></a>
+## Index
+
+The Index parameters are listed in the following table :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> attributeId </td><td> N/A </td><td> The attributeType name or OID </td></tr>
+<tr><td> cacheSize </td><td> 100 </td><td> Number of key we cache </td></tr>
+<tr><td> numDupLimit </td><td> 512 </td><td> The number of duplicated element we allow before
+switching to a secondary tree </td></tr>
+<tr><td> filename </td><td> the attributeName </td><td> Name of the index file </td></tr>
+<tr><td> workingDirectory </td><td> The DS's working directory </td><td> The place on disk where
+the index will be stored </td></tr>
+</table>
+
+{note}
+The cacheSize is likely to be removed.
+{note}
+
+<a name="ADS2.0configuration-Indexschema"></a>
+### Index schema
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> [ads-indexAttributeId](configuration-schema#ads-indexattributeid.html)
+ </td><td> N/A </td><td> The attributeType name or OID </td></tr>
+<tr><td> [ads-indexCacheSize](configuration-schema#ads-indexcachesize.html)
+ </td><td> 100 </td><td> Number of key we cache </td></tr>
+<tr><td> [ads-indexNumDupLimit](configuration-schema#ads-indexnumduplimit.html)
+ </td><td> 512 </td><td> The number of duplicated element we allow before switching to a
+secondary tree </td></tr>
+<tr><td> [ads-indexFilename](configuration-schema#ads-indexfilename.html)
+ </td><td> the attributeName </td><td> Name of the index file </td></tr>
+<tr><td> [ads-indexWorkingDirectory](configuration-schema#ads-indexworkingdirectory.html)
+ </td><td> The DS's working directory </td><td> The place on disk where the index will be
+stored </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClass"></a>
+#### ObjectClass
+
+We will define at least two ObjectClasses, as we may have different kind of
+index (JDBM, Oracle, ...)
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-index](configuration-schema#ads-index.html)
+ </td><td> ABSTRACT </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> A global indexed
+attribute (can be JDBM or anything else) </td></tr>
+<tr><td> [ads-jdbmIndex](configuration-schema#ads-jdbmindex.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> A JDBM indexed
+attribute </td></tr>
+</table>
+
+<a name="ADS2.0configuration-LdapServer"></a>
+## LdapServer
+
+The LdapServer parameters are described in the following table :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> id </td><td> N/A </td><td> The LdapServer identifier </td></tr>
+<tr><td> transports </td><td> N/A </td><td> The LdapServer transports </td></tr>
+<tr><td> confidentialityRequired </td><td> false </td><td> Tells the server to accept requests
+using startTLS or LDAPS </td></tr>
+<tr><td> allowAnonymousAccess </td><td> true </td><td> Tells the server to accept Anynymous
+requests or not </td></tr>
+<tr><td> maxSizeLimit </td><td> 1000 </td><td> The maximum number of entries to return </td></tr>
+<tr><td> MaxTimeLimit </td><td> 1000 </td><td> The maximul time before an operation is aborted (in
+seconds) </td></tr>
+<tr><td> extendedOperationHandlers </td><td> ??? </td></tr>
+<tr><td> saslHost </td><td> N/A </td><td> The name of this host, validated during SASL negotiation
+</td></tr>
+<tr><td> saslPrincipal </td><td> ldap/ldap.example.com@EXAMPLE.COM </td><td> The service
+principal, used by GSSAPI </td></tr>
+<tr><td> saslQop </td><td> "auth, "auth-int", "auth-conf" </td><td> The quality of protection
+(QoP), used by DIGEST-MD5 and GSSAPI </td></tr>
+<tr><td> saslRealms </td><td> N/A </td><td> The realms serviced by this SASL host </td></tr>
+<tr><td> saslMechanismHandlers </td><td> N/A </td><td> <String, MechanismHandler> \--> To be
+explicited </td></tr>
+<tr><td> directoryService </td><td> N/A </td><td> The reference to the associated DirectoryService
+</td></tr>
+<tr><td> keystoreFile </td><td> The JVM keystore </td><td> The keystore file to use to store
+certificates </td></tr>
+<tr><td> certificatePassword </td><td> N/A </td><td> The certificate passord </td></tr>
+<tr><td> replicationSystem </td><td> </td><td> ??? Should be associated to the DirectoryService </td></tr>
+</table>
+
+Some of the parameters will not be used : _extendedOperationHandlers_,
+_saslQop_, _saslMechanismHandlers_ and _replicationSystem_.
+
+None of those parameters are composite, except the DirectoryService, which
+has already been described.
+
+<a name="ADS2.0configuration-LdapServerschema"></a>
+### LdapServer schema
+
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+<table>
+<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-ldapServerId](configuration-schema#ads-ldapserverid.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The LdapServer identifier </td></tr>
+<tr><td> [ads-ldapServerId](configuration-schema#ads-ldapserverid.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The LdapServer transports </td></tr>
+<tr><td> [ads-ldapServerTransports](configuration-schema#ads-ldapservertransports.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells the server to accept
+requests using startTLS or LDAPS </td></tr>
+<tr><td> [ads-ldapServerAllowAnonymousAccess](configuration-schema#ads-ldapserverallowanonymousaccess.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells the server to accept
+Anynymous requests or not </td></tr>
+<tr><td> [ads-ldapServerMaxSizeLimit](configuration-schema#ads-ldapservermaxsizelimit.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum number of entries to
+return </td></tr>
+<tr><td> [ads-ldapServerMaxTimeLimit](configuration-schema#ads-ldapservermaxtimelimit.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximul time before an
+operation is aborted (in seconds) </td></tr>
+<tr><td> [ads-ldapServerSaslHost](configuration-schema#ads-ldapserversaslhost.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The name of this host, validated
+during SASL negotiation </td></tr>
+<tr><td> [ads-ldapServerSaslPrincipal](configuration-schema#ads-ldapserversaslprincipal.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The service principal, used by
+GSSAPI </td></tr>
+<tr><td> [ads-ldapServerSaslRealms](configuration-schema#ads-ldapserversaslrealms.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The realms serviced by this SASL
+host </td></tr>
+<tr><td> [ads-ldapServerDirectoryService](configuration-schema#ads-ldapserverdirectoryservice.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The reference to the associated
+DirectoryService </td></tr>
+<tr><td> [ads-ldapServerKeystoreFile](configuration-schema#ads-ldapserverkeystorefile.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The keystore file to use to store
+certificates </td></tr>
+<tr><td> [ads-ldapServerCertificatePassword](configuration-schema#ads-ldapservercertificatepassword.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The certificate passord </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClass"></a>
+#### ObjectClass
+
+Here is the list of ObjectClasses we need for the LdapServer
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-ldapServer](configuration-schema#ads-ldapserver.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> Base class for the
+LdapServer ObjectClass </td></tr>
+</table>
+
+
+<a name="ADS2.0configuration-KerberosServer"></a>
+## KerberosServer
+
+The KerberosServer parameters are described in the following table :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> id </td><td> N/A </td><td> The KerberosServer identifier </td></tr>
+<tr><td> transports </td><td> N/A </td><td> The KerberosServer transports </td></tr>
+<tr><td> AllowableClockSkew </td><td> </td><td> The allowable clock skew </td></tr>
+<tr><td> EncryptionTypes </td><td> </td><td> The encryption types </td></tr>
+<tr><td> EmptyAddressesAllowed </td><td> true </td><td> Whether empty addresses are allowed </td></tr>
+<tr><td> ForwardableAllowed </td><td> true </td><td> Whether forwardable addresses are allowed </td></tr>
+<tr><td> PaEncTimestampRequired </td><td> true </td><td> Whether pre-authentication by encrypted
+timestamp is required </td></tr>
+<tr><td> PostdatedAllowed </td><td> true </td><td> Whether postdated tickets are allowed </td></tr>
+<tr><td> ProxiableAllowed </td><td> true </td><td> Whether proxiable addresses are allowed </td></tr>
+<tr><td> RenewableAllowed </td><td> true </td><td> Whether renewable tickets are allowed </td></tr>
+<tr><td> KdcPrincipal </td><td> krbtgt/EXAMPLE.COM@EXAMPLE.COM </td><td> The service principal
+name </td></tr>
+<tr><td> MaximumRenewableLifetime </td><td> 7 days </td><td> The maximum renewable lifetime </td></tr>
+<tr><td> MaximumTicketLifetime </td><td> 1 day </td><td> The maximum ticket lifetime </td></tr>
+<tr><td> PrimaryRealm </td><td> EXAMPLE.COM </td><td> The primary realm </td></tr>
+<tr><td> BodyChecksumVerified </td><td> true </td><td> Whether to verify the body checksum </td></tr>
+<tr><td> SearchBaseDn </td><td> NA </td><td> The place we are looking for entries </td></tr>
+</table>
+
+<a name="ADS2.0configuration-KerberosServerSchema"></a>
+### KerberosServer Schema
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+Here is the list of AttributeTypes we need for the KerberosServer
+
+<table>
+<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-krbAllowableClockSkew](configuration-schema#ads-krballowableclockskew.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The allowable clock skew </td></tr>
+<tr><td> [ads-krbEncryptionTypes](configuration-schema#ads-krbencryptiontypes.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The encryption types </td></tr>
+<tr><td> [ads-krbEmptyAddressesAllowed](configuration-schema#ads-krbemptyaddressesallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether empty addresses are
+allowed </td></tr>
+<tr><td> [ads-krbForwardableAllowed](configuration-schema#ads-krbforwardableallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether forwardable addresses are
+allowed </td></tr>
+<tr><td> [ads-krbForwardableAllowed](configuration-schema#ads-krbforwardableallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether forwardable addresses are
+allowed </td></tr>
+<tr><td> [ads-krbPaEncTimestampRequired](configuration-schema#ads-krbpaenctimestamprequired.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether pre-authentication by
+encrypted timestamp is required </td></tr>
+<tr><td> [ads-krbPostdatedAllowed](configuration-schema#ads-krbpostdatedallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether postdated tickets are
+allowed </td></tr>
+<tr><td> [ads-krbProxiableAllowed](configuration-schema#ads-krbproxiableallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether proxiable addresses are
+allowed </td></tr>
+<tr><td> [ads-krbRenewableAllowed](configuration-schema#ads-krbrenewableallowed.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether renewable tickets are
+allowed </td></tr>
+<tr><td> [ads-krbKdcPrincipal](configuration-schema#ads-krbkdcprincipal.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The service principal name </td></tr>
+<tr><td> [ads-krbMaximumRenewableLifetime](configuration-schema#ads-krbmaximumrenewablelifetime.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum renewable lifetime </td></tr>
+<tr><td> [ads-krbMaximumTicketLifetime](configuration-schema#ads-krbmaximumticketlifetime.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The maximum ticket lifetime </td></tr>
+<tr><td> [ads-krbPrimaryRealm](configuration-schema#ads-krbprimaryrealm.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The primary realm </td></tr>
+<tr><td> [ads-krbBodyChecksumVerified](configuration-schema#ads-krbbodychecksumverified.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Whether to verify the body
+checksum </td></tr>
+<tr><td> [ads-kerberosServerId](configuration-schema#ads-kerberosserverid.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The kerberos server identifier </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClasses"></a>
+#### ObjectClasses
+
+Here is the list of ObjectClass we need for the KerberosServer
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+</table>
+
+<a name="ADS2.0configuration-TransportLayer"></a>
+## Transport Layer
+
+The *transport layer* is the layer in charge of managing incoming requests
+and outgoing responses. All the servers are depending on this layer. It
+support *TCP* and *UDP* transports.
+
+The configuration parameters are the following :
+
+<table>
+<tr><th> Parameter </th><th> Default value </th><th> Description </th></tr>
+<tr><td> address </td><td> localhost </td><td> The listening address. Can be '*' if the server is
+listening on all the interfaces </td></tr>
+<tr><td> port </td><td> \-1 </td><td> The port the server is listening on. </td></tr>
+<tr><td> sslEnabled </td><td> false </td><td> Tells if SSL is enabled for this transport. Only
+available for a TCP transport </td></tr>
+<tr><td> backlog </td><td> 50 </td><td> The number of incoming requests queued when all the
+threads are busy </td></tr>
+<tr><td> threads </td><td> 3 </td><td> The number of threads to use in the executor to handle the
+incoming requests </td></tr>
+</table>
+
+The base transport is determinated by the type of transport object we will
+create :_TcpTransport_ or _UdpTransport_.
+
+For instance, in the current *server.xml* file, we have this configuration
+for the *LDAP* server and for the *Kerberos* server :
+
+ ...
+ <ldapServer id="ldapServer" ...>
+ <transports>
+ <tcpTransport address="0.0.0.0" port="10389" nbThreads="8"
+backLog="50" enableSSL="false"/>
+ <tcpTransport address="localhost" port="10686" enableSSL="true"/>
+ </transports>
+ ...
+
+
+
+
+ ...
+ <kdcServer id="kdcServer">
+ <transports>
+ <tcpTransport port="60088" nbThreads="4" backLog="50"/>
+ <udpTransport port="60088" nbThreads="4" backLog="50"/>
+ </transports>
+ ...
+
+
+<a name="ADS2.0configuration-Transportschema"></a>
+### Transport schema
+
+To be able to store the transport in the *DiT*, we must define a specific
+set of AttributeTypes and ObjectClasses to store them. Here are those
+definitions.
+
+<a name="ADS2.0configuration-AttributeTypes"></a>
+#### AttributeTypes
+
+Here is the list of AttributeTypes we need for the transport layer
+
+<table>
+<tr><th> AttributeType </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-transportAddress](configuration-schema#ads-transportaddress.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The IP Address </td></tr>
+<tr><td> [ipServicePort](http://ldap.akbkhome.com/index.php/attribute/ipServicePort.html)
+ </td><td> no </td><td> 1.3.6.1.1.1.1.15 </td><td> The IP port </td></tr>
+<tr><td> [ads-transportBacklog](configuration-schema#ads-transportbacklog.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The backlog size </td></tr>
+<tr><td> [ads-transportEnableSSL](configuration-schema#ads-transportenablessl.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> Tells if SSL is on </td></tr>
+<tr><td> [ads-transportNbThreads](configuration-schema#ads-transportnbthreads.html)
+ </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.2.xxx </td><td> The number of threads in the
+executor </td></tr>
+</table>
+
+<a name="ADS2.0configuration-ObjectClasses"></a>
+#### ObjectClasses
+
+Here is the list of ObjectClasses we need for the transport layer
+
+<table>
+<tr><th> ObjectClass </th><th> type </th><th> ADS </th><th> OID </th><th> Description </th></tr>
+<tr><td> [ads-transport](configuration-schema#ads-transport.html)
+ </td><td> ABSTRACT </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> Base class for the
+transport's ObjectClasses </td></tr>
+<tr><td> [ads-tcpTransport](configuration-schema#ads-tcptransport.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The TCP transport </td></tr>
+<tr><td> [ads-udpTransport](configuration-schema#ads-udptransport.html)
+ </td><td> STRUCTURAL </td><td> yes </td><td> 1.3.6.1.4.1.18060.0.4.1.3.xxx </td><td> The UDP transport </td></tr>
diff --git a/source/apacheds/configuration/adsconfig.md b/source/apacheds/configuration/adsconfig.md
new file mode 100644
index 0000000..5aa2bb1
--- /dev/null
+++ b/source/apacheds/configuration/adsconfig.md
Binary files differ
diff --git a/source/apacheds/developer-guide.md b/source/apacheds/developer-guide.md
new file mode 100644
index 0000000..2b8145e
--- /dev/null
+++ b/source/apacheds/developer-guide.md
@@ -0,0 +1,547 @@
+---
+title: Developers Guide
+---
+
+# Developers Guide
+
+## Getting the source, Building the trunks
+To get the source, build the *trunks* and get along with Maven, follow the instruction given in this page: [AUG : 0.2. Building trunks](advanced-ug/0.2-building-trunks.html)
+
+## Versioning Scheme
+
+The version number of *ApacheDS* has the following form:
+
+<DIV class="info" markdown="1">
+ <major>.<minor>.<micro> \[-M<milestone number> or -RC<release candidate number>]
+</DIV>
+
+This scheme has three number components:
+
+* The __major__ number increases when there are incompatible changes in the API.
+* The __minor__ number increases when a new feature is introduced.
+* The __micro__ number increases when a bug or a trivial change is made.
+
+and an optional label that indicates the maturity of a release:
+
+* __M__ (Milestone) means the feature set can change at any time in the next milestone releases. The last milestone release becomes the first release candidate after a vote.
+* __RC__ (Release Candidate) means the feature set is frozen and the next RC releases will focus on fixing problems unless there is a serious flaw in design. The last release candidate becomes the first GA release after a vote.
+* No label implies __GA__ (General Availability), which means the release is stable enough and therefore ready for production environment.
+
+<DIV class="info" markdown="1">
+ A <b>stable</b> version is a version with a frozen set of features, and a frozen <b>API</b>. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
+ Although we may add new features between two milestones, and the data structure may change, which may imply that the data have to be extracted and reimported in order for the server to be operational.<BR/>
+ The configuration might also evolve between two versions.
+</DIV>
+
+## Coding standards
+
+The applicable coding standards for ADS 2.0 are described in [Coding Standards](coding-standards.html)
+
+There are some more rules, as we are using **Java 6** now :
+
+* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
+* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
+* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
+* Use the new *Enum* type !
+
+## Releasing ApacheDS
+
+Here is a guide on how to cut a new release. This is a long process, expect it to last a few hours !
+
+First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version of the JDK (Java 8 is required, due to some checkstye plugin requiring it. Note that the generated code is Java 7 compliant).
+
+### Maven Settings
+
+You'll need a settings section for the **Nexus** and **people.apache.org** servers with a password or a path to the SSH key used. Here's what my **settings.xml** file in **~/.m2** looks like:
+
+```xml
+<settings>
+
+ <servers>
+ <!-- To publish a snapshot of some part of Maven -->
+ <server>
+ <id>apache.snapshots.https</id>
+ <username>username</username>
+ <password>********</password>
+ </server>
+
+ <!-- To publish a website using Maven -->
+ <server>
+ <id>apache.directory</id>
+ <username>username</username>
+ <privateKey>/Users/username/.ssh/id_rsa</privateKey>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+
+ <!-- To stage a release of some part of Maven -->
+ <server>
+ <id>apache.releases.https</id>
+ <username>username</username>
+ <password>********</password>
+ </server>
+
+ <!-- To stage a website of some part of Maven -->
+ <server>
+ <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
+ <username>elecharny</username>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+
+ </servers>
+
+ <profiles>
+ <profile>
+ <id>apache-public</id>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache.public</id>
+ <url>https://repository.apache.org/content/groups/public/</url>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+
+ <profile>
+ <id>apache-release</id>
+ <!-- Configuration for artifacts signature -->
+ <properties>
+ <gpg.passphrase>********</gpg.passphrase>
+ <gpg.keyname>elecharny@apache.org</gpg.keyname>
+ </properties>
+ </profile>
+ </profiles>
+
+</settings>
+```
+
+Just replace your username, passwords and paths. Note that the username and password is your Apache LDAP account.
+
+
+<DIV class="info" markdown="1">
+You'll need to provide the passphrase in the <b>settings.xml</b> to access the gpg secret key installed on your host. This is due to a bug with the passphrase prompt in the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase in the <b>settings.xml</b> file in clear text. This should change in the future when this bug is fixed. Note that this passphrase is put into the release profile which we activate to properly sign and release the artifacts and poms via the release plugin.
+</DIV>
+
+### GPG Key
+
+All subprojects are configured to deploy signatures for the artifacts uploaded to the repository. The **gpg** plugin will check use the default gpg key for the user deploying the project with the release:perform directive of the release plugin. This will prompt you for the passphrase for the default key. If you do not have one setup the build will fail.
+
+You can generate and upload a PGP key to a PGP keyserver using the following commands:
+
+```bash
+gpg --gen-key
+gpg --fingerprint
+gpg --keyserver subkeys.pgp.net --send-keys <your key's id from last command>
+```
+
+<DIV class="info" markdown="1">
+Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and to have added your public key to the <b>KEYS</b> file.
+See also http://people.apache.org/~henkp/repo/faq.html#4
+</DIV>
+
+### Releasing ApacheDS
+
+Now that your environment has been setup, we will show you how to build and release the ApacheDS subproject. Keep an eye out for warnings and note sections that show version specific differences in this process.
+
+#### Manual Steps
+Some things have not yet been automated with maven and require users to manually edit some files. Below are the steps to follow.
+
+##### Update the apacheds/pom.xml
+
+The current <em>apacheds/pom.xml</em> contains references to LDAP API SNAPSHOTs, which is not good. You have to bump up those references to the latest LDAP-API version.
+
+##### Update service/apacheds.sh and service/apacheds.bat
+
+Edit the <em>apacheds.sh/bat</em> files in the service project directory to update the revision numbers used in that file to reference non-SNAPSHOT releases.
+
+#### Release process
+
+Since we are using Nexus for releases the release process is as follows (see also [Publishing maven artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven).
+
+##### Test the Project
+
+```bash
+$ mvn release:prepare -DdryRun=true
+```
+
+Replace the version by the new version. Be careful, and remove the 'apacheds-parent-' which is proposed for the new tag. We should just use the version number.
+
+##### Deploy a Snapshot
+
+```bash
+$ mvn deploy -Darguments="-DskipTests"
+```
+
+This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
+
+##### Prepare the Release
+
+```bash
+$ mvn release:clean
+$ mvn release:prepare
+```
+
+This creates a tag [here](http://svn.apache.org/viewvc/directory/apacheds/tags/)
+
+##### Stage the Release
+
+```bash
+$ mvn release:perform -Darguments="-DskipTests"
+```
+
+This deploys the release to a staging repository. Go to [Staging Repositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
+
+(The _-Darguments="-DskipTests"_ parameter is there to avoid running the tests again...)
+
+##### Build the Site
+
+We will now build the site. This will be done from the <em>target/checkout</em> directory :
+
+```bash
+$ cd target/checkout
+```
+
+In order to generate the site, you have to comment some modules in the apacheds <em>pom.xml</em> file :
+
+```xml
+<!--module>all</module-->
+...
+<!--module>installers-maven-plugin</module-->
+<!--module>installers</module-->
+...
+<!--module>service</module-->
+```
+
+Then you can start the maven command :
+
+```bash
+$ mvn site
+```
+
+This creates the site and the Javadocs.
+
+<DIV class="info" markdown="1">
+Now, you have to sign the sources packages which are in <em>apacheds/target/checkout/target</em>.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+
+Note we should not sign with MD5 or SHA-1.
+</DIV>
+
+You can get the keys by typing :
+
+```bash
+gpg --list-keys
+```
+
+You can use this small script that does the job (copy-paste this code in a file named <em>sign.sh</em> in your path) :
+
+```bash
+#!/bin/sh
+
+echo "PGP Key ID: "
+read DEFAULT_KEY
+
+echo "PGP Key Password: "
+stty -echo
+read PASSWORD
+stty echo
+echo ""
+
+for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" -or -name "*.md5" -or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
+
+ if [ -f "$FILE.asc" ]; then
+ echo "Skipping: $FILE"
+ continue
+ fi
+
+ echo -n "Signing: $FILE ... "
+
+ # SHA-256
+ if [ ! -f "$FILE.sha256" ];
+ then
+ gpg -v --default-key "$DEFAULT_KEY" --print-md SHA256 "$FILE" > "$FILE".sha256
+ echo " - Generated '$FILE.sha256'"
+ else
+ echo " - Skipped '$FILE.sha256' (file already existing)"
+ fi
+
+ # SHA-512
+ if [ ! -f "$FILE.sha512" ];
+ then
+ gpg -v --default-key "$DEFAULT_KEY" --print-md SHA512 "$FILE" > "$FILE".sha512
+ echo " - Generated '$FILE.sha512'"
+ else
+ echo " - Skipped '$FILE.sha512' (file already existing)"
+ fi
+
+ # ASC
+ if [ ! -f "$FILE.asc" ];
+ then
+ echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
+ echo " - Generated '$FILE.asc'"
+ else
+ echo " - Skipped '$FILE.asc' (file already existing)"
+ fi
+done
+```
+
+Then to sign the packages :
+
+```bash
+$ sign.sh
+PGP Key ID:
+<your PGP key>
+PGP Key Password:
+<Your password>
+
+-n Signing: ./apacheds-parent-<version>-source-release.zip ...
+- Generated './apacheds-parent-<version>-source-release.zip.md5'
+- Generated './apacheds-parent-<version>-source-release.zip.sha1'
+- Generated './apacheds-parent-<version>-source-release.zip.asc'
+$
+```
+
+##### Publish Source Distribution Package
+
+The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by the other committers, in order to be checked while validating the release. As the ~/people.apache.org server is not anymore available for that purpose, we use the [distribution](https://dist.apache.org/repos/dist/dev/directory) space for that purpose.
+
+If you haven't checked out this space, do it now :
+
+```bash
+$ mkdir -p ~/apacheds/dist/dev/directory
+$ svn co https://dist.apache.org/repos/dist/dev/directory ~/apacheds/dist/dev/directory
+```
+
+That will checkout the full project distributions.
+
+You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
+
+```bash
+$ mkdir -p ~/apacheds/dist/dev/directory/apacheds
+$ svn co https://dist.apache.org/repos/dist/dev/directory/apacheds ~/apacheds/dist/dev/directory/apacheds
+```
+
+Now, create a sub-directory for the version you have generated (here, for version 2.0.0-M22) :
+
+```bash
+$ mkdir ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
+```
+
+and copy the packages and signature to this area :
+
+```bash
+$ cd target/checkout/target
+$ cp apacheds-parent-<version>-source-release.zip* ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
+```
+
+Last, not least, commit your changes
+
+```bash
+$ svn add ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
+$ svn ci ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22 -m "ApacheDS 2.0.M22 packages"
+```
+
+##### Test the new version
+
+The best way to do that is to download the sources, extract them, build the server and the installers, and check if the installers are correctly working. Then check that the server is correctly running.
+
+##### Create the installers
+
+We now have to create the installers. Go into the <em>target/checkout</em> directory and run :
+
+```bash
+$ cd apacheds/target/checkout/installers
+$ mvn clean install -Pinstallers
+```
+
+This will create the installers in the <em>target/checkout/installers/target/installers</em> directory
+
+<DIV class="info" markdown="1">
+ We are meant to create all the installers. It's possible to create installers for a specific platform by using a different profile :
+
+ <UL>
+ <LI>Debian : mvn clean install -Pdebian</LI>
+ <LI>Rpm : mvn clean install -Prpm</LI>
+ <LI>Windows : mvn clean install -Pwindows</LI>
+ <LI>Mac OS X : mvn clean install -Pmac</LI>
+ <LI>Binary : mvn clean install -Pbin</LI>
+ <LI>Archive : mvn clean install -Parchive</LI>
+ </UL>
+
+ This will build only one single target.
+</DIV>
+
+<DIV class="info" markdown="1">
+ If the packaging tool path is not correct, you can set it on the command line :
+
+ <UL>
+ <LI>Debian : mvn clean install -Pdebian -Dinstallers.dpkg=<path to the dpkg installer></LI>
+ <LI>Rpm : mvn clean install -Prpm -Dinstallers.rpmbuild=<path to the rpmbuild installer></LI>
+ <LI>Windows : mvn clean install -Pwindows -Dinstallers.makensis=<path to the makensis installer></LI>
+ <LI>Mac OS X : mvn clean install -Pmac -Dinstallers.packageMaker=<path to the PackageMaker installer></LI>
+ </UL>
+
+ Typically, recent versions of Mac OSX moved the tools from <EM>/usr/bin</EM> to <EM>/usr/local/bin</EM>
+
+ Keep in mind that you will have to sign and move each target package before building the next one, as the <EM>clean</EM> instruction will remove the content of the <EM>target</EM> directory...
+</DIV>
+
+
+
+Sign those installers using the <em>sign.sh</em> script, and copy them in <em>~/apacheds/dist/dev/directory/apacheds/<version></em>
+
+```bash
+$ cd apacheds/target/checkout/target/installers/target/installers
+$ cp apacheds-<version>* ~/apacheds/dist/dev/directory/apacheds/2.0.0-M22
+```
+
+Note : you will need a Debian, a Fedora and a Windows server to generate dedicated binaries for those platforms, or you can use rpmbuild, dpkg or nsis if you don't want to use many different servers.
+
+
+##### Vote
+
+Start a 72h vote at the dev mailing list.
+
+##### Release
+
+If the vote succeeds Apacheds project can be released.
+
+Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
+
+The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by users. We use the [distribution](https://dist.apache.org/repos/dist/release/directory) space for that purpose.
+
+Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/apacheds/dist/$(version)
+
+If you haven't checked out this space, do it now :
+
+```bash
+$ mkdir -p ~/apacheds/dist/release/directory
+$ svn co https://dist.apache.org/repos/dist/release/directory ~/apacheds/dist/release/directory
+```
+
+That will checkout the full project distributions.
+
+You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
+
+```bash
+$ mkdir -p ~/apacheds/dist/release/directory/apacheds/dist
+$ svn co https://dist.apache.org/repos/dist/release/directory/apacheds/dist ~/apacheds/dist/release/directory/apacheds/dist
+```
+
+Then move the packages from 'dev' to 'release' :
+
+```bash
+# cd dist/release/directory/apacheds/dist
+# cp ~/apacheds/dist/dev/directory/apacheds/<version> .
+# svn add <version>
+# svn ci <version>
+...
+# exit
+$
+```
+
+The packages should now be available on http://www.us.apache.org/dist/directory/apacheds/dist/<version>
+
+##### Deploy the Javadocs and XRef
+
+We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
+
+ target/checkout/target/site
+
+We will copy two directories :
+
+ apidocs
+ xref
+
+*Staging or Production?*
+
+Those files will be stored on the production server only !!! And some extra caution must be taken not to delete them when we will publish the staging site too...
+
+First of all, you must checkout the two CMS store for the site : staging and revision.
+
+```bash
+$ cd ~/apacheds
+$ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
+...
+$ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+...
+```
+
+Now, you will first add the directory for the newly generated version :
+
+```bash
+$ cd ~/apacheds/production/content/apacheds/gen-docs
+$ mkdir <version>
+```
+
+Then copy the generated docs :
+
+```bash
+$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/apidocs ~/apacheds/production/content/apacheds/gen-docs/<version>
+$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/xref ~/apacheds/production/content/apacheds/gen-docs/<version>
+```
+
+You have to check in those directories :
+
+```bash
+$ svn add <version>
+$ svn ci <version> -m "Injected <version> javadocs"
+```
+
+Now, you have to update the staging site, but first, do a <em>svn up</em>. Then you have to update the <em>extpaths.txt</em> file.
+
+This file list the files on the production site that will not be overriden by the publication of the staging site. It has to be updated.
+
+```bash
+$ cd ~/apacheds/staging/content/
+$ vi extpaths.txt
+```
+
+Add the following line :
+
+```text
+...
+# Apacheds
+apacheds/gen-docs/<version>
+...
+```
+
+then save and check in the file.
+
+We also have to update the <em>.htaccess</em> file :
+
+```bash
+$ cd ~/apacheds/staging/content/apacheds/gen-docs
+$ vi .htaccess
+```
+
+And update the two last lines to refer to the version you've just released :
+
+```bash
+RewriteRule ^latest$ <version>/
+RewriteRule ^latest/(.*)$ <version>/$1
+```
+
+Save and commit the file.
+
+##### Update the web site
+
+You can now update the site, add a news on the front page, and publish the site.
+
+There are a few places to modify :
+
+* /lib/path.pm : update the $version_apacheds variable with the new version.
+* /content/index.mdtext : same here, update the <!-- ApacheDS project --> section, which contains the version.
+* /content/apacheds/news.mdtext : add the news on top of thise page
+* /content/apacheds/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
+
+Commit the changes, and publish the web site, you are done !
+
+##### Inform the world !
+
+After 24h, you can now inform the world about the release.
+
+Send a mail to the users and dev mailing list, and one to the <em>announce@apache.org</em>
+
+You are done !
diff --git a/source/apacheds/download-old-versions.md b/source/apacheds/download-old-versions.md
new file mode 100644
index 0000000..aa932d4
--- /dev/null
+++ b/source/apacheds/download-old-versions.md
@@ -0,0 +1,114 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+## ApacheDS 2.0
+
+<center>
+
+| Version| Download Link | Date |
+|:-:|:-:|:-:|
+| ApacheDS 2.0.0-M25 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-AM25/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-AM25/apidocs/), [Xref](http://directory.apache.org/apacheds/gen-docs/2.0.0-AM25/xref/) | 18/Aug/2018 |
+| ApacheDS 2.0.0-M24 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M24/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M24/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M24/xref/) | 07/Jun/2017 |
+| ApacheDS 2.0.0-M23 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M23/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M23/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M23/xref/) | 22/Jul/2016 |
+| ApacheDS 2.0.0-M22 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M22/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M22/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M22/xref/) | 21/Dec/2015 |
+| ApacheDS 2.0.0-M20 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M20/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M20/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M20/xref/) | 02/May/2015 |
+| ApacheDS 2.0.0-M19 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M19/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M19/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M19/xref/) | 22/Nov/2014 |
+| ApacheDS 2.0.0-M18 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M18/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M18/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M18/xref/) | 13/Nov/2014 |
+| ApacheDS 2.0.0-M17 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M17/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M17/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M17/xref/) | 04/Jul/2014 |
+| ApacheDS 2.0.0-M16 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M16/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M16/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M16/xref/) | 13/Mar/2014 |
+| ApacheDS 2.0.0-M15 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M15/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M15/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M15/xref/) | 18/Aug/2013 |
+| ApacheDS 2.0.0-M14 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M14/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M14/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M14/xref/) | 01/Jul/2013 |
+| ApacheDS 2.0.0-M13 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M13/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M13/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M1/xref/) | 25/Jun/2013 |
+| ApacheDS 2.0.0-M12 | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M12/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M12/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M12/xref/) | 02/May/2013 |
+| ApacheDS 2.0.0-M11 binaries | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M11/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/xref/) | 03/Mar/2013 |
+| ApacheDS 2.0.0-M11 sources | [Download](https://archive.apache.org/dist/directory/apacheds/2.0.0-M11/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M11/xref/) | 03/Mar/2013 |
+| ApacheDS 2.0.0-M10 binaries | [Download](https://archive.apache.org/dist/directory/apacheds/dist/2.0.0-M10/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/xref/) | 28/Jan/2013 |
+| ApacheDS 2.0.0-M10 sources | [Download](https://archive.apache.org/dist/directory/apacheds/2.0.0-M10/), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M10/xref/) | 28/Jan/2013 |
+| ApacheDS 2.0.0-M9 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M9), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M9/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M9/xref/) | 02/Jan/2013 |
+| ApacheDS 2.0.0-M8 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M8), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M8/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M8/xref/) | 12/Oct/2012 |
+| ApacheDS 2.0.0-M7 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M7), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M7/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M7/xref/) | 21/May/2012 |
+| ApacheDS 2.0.0-M6 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M6) | 29/Feb/2012 |
+| ApacheDS 2.0.0-M5 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M5), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M5/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M5/xref/) | 07/Feb/2012 |
+| ApacheDS 2.0.0-M4 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M4), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M4/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M4/xref/) | 09/Jan/2012 |
+| ApacheDS 2.0.0-M3 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M3), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M3/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M3/xref/) | 12/Sep/2011 |
+| ApacheDS 2.0.0-M2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M2), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M2/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M2/xref/) | 22/Aug/2011 |
+| ApacheDS 2.0.0-M1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/2.0/2.0.0-M1), [Javadoc](https://directory.apache.org/apacheds/gen-docs/2.0.0-M1/apidocs/), [Xref](https://directory.apache.org/apacheds/gen-docs/2.0.0-M1/xref/) | 25/Jun/2011 |
+
+</center>
+
+## ApacheDS 1.5 (not maintained)
+
+<center>
+
+| Version| Download Link | Date |
+|:-:|:-:|:-:|
+| ApacheDS 1.5.7 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.7/) | 24/Apr/2010 |
+| ApacheDS 1.5.6 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.6/) | 22/Mar/2010 |
+| ApacheDS 1.5.5 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.5/) | 19/Aug/2009 |
+| ApacheDS 1.5.4 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.4/) | 07/Sep/2008 |
+| ApacheDS 1.5.3 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.3/) | 13/Jul/2008 |
+| ApacheDS 1.5.2 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.2/) | 17/Apr/2008 |
+| ApacheDS 1.5.1 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.1/) | 02/Sep/2007 |
+| ApacheDS 1.5.0 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/1.5/1.5.0/) | 11/Apr/2007 |
+
+</center>
+
+## ApacheDS 1.0 (not maintained)
+
+<center>
+
+| Version| Download Link | Date |
+|:-:|:-:|:-:|
+| ApacheDS 1.0.2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.2/) | 26/May/2007 |
+| ApacheDS 1.0.1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.1/) | 22/Feb/2007 |
+| ApacheDS 1.0.0 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0.0/) | 06/Oct/2006 |
+| ApacheDS 1.0-RC4 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC4/) | 05/Sep/2006 |
+| ApacheDS 1.0-RC3 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC3/) | 09/May/2006 |
+| ApacheDS 1.0-RC2 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC2/) | 30/Apr/2006 |
+| ApacheDS 1.0-RC1 | [Download](https://archive.apache.org/dist/directory/apacheds/stable/1.0/1.0-RC1/) | 24/Feb/2006 |
+
+</center>
+
+## ApacheDS 0.9 (not maintained)
+
+<center>
+
+| Version| Download Link | Date |
+|:-:|:-:|:-:|
+| ApacheDS 0.9.3 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.3) | 01/Nov/2005 |
+| ApacheDS 0.9.2 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.2) | 30/Aug/2005 |
+| ApacheDS 0.9.1 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.1) | 30/Jul/2005 |
+| ApacheDS 0.9.0 | [Download](https://archive.apache.org/dist/directory/apacheds/unstable/0.9/0.9.0) | 08/May/2005 |
+
+</center>
+
+<DIV class="note" markdown="1">
+We encourage you to verify the integrity of the downloaded file using:
+
+* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+* the MD5 file (checksum).
+</DIV>
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+
+
+Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/source/apacheds/download/download-archive.md b/source/apacheds/download/download-archive.md
new file mode 100644
index 0000000..b9e1b4e
--- /dev/null
+++ b/source/apacheds/download/download-archive.md
@@ -0,0 +1,104 @@
+---
+title: Downloads for Archive
+---
+
+# Downloads for Archive
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.zip">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.tar.gz">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_archive_1.jpg" width="225" height="130"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Server.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_archive_2.jpg" width="225" height="160"/></td>
+ <td> </td>
+ <td>Extract the downladed archive and place the extracted folder where you want Apache DS to be installed.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+
+* A recent Linux distribution, Mac OS X (10.4 - Tiger or later), Windows (XP or Vista).
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}.zip{{< /download-verify >}}
diff --git a/source/apacheds/download/download-linux-bin.md b/source/apacheds/download/download-linux-bin.md
new file mode 100644
index 0000000..ad7253c
--- /dev/null
+++ b/source/apacheds/download/download-linux-bin.md
@@ -0,0 +1,107 @@
+---
+title: Downloads for Linux Binary Installer
+---
+
+# Downloads for Linux Binary Installer
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Linux Binary Installer 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.bin">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.bin">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-64bit.bin
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.bin.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.bin.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.bin.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Linux Binary Installer 32 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.bin">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.bin">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-32bit.bin
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.bin.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.bin.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.bin.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_bin_1.jpg" width="225" height="130"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Server for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_bin_2.jpg" width="225" height="161"/></td>
+ <td> </td>
+ <td>Open a terminal.<br>
+ Change to your downloads folder.<br>
+ Give execution rights to the installer (<em>chmod a+x apacheds-{{< param version_apacheds >}}-64bit.bin</em>).<br>
+ Run the installer (<em>./apacheds-{{< param version_apacheds >}}-64bit.bin</em>).</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+
+* A recent Linux distribution.
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}-64bit.bin{{< /download-verify >}}
diff --git a/source/apacheds/download/download-linux-deb.md b/source/apacheds/download/download-linux-deb.md
new file mode 100644
index 0000000..794f7c7
--- /dev/null
+++ b/source/apacheds/download/download-linux-deb.md
@@ -0,0 +1,134 @@
+---
+title: Downloads for Linux Debian Package
+---
+
+# Downloads for Linux Debian Package
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Linux Debian Package 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-amd64.deb">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-amd64.deb">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-amd64.deb
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-amd64.deb.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-amd64.deb.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-amd64.deb.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Linux Debian Package 32 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.deb">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.deb">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-i386.deb
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.deb.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.deb.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.deb.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_deb_1.jpg" width="225" height="130"/></td>
+ <td> </td>
+ <td>Click on the link above to download ApacheDS for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_deb_2.jpg" width="225" height="159"/></td>
+ <td> </td>
+ <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_deb_3.jpg" width="225" height="169"/></td>
+ <td> </td>
+ <td>The installer displays some information about what's going to be installed.<br>Click the <em>Install Package</em> button to start the installation.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_4.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_deb_4.jpg" width="225" height="151"/></td>
+ <td> </td>
+ <td>You might be prompted to enter your <em>root</em> password.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_5.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_deb_5.jpg" width="225" height="115"/></td>
+ <td> </td>
+ <td>The installation starts.</td>
+ </tr>
+ </table>
+</p>
+
+## Command line installation
+
+You can also install the debian package from the command line :
+
+```bash
+chmod +x apacheds-{{< param version_apacheds >}}-amd64.deb
+```
+
+```bash
+dpkg -i apacheds-{{< param version_apacheds >}}-amd64.deb
+```
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+
+* A recent Linux distribution supporting the *.deb install packages.
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}-amd64.deb{{< /download-verify >}}
diff --git a/source/apacheds/download/download-linux-rpm.md b/source/apacheds/download/download-linux-rpm.md
new file mode 100644
index 0000000..6a7b087
--- /dev/null
+++ b/source/apacheds/download/download-linux-rpm.md
@@ -0,0 +1,116 @@
+---
+title: Downloads for Linux RPM Package
+---
+
+# Download for Linux RPM Package
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Linux RPM Package 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-x86_64.rpm">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-x86_64.rpm">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-x86_64.rpm
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-x86_64.rpm.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-x86_64.rpm.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-x86_64.rpm.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Linux RPM Package 32 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.rpm">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.rpm">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-i386.rpm
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.rpm.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.rpm.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-i386.rpm.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_rpm_1.jpg" width="225" height="138"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Server for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_rpm_2.jpg" width="225" height="176"/></td>
+ <td> </td>
+ <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_rpm_3.jpg" width="225" height="143"/></td>
+ <td> </td>
+ <td>You might be prompted to enter your <em>root</em> password.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_4.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_rpm_4.jpg" width="225" height="127"/></td>
+ <td> </td>
+ <td>The installation starts.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+
+* A recent Linux distribution supporting the *.rpm install packages.
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}-x86_64.rpm{{< /download-verify >}}
diff --git a/source/apacheds/download/download-macosx.md b/source/apacheds/download/download-macosx.md
new file mode 100644
index 0000000..c0e1b32
--- /dev/null
+++ b/source/apacheds/download/download-macosx.md
@@ -0,0 +1,116 @@
+---
+title: Downloads for Mac OS X
+---
+
+# Download for Mac OS X Installer
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Mac OS X Installer 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.dmg">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.dmg">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-64bit.dmg
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.dmg.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.dmg.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-64bit.dmg.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Mac OS X Installer 32 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.dmg">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.dmg">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}-32bit.dmg
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.dmg.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.dmg.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}-32bit.dmg.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_1.jpg" width="225" height="120"/></td>
+ <td> </td>
+ <td>Click on the link above to download ApacheDS for Mac OS X.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_2.jpg" width="225" height="161"/></td>
+ <td> </td>
+ <td>Double-click on the disk image to open it.<br/>It may have already been opened by your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_3.jpg" width="225" height="194"/></td>
+ <td> </td>
+ <td>Double-click on the <em>Apache Directory Server Installer.pkg</em> file to open the installer.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_4.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_4.jpg" width="225" height="164"/></td>
+ <td> </td>
+ <td>Follow the instructions of the installer to complete the installation.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+
+* Mac OS X version 10.4 (Tiger) or later.
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}-64bit.dmg{{< /download-verify >}}
diff --git a/source/apacheds/download/download-sources.md b/source/apacheds/download/download-sources.md
new file mode 100644
index 0000000..15e185a
--- /dev/null
+++ b/source/apacheds/download/download-sources.md
@@ -0,0 +1,45 @@
+---
+title: Download for Sources
+---
+
+# Download for Sources
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-parent-{{< param version_apacheds >}}-source-release.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-parent-{{< param version_apacheds >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/apacheds-parent-{{< param version_apacheds >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-parent-{{< param version_apacheds >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-parent-{{< param version_apacheds >}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-parent-{{< param version_apacheds >}}-source-release.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apacheds-parent-{{< param version_apacheds >}}-source-release.zip{{< /download-verify >}}
diff --git a/source/apacheds/download/download-windows.md b/source/apacheds/download/download-windows.md
new file mode 100644
index 0000000..8dcb404
--- /dev/null
+++ b/source/apacheds/download/download-windows.md
@@ -0,0 +1,86 @@
+---
+title: Download for Windows
+---
+
+# Download for Windows
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.exe">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.exe">
+ <strong>
+ [preferred]/[...]/apacheds-{{< param version_apacheds >}}.exe
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.exe.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.exe.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{< param version_apacheds >}}/apacheds-{{< param version_apacheds >}}.exe.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_1.jpg" width="225" height="141"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Server for Windows.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_2.jpg" width="225" height="146"/></td>
+ <td> </td>
+ <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_3.jpg" width="225" height="175"/></td>
+ <td> </td>
+ <td>You may be prompted to confirm that you are sure you want to open the installer. Answer <em>Run</em> if such a popup is displayed.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_4.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_4.jpg" width="225" height="178"/></td>
+ <td> </td>
+ <td>Follow the instructions of the installer to complete the installation.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+ApacheDS requires at least:
+* Windows XP, Vista or 7.
+* [a Java Runtime Environment](http://www.java.com/) 6 or later.
+
+<p> </p>
+
+{{< download-verify >}}apacheds-{{< param version_apacheds >}}.exe{{< /download-verify >}}
diff --git a/source/apacheds/downloads.md b/source/apacheds/downloads.md
new file mode 100644
index 0000000..96b82cc
--- /dev/null
+++ b/source/apacheds/downloads.md
@@ -0,0 +1,19 @@
+---
+title: Downloads
+---
+
+# Downloads
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+ApacheDS is a multi-platform application and runs on Mac OS X, Linux and Windows.
+
+Please select your installer download:
+
+* ![Download](../images/download-linux.png) [Download Linux Binary installer](download/download-linux-bin.html)
+* ![Download](../images/download-linux.png) [Download Linux Debian DEB installer](download/download-linux-deb.html)
+* ![Download](../images/download-linux.png) [Download Linux Fedora RPM installer](download/download-linux-rpm.html)
+* ( we don't have a MAC OSX installer for this version...)
+* ![Download](../images/download-windows.png) [Download Windows installer](download/download-windows.html)
+* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive.html)
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
diff --git a/source/apacheds/features.md b/source/apacheds/features.md
new file mode 100644
index 0000000..1894247
--- /dev/null
+++ b/source/apacheds/features.md
@@ -0,0 +1,143 @@
+---
+title: Features
+---
+
+# ApacheDS Features
+
+The Apache Directory Server is an embeddable LDAP server implemented in pure Java. It has several features that make it unique among LDAP servers. Some of these featurea are as follows:
+
+* Designed as an LDAP and X.500 platform; plugable components and subsystems make ApacheDS extremely modular and ideal for experiments with various aspects of the LDAP protocol.
+* The server's frontend is completely separable from its backend and vice-versa making it very flexible for implementing virtual directories, proxy servers and gateways to X.500 directories.
+* Several backends can be implemented and plugged into the server's partition nexus. The server supports a BTree based partition out of the box but any backing store can be used to implement a partition as long as it conforms to interfaces.
+* The server exposes aspects of administration via a special system backend. LDAP can be used to manage these concerns through the system naming context at ou=system.
+* The server contains a server side JNDI LDAP provider as the facade for the entire backend subsystem. JNDI operations are directly translated by this provider into operations against the nexus and the target partitions storing server entries.
+* The server's networking code, MINA (Multipurpose Infrastructure for Network Applications) was designed for pluggable protocol providers, of all sorts and not just LDAP. MINA gives ApacheDS the ability to handle large amounts of concurrency.
+* LDAP Stored Procedures and Triggers are scheduled for the next major version of ApacheDS.
+* LDAPv3 compatible certified by the OpenGroup
+
+
+# OID assignements Scheme
+
+*OID* strings are unique numeric identifiers based off of a hierarchical numeric namespace controlled by a central authority on the Internet: **IANA** (Internet Assigned Numbers Authority).
+
+**IANA** allows companies and organizations to register for a specific OID base called an enterprise number. There can only be one **IANA** Enterprise Number per organization.
+
+## The ASF's Enterprise Number
+
+**Apache** has such an enterprise number. You can look at the **IANA** assigned numbers here. Here's the record in this database for the *Apache Software Foundation*:
+
+
+```text
+Apache Software Foundation
+
+18060
+ The Apache Software Foundation
+ Alex Karasulu
+ akarasulu@apache.org
+```
+
+This means **the ASF** can use the following unique OID base _1.3.6.1.4.1.18060_ for any of it's needs. However we internal here at **the ASF** need some kind of scheme for assigning these numbers internally so we do not have collisions.
+
+
+## Current Assignments
+
+Here's what we've assigned to date:
+
+| Branch Assignement | Assign To | Contact Person |
+|:-:|:-:|:-:|
+| 1.3.6.1.4.1.18060 | ASF | Alex Karasulu |
+| 1.3.6.1.4.1.18060.0 | Directory | Alex Karasulu |
+| 1.3.6.1.4.1.18060.1 | Geronimo | Alan Cabrera |
+| 1.3.6.1.4.1.18060.2 | Apache Infrastructure | Ben Laurie |
+| 1.3.6.1.4.1.18060.3 | Maven | Jason Van Zyl |
+| 1.3.6.1.4.1.18060.4 | Tuscany | Luciano Resende |
+| 1.3.6.1.4.1.18060.5 | Triplesec | Alex Karasulu |
+| 1.3.6.1.4.1.18060.10 | Hadoop | Owen O'Malley |
+| 1.3.6.1.4.1.18060.11 | Tomcat | Bernhard Unger |
+| 1.3.6.1.4.1.18060.12 | HTTPd | Joe Orton |
+| 1.3.6.1.4.1.18060.14 | Synapse | Hiranya Jayathilaka |
+| 1.3.6.1.4.1.18060.15 | CloudStack | David Nalley |
+| 1.3.6.1.4.1.18060.16 | Apache Ambari | Paul Codding |
+| 1.3.6.1.4.1.18060.17 | Apache Fortress | Shawn McKinney |
+| 1.3.6.1.4.1.18060.18 | Apache Guacamole | Mike Jumper |
+
+
+Each contact person is the authority for assigning unique **OID** values and ranges to projects or persons. Contact that person for more assignments.
+
+
+## Making Assignments
+
+Contacts may wonder what scheme is best for making assignments. There is no rule for doing this. However some would recommend assigning the first digit past the enterprise number of an organization to be for identifying a protocol. Obviously we did not do this for **Apache**. The reason for this is because we feel it's better to model the assignments based on the structure of the organization since these are private ranges and need not conform to a global convention.
+
+However this still does not tell us how contacts should make assignments. I think this is up to you. Perhaps a good example will be how the **Directory** TLP does things which is somewhat specific to their products and the nature of their products.
+
+
+### Assignment Scheme For Apache Directory
+
+The ninth component in the **OID** could be reserved for subprojects like **ApacheDS** and **Triplesec**. This might be more attractive in TLPs with many subprojects because a single authority or contact can be used for a specific subproject. So here could be one assignment scheme:
+
+| Branch Assignement | Assign To |
+|:-:|:-:|
+| 1.3.6.1.4.1.18060.0.0 | ApacheDS |
+
+Here's how the ApacheDS OID is branched off:
+
+
+The ninth component in the **OID** could be reserved for subprojects like **ApacheDS** and **Triplesec**. This might be more attractive in TLPs with many subprojects because a single authority or contact can be used for a specific subproject. So here could be one assignment scheme:
+
+| Branch Assignement | Assign To |
+|:-:|:-:|
+| 1.3.6.1.4.1.18060.0.0 | ApacheDS LDAP Controls |
+| 1.3.6.1.4.1.18060.0.1 | ApacheDS LDAP Extended Operations |
+| 1.3.6.1.4.1.18060.0.2 | ApacheDS LDAP Supported Features |
+| 1.3.6.1.4.1.18060.0.3 | ApacheDS LDAP Protocol Mechanisms |
+| 1.3.6.1.4.1.18060.0.4 | ApacheDS LDAP Attribute Values |
+| 1.3.6.1.4.1.18060.0.4.X.0 | ApacheDS LDAP Schema syntaxes |
+| 1.3.6.1.4.1.18060.0.4.X.1 | ApacheDS LDAP Schema matchingRules |
+| 1.3.6.1.4.1.18060.0.4.X.2 | ApacheDS LDAP Schema attributeTypes |
+| 1.3.6.1.4.1.18060.0.4.X.3 | ApacheDS LDAP Schema objectClasses |
+| 1.3.6.1.4.1.18060.0.4.X.4 | ApacheDS LDAP Schema dITStructureRules |
+| 1.3.6.1.4.1.18060.0.4.X.5 | ApacheDS LDAP Schema nameForms |
+
+
+where **X** is a unique number associated with one of the specific **ApacheDS** schema.
+
+NOTE: _dITContentRules_ do not have their own OID, rather they reference the **OID** of the structural _objectClass_ they influence. The same sort of situation exists for _matchingRuleUse_ which uses the **OID** of the _matchingRule_ it is associated with.
+
+And here are the schema **OID**s (where the **X** is substituted by the proper number):
+
+
+| Branch Assignement | Assign To |
+|:-:|:-:|
+| 1.3.6.1.4.1.18060.0.4.0 | ApacheDS LDAP Meta Schema |
+| 1.3.6.1.4.1.18060.0.4.1 | ApacheDS LDAP Apache Schema |
+| 1.3.6.1.4.1.18060.0.4.2 | ApacheDS LDAP Apache DNS Schema |
+| 1.3.6.1.4.1.18060.0.4.3 | Apache Directory Documentation Examples Schema |
+| 1.3.6.1.4.1.18060.0.4.4 | Quartz Schema |
+| 1.3.6.1.4.1.18060.0.4.5 | Bean Schema |
+
+(Some of those schema are long gone, but the assignement is still existing)
+
+
+### OID's for ApacheDS specific controls
+
+Here are the new **OID**s used:
+
+| OID | Control |
+|:-:|:-:|
+| 1.3.6.1.4.1.18060.0.0.1 | Cascade Control |
+
+### OID's for the extended operations
+
+Here are the new **OID**s used:
+
+| OID | Extended Operation |
+|:-:|:-:|
+| 1.3.6.1.4.1.18060.0.1.1 | LaunchDiagnosticUiRequest |
+| 1.3.6.1.4.1.18060.0.1.2 | LaunchDiagnosticUiResponse |
+| 1.3.6.1.4.1.18060.0.1.3 | GracefulShutdownRequest |
+| 1.3.6.1.4.1.18060.0.1.4 | GracefulShutdownResponse |
+| 1.3.6.1.4.1.18060.0.1.5 | GracefulDisconnect |
+| 1.3.6.1.4.1.18060.0.1.6 | StoredProcedureRequest |
+| 1.3.6.1.4.1.18060.0.1.7 | StoredProcedureResponse |
+
diff --git a/source/apacheds/internal-design-guide/internal-design-guide.md b/source/apacheds/internal-design-guide/internal-design-guide.md
new file mode 100644
index 0000000..8f65893
--- /dev/null
+++ b/source/apacheds/internal-design-guide/internal-design-guide.md
@@ -0,0 +1,5 @@
+---
+title: Apache DS - Internal Design Guide
+---
+
+# Internal Design Guide
diff --git a/source/apacheds/kerberos-ug/1-kerberos.md b/source/apacheds/kerberos-ug/1-kerberos.md
new file mode 100644
index 0000000..dacbd2a
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1-kerberos.md
@@ -0,0 +1,39 @@
+---
+title: 1 - What is Kerberos ?
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+navNext: 1.1-introduction.html
+navNextText: 1.1 - Introduction
+---
+
+## Table of content
+
+* [1.1 - Introduction](1.1-introduction.html)
+ * [1.1.1 - Realms](1.1.1-realms.html)
+ * [1.1.2 - Principal](1.1.2-Principal.html)
+ * [1.1.3 - Keys](1.1.3-keys.html)
+ * [1.1.4 - KDC (Key Distribution Center)](1.1.4-kdc.html)
+ * [1.1.5 - Database](1.1.5-database.html)
+ * [1.1.6 - AS (Authentication Server)](1.1.6-as.html)
+ * [1.1.7 - TGS (Ticket Granting Server)](1.1.7-tgs.html)
+ * [1.1.8 - Tickets](1.1.8-tickets.html)
+* [1.2 - Resources](1.2-resources.html)
+ * [1.2.1 - Kerberos Articles](1.2.1-kerberos-articles.html)
+ * [1.2.2 - Microsoft compatibility](1.2.2-microsoft-compatibility.html)
+ * [1.2.3 - Standards](1.2.3-standards.html)
+
+# 1 - What is Kerberos ?
+
+**Kerberos** is the result of an effort by the MIT, known as **Project Athena**. It started in May 1983, and resulted in many internal versions at the MIT, and finally, **Kerberos V4** was openly released in January 1989. **Kerberos V5* is available since 1993.
+
+**Kerberos** is a computer network authentication protocol, which provides a secure Single Sign On(SSO) based on a trusted third-party mutual authentication service.
+
+* It is secure because the user's password is never transmitted over the wire. **Kerberos** uses **Tickets** which are negociated with the server, with a limited time to live.
+
+* It is a SSO system, a single ticket can be used by all the services till its validity expires.
+
+* It acts as a trusted third party cause all the keys of users and services are managed by the **Kerberos** server.
+
+* It is a mutual authentication system that guarantees not only that the user is who he is pretending to be, but also because each user is guaranteed that the services he has access to are the expected services.
+
+**Kerberos** is widely used in the **Microsoft™** world, as all the authentication mechanisms on **Microsoft™** are done through this protocol.
diff --git a/source/apacheds/kerberos-ug/1.1-introduction.md b/source/apacheds/kerberos-ug/1.1-introduction.md
new file mode 100644
index 0000000..218bc07
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1-introduction.md
@@ -0,0 +1,55 @@
+---
+title: 1.1 - Introduction
+navPrev: 1-kerberos.html
+navPrevText: 1 - What is Kerberos ?
+navUp: 1-kerberos.html
+navUpText: 1 - What is Kerberos ?
+navNext: 1.1.1-realms.html
+navNextText: 1.1.1 - Realms
+---
+
+## Table of content
+
+* [1.1.1 - Realms](1.1.1-realms.html)
+* [1.1.2 - Principal](1.1.2-Principal.html)
+* [1.1.3 - Keys](1.1.3-keys.html)
+* [1.1.4 - KDC (Key Distribution Center)](1.1.4-kdc.html)
+* [1.1.5 - Database](1.1.5-database.html)
+* [1.1.6 - AS (Authentication Server)](1.1.6-as.html)
+* [1.1.7 - TGS (Ticket Granting Server)](1.1.7-tgs.html)
+* [1.1.8 - Tickets](1.1.8-tickets.html)
+
+# 1.1 - Introduction
+
+The **Kerberos** server is a part of the **Apache Directory Server** : it uses the **LDAP** server as a backend, but has its own network layer. which makes it easy to install, compared to other solutions where you have two components : a backend(typically an LDAP server) on one side, and the Kerberos Server on the other.
+
+We also have decent GUI support for editing the configuration in Studio, which allows administrators to tweak their server's functionality in a convenient way.
+
+The Kerberos server of Apache Directory implements RFC 1510 and RFC 4120, the Kerberos V5 Network Authentication Service. The purpose of Kerberos is to verify the identities of principals (users or services) on an unprotected network. While generally thought of as a single-sign-on technology, Kerberos's true strength is in authenticating users without ever sending their passwords over the network. Kerberos is designed for use in open (untrusted) networks and, therefore, operates under the assumption that packets traveling along the network can be read, modified, and inserted at will. This chart provides a good description of the protocol workflow.
+
+Kerberos is named after the three-headed dog that guards the gates to Hades. The three heads are the client, the Kerberos server, and the network service being accessed.
+
+## What is it all about ?
+
+The idea is to have a server being able to deliver a user some tickets that can be used by services. Those tickets are trusted for a certain period of time. The most important point is that the service does not have to ask any server to validate those tickets : they are trusted because they have been generated by a trusted server.
+
+This is a two round process :
+1 - The client requests a Ticket to the Kerberos server
+2 - The client submits the ticket to the requested service
+
+The the client is authenticated.
+
+In any case, there is no way to fake an identity or to forge a ticket for accessing a service, nor one can reuse a Ticket that has already been used.
+
+## Apache Kerberos Server
+
+The Apache Directory Kerberos server uses **Apache MINA** in networking layer and the **Apache Directory** as the backend
+for storing principals and associated keys.
+
+The Kerberos server provides:
+
+* Authentication service
+* Ticket-granting service
+* Pre-authentication support(PA-ENC-TIMESTAMP)
+* support for des-cbc-md5, des3-cbc-sha1-kd, aes128-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96 and rc4-hmac encryption systems
+* UDP and TCP transports
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/1.1.1-realms.md b/source/apacheds/kerberos-ug/1.1.1-realms.md
new file mode 100644
index 0000000..23d4e32
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.1-realms.md
@@ -0,0 +1,45 @@
+---
+title: 1.1.1 - Realms
+navPrev: 1.1-introduction.html
+navPrevText: 1.1 - Introduction
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.2-principals.html
+navNextText: 1.1.2 - Principals
+---
+
+# 1.1.1 - Realms
+
+A **Realm** is associated with a Kerberos administrative domain. In other words, it covers everything the Kerberos server manages :
+* Users
+* Services
+
+Note that a Kerberos Server manages **one** Realm only, a Realm can be managed by more than one Kerberos server : this is mandatory to avoid a single point of failure, if a Kerberos server halts for any reason.
+
+## Realm name
+
+In order to distinguish the **Realms**, we give them a unique name. This name can be anything, but a convention is to use the DNS name of the Kerberos server, and to use uppercase.
+
+For instance, say that th Kerberos server is installed on a machine whose domain name is **apache.org**, then we will use **APACHE.ORG** as the **Realm** name (but you could use **Apache.org** or even **MyApacheDomain**).
+
+<DIV class="info" markdown="1">
+Note that the name is case sensitive. **apache.org** is a different realm than **APACHE.ORG**.
+</DIV>
+
+The **Realm** name wil be used all over Kerberos to name **Principals** and **Services**
+
+## Default Realm for ApacheDS Kerberos Server
+
+When **ApacheDS Kerberos Server** installed, the default **Realm** name is set to **EXAMPLE.COM**. This can be changed either using **Studio**, by accessing the server configuration and changing the 'Primary KDC Realm', as show in this picture :
+
+<DIV align="center">
+ <img alt="Kerberos Realm Configuration" src="images/kerberos-realm-config.png">
+</DIV>
+
+or by modifying the LDIF configuration directly, by modifying the following entry :
+
+
+ dn: ads-serverId=kerberosServer,ou=servers,ads-directoryServiceId=default,ou=config
+ ...
+ ads-krbprimaryrealm: EXAMPLE.COM
+ ...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/1.1.2-principals.md b/source/apacheds/kerberos-ug/1.1.2-principals.md
new file mode 100644
index 0000000..a1edf61
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.2-principals.md
@@ -0,0 +1,44 @@
+---
+title: 1.1.2 - Principals
+navPrev: 1.1.1-realms.html
+navPrevText: 1.1.1 - Realms
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.3-keys.html
+navNextText: 1.1.3 - Keys
+---
+
+# 1.1.2 - Principals
+
+The Kerberos **Principal** is any entity to which the server can assign a **Ticket**. Typically, we can think of three kinds of **Principals** :
+
+ * Users
+ * Services
+ * Hosts
+
+Each **Principal** is unique in the Kerberos database. This is the way we identify the entity.
+
+A Kerberos **Principal** is a combination of three parts :
+
+ * the name (the primary)
+ * an optional instance
+ * the realm they are associated with
+
+The optional instance is used to provide more than one role to an entity, without having to create N Principals for a single user (an administrator is also a normal user, and it's good to qualify the user by adding his admin qualificiation in one **Principal** to create a new and easy to remember **Principal**)
+
+The **Principal** syntax is the following :
+
+
+ <primary> ['/' <instance>]* '@' <realm>
+
+<DIV class="info" markdown="1">
+For hosts, we use "host" as a primary, and the instances are the hostnames.
+</DIV>
+
+Those are examples of valid **Principals**
+
+ ::test
+ john@APACHE.ORG A user
+ john/admin@APACHE.ORG A user who is an admin
+ host/www.apache.org/apache.org@APACHE.ORG A host with two hostnames
+ ldap/www.apache.org@APACHE.ORG A service (Ldap server)
diff --git a/source/apacheds/kerberos-ug/1.1.3-keys.md b/source/apacheds/kerberos-ug/1.1.3-keys.md
new file mode 100644
index 0000000..6b7f622
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.3-keys.md
@@ -0,0 +1,91 @@
+---
+title: 1.1.3 - Keys
+navPrev: 1.1.2-principals.html
+navPrevText: 1.1.2 - Principals
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.4-kdc.html
+navNextText: 1.1.4 - KDC (Key Distribution Center)
+---
+
+# 1.1.3 - Keys
+
+The **Kerberos** server generates keys based on the password we provide. Those keys are stored in the server and used to encrypt and decrypt the data being exchanged with the client.
+
+The Key is computed using either the user's password or a random value, and is salted with the realm.
+
+<DIV class="INFO" markdown="1">
+Using the realm as the salt offers a level of protection : if one's key is broken on a realm, that does not mean the password is compromised. The key on another realm would still be safe.
+</DIV>
+
+## How it works in ApacheDS ?
+
+When you add a new entry in the server, it generates a secret key using the password and the **Principal** of the added entry. For instance, say we add this entry :
+
+
+ dn: uid=hnelson,ou=users,dc=example,dc=com
+ objectClass: inetOrgPerson
+ objectClass: organizationalPerson
+ objectClass: person
+ objectClass: krb5principal
+ objectClass: krb5kdcentry
+ objectClass: top
+ uid: hnelson
+ userPassword: secret
+ krb5PrincipalName: hnelson@EXAMPLE.COM
+ krb5KeyVersionNumber: 0
+ cn: Horatio Nelson
+ sn: Nelson
+
+the server will automatically create the keys (each one is encoded in ASN.1 BER format), set them as values of krb5key attribute and add to the entry.
+
+Each value of krb5Key attribbute will be in the following ASN.1 format :
+
+ ::text
+ EncryptionKey ::= SEQUENCE {
+ keytype [0] Int32 -- actually encryption type --,
+ keyvalue [1] OCTET STRING
+ }
+
+<DIV class="INFO" mardown="1">
+There is a special case : if the password is "randomkey", the key will be generated using a random number created on the fly.
+</DIV>
+
+<DIV class="INFO" mardown="1">
+Note that we will generate more than one key : we generate one key for each of the supported encryption types.
+
+ApacheDS Kerberos server supports the following set of encryption types :
+
+ * DES_CBC_MD5
+ * DES3_CBC_SHA1_KD
+ * RC4_HMAC
+ * AES128_CTS_HMAC_SHA1_96
+ * AES256_CTS_HMAC_SHA1_96
+
+The default encryption types used by the server are, aes128-cts-hmac-sha1-96, des-cbc-md5 and des3-cbc-sha1-kd DES_CBC_MD5. The supported encryption types can be added or removed by modifying the Kerberos server configuration.
+</DIV>
+
+
+The modified entry will now look like :
+
+
+ dn: uid=hnelson,ou=users,dc=example,dc=com
+ objectClass: inetOrgPerson
+ objectClass: organizationalPerson
+ objectClass: person
+ objectClass: krb5principal
+ objectClass: krb5kdcentry
+ objectClass: top
+ uid: hnelson
+ userPassword: secret
+ krb5PrincipalName: hnelson@EXAMPLE.COM
+ krb5KeyVersionNumber: 0
+ cn: Horatio Nelson
+ sn: Nelson
+ krb5Key: '0x30 0x29 0xA0 0x03 0x02 0x01 0x12 0xA1 0x22 0x04 0x20 0x3D 0x33 0x31 0x8F 0xBE ...'
+ krb5Key: '0x30 0x21 0xA0 0x03 0x02 0x01 0x10 0xA1 0x1A 0x04 0x18 0x57 0x07 0xCE 0x29 0x52 ...'
+ krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x17 0xA1 0x12 0x04 0x10 0x87 0x8D 0x80 0x14 0x60 ...'
+ krb5Key: '0x30 0x11 0xA0 0x03 0x02 0x01 0x03 0xA1 0x0A 0x04 0x08 0xF4 0xA7 0x13 0x64 0x8A ...'
+ krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x11 0xA1 0x12 0x04 0x10 0xAD 0x21 0x4B 0x38 0xB6 ...'
+
+Each of these keys match one of the EncryptionType.
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/1.1.4-kdc.md b/source/apacheds/kerberos-ug/1.1.4-kdc.md
new file mode 100644
index 0000000..9b7a06a
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.4-kdc.md
@@ -0,0 +1,36 @@
+---
+title: 1.1.4 - KDC (Key Distribution Center)
+navPrev: 1.1.3-keys.html
+navPrevText: 1.1.3 - Keys
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.5-database.html
+navNextText: 1.1.5 - Database
+---
+
+# 1.1.4 - KDC (Key Distribution Center)
+
+The **KDC** contains three components :
+* an Authentication Service
+* a Ticket Granting Service
+* a database (ApacheDS)
+
+The **KDC** role is to authenticate users and distribute tickets based on the information stored in its database.
+
+The **Apache Kerberos Server** contains all these three components and hence is a **KDC**.
+
+<DIV class="info" markdown="1">
+We could allow the **Kerberos Server** to manage more than one **KDC**, but this is not currently possible.
+</DIV>
+
+The **KDC** is associated with a **Realm**.
+
+The following schema expose the way the **KDC** works :
+
+<DIV align="center">
+ <img alt="KDC usage" src="images/kerberos-auth.png">
+</DIV>
+
+In order to use a service, the client needs to get a ticket for this service from the **KDC**. This requires a two step process, where the client first authenticates himself, and then get back a ticket to use with the targeted server.
+
+Though the Autehntication and Ticket Granting services look like running in separate servers, a signle Kerberos server implementation oftent contains both.
diff --git a/source/apacheds/kerberos-ug/1.1.5-database.md b/source/apacheds/kerberos-ug/1.1.5-database.md
new file mode 100644
index 0000000..4a46b94
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.5-database.md
@@ -0,0 +1,97 @@
+---
+title: 1.1.5 - Database
+navPrev: 1.1.4-kdc.html
+navPrevText: 1.1.4 - KDC (Key Distribution Center)
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.6-as.html
+navNextText: 1.1.6 - AS (Authentication Server)
+---
+
+# 1.1.5 - Database
+
+This is the place where all the private keys are stored. It is very common to store all the keys in an LDAP server, even more natural when the **Kerberos** server is a part of an existing LDAP server, like **Apache Directory Server* !
+
+When **Apache Directory Server** was started, it was also thought as a repository for **Kerberos** keys, so we just had to develop the logic to manage those keys, and the Kerberos protocol.
+
+In other words, you have everything embedded in a single server :
+* The LDAP server to store the keys and other related information
+* The Kerberos protocol
+* The Authentication Server
+* The Ticket Granting Server
+
+We will focus on the database in this section.
+
+## Storage
+
+We store everthing related to users, hosts and services in the LDAP base, as entries. In order to be able to retrieve them, we have to store them in a known place in the hierarchy. This position is fknown by the kerberos server using the
+**Search Base DN** parameter.
+
+Everytime the **Kerberos** server received a request for a ticket from a principal, it will do a LDAP search starting from the **Search Base DN**, looking for any entry matching the filter _'(krb5PrincipalName=<the principal>)'_. This entry should contain the Kerberos keys that will be used to generate the ticket.
+
+One more requirement : the key as a version which allows a user to keep going with a previous key when he just changed its password (an operation that will change the Kerberos keys).
+
+So for an LDAP entry to be seen as a valid Kerberos entry, it has to contain a _Krb5PrincipalName_, a _Krb5Key_ and one more attribute, the _Krb5KeyVersionNumber_.
+
+
+## Structure
+
+There is an existing **LDAP** schema to manage the keys and other information, named **krb5kdc**. It contains 3 ObjectClasses and 15 AttributeTypes.
+
+All the ObjectClasses are auxilliary.
+
+### krb5Principal
+
+This ObjectClass is used to store a Principal. It contains one mandatory AttributeType, _krb5PrincipalName_, and two optionnal (_cn_ and _krb5PrincipalRealm_)
+
+### krb5Realm
+
+This ObjectClass describes a Kerberos Realm. It just contains the Realm's name (_krb5RealName_ AttributeType).
+
+## krb5kdcEntry
+
+This ObjectClass is used to store all the information needed to manage a Kerberos user or service. It has one mandatory AttributeType, _krb5KeyVersioNumber_, which is set to 0 for newly crated users or services, and incremented after each modification done on the password (which leads to the generation of new keys).
+
+Here is a list of optional AttributeTypes the entry can have :
+
+| AttributeType | Description |
+|---|---|
+| krb5ValidStart | The date at which the keys are valid |
+| krb5ValidEnd | The date at which the keys aren't valid any more |
+| krb5PasswordEnd | The end of password validity |
+| krb5MaxLife | The maximum duration |
+| krb5MaxRenew | Th maximum number of renew |
+| krb5KDCFlags | The KDC flags |
+| krb5EncryptionType | The EncryptionTypes |
+| krb5Key | The generated keys |
+| krb5AccountDisabled | The account has been disabled |
+| krb5AccountLockedOut | The account has been locked out |
+| krb5AccountExpirationTime | The account expiration time |
+
+## Sample
+
+Here is a sample entry, which has the _Krb5KdcEntry_ and _Krb5Principal_ ObjectClasses set :
+
+
+
+ dn: uid=hnelson,ou=users,dc=example,dc=com
+ objectClass: inetOrgPerson
+ objectClass: organizationalPerson
+ objectClass: person
+ objectClass: krb5principal
+ objectClass: krb5kdcentry
+ objectClass: top
+ uid: hnelson
+ userPassword: secret
+ krb5PrincipalName: hnelson@EXAMPLE.COM
+ krb5KeyVersionNumber: 0
+ cn: Horatio Nelson
+ sn: Nelson
+ krb5Key: '0x30 0x29 0xA0 0x03 0x02 0x01 0x12 0xA1 0x22 0x04 0x20 0x3D 0x33 0x31 0x8F 0xBE ...'
+ krb5Key: '0x30 0x21 0xA0 0x03 0x02 0x01 0x10 0xA1 0x1A 0x04 0x18 0x57 0x07 0xCE 0x29 0x52 ...'
+ krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x17 0xA1 0x12 0x04 0x10 0x87 0x8D 0x80 0x14 0x60 ...'
+ krb5Key: '0x30 0x11 0xA0 0x03 0x02 0x01 0x03 0xA1 0x0A 0x04 0x08 0xF4 0xA7 0x13 0x64 0x8A ...'
+ krb5Key: '0x30 0x19 0xA0 0x03 0x02 0x01 0x11 0xA1 0x12 0x04 0x10 0xAD 0x21 0x4B 0x38 0xB6 ...'
+
+
+
diff --git a/source/apacheds/kerberos-ug/1.1.6-as.md b/source/apacheds/kerberos-ug/1.1.6-as.md
new file mode 100644
index 0000000..47c3871
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.6-as.md
@@ -0,0 +1,51 @@
+---
+title: 1.1.6 - AS (Authentication Server)
+navPrev: 1.1.5-database.html
+navPrevText: 1.1.5 - Database
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.7-tgs.html
+navNextText: 1.1.7 - TGS (Ticket Granting Server)
+---
+
+# 1.1.6 - AS (Authentication Server)
+
+One of the two server components of a **Kerberos** server is the Authentication Server, which authenticates clients, and issues tickets (**TGT**, or _Ticket Granting Ticket_) that the user can send to the **TGS** to get a service ticket.
+
+<DIV class="info" markdown="1">
+The <B>TGT</B>, or <EM>Ticket Granting Ticket</EM>, is a ticket that a client can use to get a service ticket. In fact, the authentication server considers the <B>TGS</B> as just another service, and generates a ticket for the user to access this service.
+</DIV>
+
+The beauty of the **AS** is that it does not verify that the client issuing a request is a valid client : it just returns a tickat that an attacker won't be able to process if he does not have the client's password.
+
+## Exhanges between the client and the AS
+
+As we can see, for the client to get a **TGT**, it's just a matter of sending a simple request, which is sent without any encryption whatsoever (some might consider that a BER encoded message is already cryptic enough, though ;-).
+
+Here is the standard exchange :
+
+<DIV align="center">
+ <img alt="Kerberos Authentication with no pre-auth" src="images/kerberos-as-no-padata.png">
+</DIV>
+
+There is still a potential security breach in this scenario : as the server issues a **TGT** to the client, containing the secret key built using the user's password, it is possible to decrypt the ticket using a brute force attack (and this is more likely to happen if the password is weak...)
+
+Of course, as each ticket has a limited life time, the ticket won't be valid when the attaker successfully cracked the ticket, but that doesn't matter : the user's password is now known, and a new ticket can be requested safely, giving access to the services.
+
+**Kerberos 5** introduced a mechanism to workaround this issue : the user has to provide a proof that he is who he pretends to be. As we can see, it defeats the premise we made : the **Kerberos** still wants to check the users...
+
+Note that it's an option, so if you trust your users' password strength, then you don't need to send the server this proof.
+
+### Pre-Authentication
+
+Now, let's see how does a client 'proves' that he is who he pretends to be. The protocol allows the server to ask for some proof, by the means of asking the client to send the server a timestamp encrypted with the user's secret key : if the server can decrypt the timestamp using the client's secret key, then that proves the client's identity, and now the server can send the **TGT**. This exchange is called PreAuthentication.
+
+Here is the exchange, when :
+
+<DIV align="center">
+ <img alt="Kerberos Authentication with pre-auth" src="images/kerberos-as-padata.png">
+</DIV>
+
+
+
+
diff --git a/source/apacheds/kerberos-ug/1.1.7-tgs.md b/source/apacheds/kerberos-ug/1.1.7-tgs.md
new file mode 100644
index 0000000..de7404d
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.7-tgs.md
@@ -0,0 +1,30 @@
+---
+title: 1.1.7 - TGS (Ticket Granting Server)
+navPrev: 1.1.6-as.html
+navPrevText: 1.1.6 - As (Authentication Server)
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.1.8-tickets.html
+navNextText: 1.1.8 - Tickets
+---
+
+# 1.1.7 - TGS (Ticket Granting Server)
+
+The second major service is the **Ticket Granting Server**, which is the service that delivers tickets for all the managed services to the users.
+
+A client can access to this service fater having been authenticated - ie, after having received a ticket allowing it to access the **TGS** from the **AS** -.
+
+At this point, all the exchanges are encrypted using the user session key.
+
+Ther is not too much to tell about this service, except that ach request sent by the client contains the targeted service principal name, and the ticket issued by the **AS**.
+
+## How it works ?
+
+When the **TGS** receives a request, it will read the ticket contained in the request, and will validate it. If the ticket has been issued by the **AS**, then the **TGS** has the **AS** secret key and can decrypt the ticket, otherwise it's potentially a forged ticket, and it will be discarded.
+
+The **TGS** then generate a ticket for the targted service, and enncryt it using the service's secret key, then encapsulate this encypted ticket into a response which will be itself encrypted using the client's secret key.
+
+The client will receive this response, will decrypt it and extract the encypted ticket, and will send this encrypted ticket to the targeted service, which will be able to decrypt it and validate it.
+
+Of course, in the mean time, many checks will be done relative to the ticket validity, so one can be assured that the service is only accessible by those with the credential to do so.
+
diff --git a/source/apacheds/kerberos-ug/1.1.8-tickets.md b/source/apacheds/kerberos-ug/1.1.8-tickets.md
new file mode 100644
index 0000000..8cc5a0a
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.1.8-tickets.md
@@ -0,0 +1,27 @@
+---
+title: 1.1.8 - Tickets
+navPrev: 1.1.7-tgs.html
+navPrevText: 1.1.7 - TGS (Ticket Granting Server)
+navUp: 1.1-introduction.html
+navUpText: 1.1 - Introduction
+navNext: 1.2-resources.html
+navNextText: 1.2 - Resources
+---
+
+# 1.1.8 - Tickets
+
+All the **kerberos** system is based on the dstribution of tickets.
+
+A **Ticket** is an encrypted data generated by the Kerberos Server and used by a service. It gives the right for a user to access a service, assuming the service can decrypt the ticket.
+
+It also contains many other fields, like the ticket's expiration date, for instance.
+
+## What's inside a Ticket ?
+
+Here are the information that can be found in a ticket. Most of them are encrypted using the service's secret key.
+
+<DIV align="center">
+ <img alt="Ticket" src="images/ticket.png">
+</DIV>
+
+The blue boxes are optionnal informations.
diff --git a/source/apacheds/kerberos-ug/1.2-resources.md b/source/apacheds/kerberos-ug/1.2-resources.md
new file mode 100644
index 0000000..fa8cfaa
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.2-resources.md
@@ -0,0 +1,15 @@
+---
+title: 1.2 - Resources
+navPrev: 1.1-intoduction.html
+navPrevText: 1.1 - Introduction
+navUp: 1-kerberos.html
+navUpText: 1 - What is Kerberos ?
+navNext: 1.2.1-kerberos-articles.html
+navNextText: 1.2.1 - Kerberos Articles
+---
+
+## Table of content
+
+* [1.2.1 - Kerberos Articles](1.2.1-kerberos-articles.html)
+* [1.2.2 - Microsoft compatibility](1.2.2-microsoft-compatibility.html)
+* [1.2.3 - Standards](1.2.3-standards.html)
diff --git a/source/apacheds/kerberos-ug/1.2.1-kerberos-articles.md b/source/apacheds/kerberos-ug/1.2.1-kerberos-articles.md
new file mode 100644
index 0000000..9e9dafe
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.2.1-kerberos-articles.md
@@ -0,0 +1,17 @@
+---
+title: 1.2.1 - Kerberos Articles
+navPrev: 1.2-resources.html
+navPrevText: 1.2 - Resources
+navUp: 1.2-resources.html
+navUpText: 1.2 - Resources
+navNext: 1.2.2-microsoft-compatibility.html
+navNextText: 1.2.2 - Microsoft compatibility
+---
+
+# 1.2.1 - Kerberos Articles
+
+Here are some articles that are interesting to read :
+
+* [Centralized Authentication with Kerberos 5, Part I](http://www.linuxjournal.com/article/7336)
+
+* [Centralized Authorization Using a Directory Service, Part II](http://www.linuxjournal.com/article/7334)
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.md b/source/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.md
new file mode 100644
index 0000000..84d9933
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.2.2-microsoft-compatibility.md
@@ -0,0 +1,17 @@
+---
+title: 1.2.2 - Microsoft Compatibility
+navPrev: 1.2.1-kerberos-articles.html
+navPrevText: 1.2.1 - Kerberos Articles
+navUp: 1.2-resources.html
+navUpText: 1.2 - Resources
+navNext: 1.2.3-standards.html
+navNextText: 1.2.3 - Standards
+---
+
+# 1.2.2 - Microsoft Compatibility
+
+Some articles to expose the way Kerberos is used by Microsoft ™ :
+
+* [HTTP-Based Cross-Platform Authentication via the Negotiate Protocol](http://msdn.microsoft.com/library/default.asp?url=%2Flibrary%2Fen-us%2Fdnsecure%2Fhtml%2Fhttp-sso-2.asp)
+
+* [RFC 2478 - The Simple and Protected GSS-API Negotiation Mechanism](http://www.ietf.org/rfc/rfc2478.txt)
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/1.2.3-standards.md b/source/apacheds/kerberos-ug/1.2.3-standards.md
new file mode 100644
index 0000000..460024a
--- /dev/null
+++ b/source/apacheds/kerberos-ug/1.2.3-standards.md
@@ -0,0 +1,63 @@
+---
+title: 1.2.3 - Standards
+navPrev: 1.2.2-microsoft-compatibility.html
+navPrevText: 1.2.2 - Microsoft compatibility
+navUp: 1.2-resources.html
+navUpText: 1.2 - Resources
+navNext: 2-kerberos-config.html
+navNextText: 2 - Kerberos Configuration
+---
+
+# 1.2.3 - Standards
+
+The **Kerberos** Protocol is based on public RFCs. There is also a Kerberos woking group at the IETF, you can check [this page](http://datatracker.ietf.org/wg/krb-wg/).
+
+## Obsoleted RFCs
+
+* [RFC 1411](http://www.ietf.org/rfc/rfc1411.txt) - Telnet Authentication: Kerberos Version 4
+* [RFC 1510](http://www.ietf.org/rfc/rfc1510.txt) - The Kerberos Network Authentication Service (V5) (Obsoleted by 4120, 6649)
+
+## Valid RFS and updates
+
+* [RFC 1964](http://www.ietf.org/rfc/rfc1964.txt) - The Kerberos Version 5 GSS-API Mechanism (updated by 4121, 6649)
+* [RFC 2623](http://www.ietf.org/rfc/rfc2623.txt) - NFS Version 2 and Version 3 Security Issues and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5
+* [RFC 2712](http://www.ietf.org/rfc/rfc2712.txt) - Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)
+* [RFC 2942](http://www.ietf.org/rfc/rfc2942.txt) - Telnet Authentication: Kerberos Version 5
+* [RFC 3244](http://www.ietf.org/rfc/rfc3244.txt) - Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols
+* [RFC 3961](http://www.ietf.org/rfc/rfc3961.txt) - Encryption and Checksum Specifications for Kerberos 5
+* [RFC 3962](http://www.ietf.org/rfc/rfc3962.txt) - Advanced Encryption Standard (AES) Encryption for Kerberos 5
+* [RFC 4120](http://www.ietf.org/rfc/rfc4120.txt) - The Kerberos Network Authentication Service (V5) (Updated by 4537, 5021, 5896, 6111, 6112, 6113, 6649, 6806)
+* [RFC 4121](http://www.ietf.org/rfc/rfc4121.txt) - The Kerberos Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2 (Updated by 6112, 6542, 6649)
+* [RFC 4402](http://www.ietf.org/rfc/rfc4402.txt) - A Pseudo-Random Function (PRF) for the Kerberos V Generic Security Service Application Program Interface (GSS-API) Mechanism
+* [RFC 4537](http://www.ietf.org/rfc/rfc4537.txt) - Kerberos Cryptosystem Negotiation Extension
+* [RFC 4556](http://www.ietf.org/rfc/rfc4556.txt) - Public Key Cryptography for Initial Authentication in Kerberos (PKINIT) (updated by 6612)
+* [RFC 4557](http://www.ietf.org/rfc/rfc4557.txt) - Online Certificate Status Protocol (OCSP) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
+* [RFC 4559](http://www.ietf.org/rfc/rfc4559.txt) - SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows
+* [RFC 4752](http://www.ietf.org/rfc/rfc4752.txt) - The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer (SASL) Mechanism
+* [RFC 4757](http://www.ietf.org/rfc/rfc4757.txt) - The RC4-HMAC Kerberos Encryption Types Used by Microsoft Windows (updated by 6649)
+* [RFC 5021](http://www.ietf.org/rfc/rfc5021.txt) - Extended Kerberos Version 5 Key Distribution Center (KDC) Exchanges over TCP
+* [RFC 5179](http://www.ietf.org/rfc/rfc5179.txt) - Generic Security Service Application Program Interface (GSS-API) Domain-Based Service Names Mapping for the Kerberos V GSS Mechanism
+* [RFC 5349](http://www.ietf.org/rfc/rfc5349.txt) - Elliptic Curve Cryptography (ECC) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
+* [RFC 5868](http://www.ietf.org/rfc/rfc5868.txt) - Problem Statement on the Cross-Realm Operation of Kerberos
+* [RFC 5896](http://www.ietf.org/rfc/rfc5896.txt) - Generic Security Service Application Program Interface (GSS-API): Delegate if Approved by Policy
+* [RFC 6111](http://www.ietf.org/rfc/rfc6111.txt) - Additional Kerberos Naming Constraints
+* [RFC 6112](http://www.ietf.org/rfc/rfc6112.txt) - Anonymity Support for Kerberos
+* [RFC 6113](http://www.ietf.org/rfc/rfc6113.txt) - A Generalized Framework for Kerberos Pre-Authentication
+* [RFC 6251](http://www.ietf.org/rfc/rfc6251.txt) - Using Kerberos Version 5 over the Transport Layer Security (TLS) Protocol
+* [RFC 6448](http://www.ietf.org/rfc/rfc6448.txt) - The Unencrypted Form of Kerberos 5 KRB-CRED Message
+* [RFC 6542](http://www.ietf.org/rfc/rfc6542.txt) - Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Channel Binding Hash Agility
+* [RFC 6560](http://www.ietf.org/rfc/rfc6560.txt) - One-Time Password (OTP) Pre-Authentication
+* [RFC 6649](http://www.ietf.org/rfc/rfc6649.txt) - Deprecate DES, RC4-HMAC-EXP, and Other Weak Cryptographic Algorithms in Kerberos
+* [RFC 6784](http://www.ietf.org/rfc/rfc6784.txt) - Kerberos Options for DHCPv6
+* [RFC 6803](http://www.ietf.org/rfc/rfc6803.txt) - Camellia Encryption for Kerberos 5
+* [RFC 6806](http://www.ietf.org/rfc/rfc6806.txt) - Kerberos Principal Name Canonicalization and Cross-Realm Referrals
+
+## Here are some drafts :
+
+* [draft-burgin-kerberos-aes-cbc-hmac-sha2](http://www.ietf.org/id/draft-burgin-kerberos-aes-cbc-hmac-sha2-02.txt) - AES Encryption with HMAC-SHA2 for Kerberos 5
+* [draft-burgin-kerberos-suiteb](http://www.ietf.org/id/draft-burgin-kerberos-suiteb-01.txt) - Suite B Profile for Kerberos 5
+* [draft-ietf-kitten-kerberos-iana-registries](http://www.ietf.org/id/draft-ietf-kitten-kerberos-iana-registries-00.txt) - Move Kerberos protocol parameter registries to IANA
+* [draft-ietf-krb-wg-cammac](http://www.ietf.org/id/draft-ietf-krb-wg-cammac-03.txt) - Kerberos Authorization Data Container Authenticated by Multiple MACs
+* [draft-ietf-krb-wg-kdc-model](http://www.ietf.org/id/draft-ietf-krb-wg-kdc-model-16.txt) - An information model for Kerberos version 5
+* [draft-ietf-krb-wg-pkinit-alg-agility](http://www.ietf.org/id/draft-ietf-krb-wg-pkinit-alg-agility-07.txt) - PKINIT Algorithm Agility
+* [draft-perez-krb-wg-gss-preauth](http://www.ietf.org/id/draft-perez-krb-wg-gss-preauth-02.txt) - GSS-API pre-authentication for Kerberos draft-perez-krb-wg-gss-preauth-02
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2-kerberos-config.md b/source/apacheds/kerberos-ug/2-kerberos-config.md
new file mode 100644
index 0000000..072196e
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2-kerberos-config.md
@@ -0,0 +1,22 @@
+---
+title: 2 - Kerberos Configuration
+navPrev: 1.2.3-standards.html
+navPrevText: 1.2.3 - Standards
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+navNext: 2.1-installing.html
+navNextText: 2.1 - Installing the server
+---
+
+## Table of content
+
+* [2.1 - Installing the server](2.1-installing.html)
+* [2.2 - LDAP server configuration](2.2-ldap-server-config.html)
+* [2.3 - Kerberos server configuration](2.3-kerberos-server-config.html)
+* [2.4 - Kerberos and Unlimited Strength Policy](2.4-kerberos-ulp.html)
+* [2.5 - PKINIT](2.5-pkinit.html)
+* [2.6 - Cross Realm](2.6-cross-realm.html)
+
+# 2 - Kerberos Configuration
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.1-installing.md b/source/apacheds/kerberos-ug/2.1-installing.md
new file mode 100644
index 0000000..143f338
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.1-installing.md
@@ -0,0 +1,13 @@
+---
+title: 2.1 - Installing the server
+navPrev: 2-kerberos-config.html
+navPrevText: 2 - Kerberos Configuration
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 2.2-ldap-server-config.html
+navNextText: 2.2 - LDAP server configuration
+---
+
+# 2.1 - Installing the server
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.2-ldap-server-config.md b/source/apacheds/kerberos-ug/2.2-ldap-server-config.md
new file mode 100644
index 0000000..b730ee1
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.2-ldap-server-config.md
@@ -0,0 +1,13 @@
+---
+title: 2.2 - LDAP server configuration
+navPrev: 2.1-installing.html
+navPrevText: 2.1 - Installing the server
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 2.3-kerberos-server-config.html
+navNextText: 2.3 - Kerberos server configuration
+---
+
+# 2.2 - LDAP server configuration
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.3-kerberos-server-config.md b/source/apacheds/kerberos-ug/2.3-kerberos-server-config.md
new file mode 100644
index 0000000..754d8ba
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.3-kerberos-server-config.md
@@ -0,0 +1,13 @@
+---
+title: 2.3 - Kerberos server configuration
+navPrev: 2.2-ldap-server-config.html
+navPrevText: 2.2 - LDAP server configuration
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 2.4-kerberos-ulp.html
+navNextText: 2.4 - Kerberos and Unlimited Strength Policy
+---
+
+# 2.3 - Kerberos server configuration
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.4-kerberos-ulp.md b/source/apacheds/kerberos-ug/2.4-kerberos-ulp.md
new file mode 100644
index 0000000..206a7ba
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.4-kerberos-ulp.md
@@ -0,0 +1,13 @@
+---
+title: 2.4 - Kerberos and Unlimited Strength Policy
+navPrev: 2.3-kerberos-server-config.html
+navPrevText: 2.3 - Kerberos server configuration
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 2.5-pkinit.html
+navNextText: 2.5 - PKINIT
+---
+
+# 2.4 - Kerberos and Unlimited Strength Policy
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.5-pkinit.md b/source/apacheds/kerberos-ug/2.5-pkinit.md
new file mode 100644
index 0000000..b6b393f
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.5-pkinit.md
@@ -0,0 +1,13 @@
+---
+title: 2.5 - PKINIT
+navPrev: 2.4-kerberos-ulp.html
+navPrevText: 2.4 - Kerberos and Unlimited Strength Policy
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 2.6-cross-realm.html
+navNextText: 2.6 - Cross Realm
+---
+
+# 2.5 - PKINIT
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/2.6-cross-realm.md b/source/apacheds/kerberos-ug/2.6-cross-realm.md
new file mode 100644
index 0000000..5b03171
--- /dev/null
+++ b/source/apacheds/kerberos-ug/2.6-cross-realm.md
@@ -0,0 +1,13 @@
+---
+title: 2.6 - Cross Realm
+navPrev: 2.5-pkinit.html
+navPrevText: 2.5 - PKINIT
+navUp: 2-kerberos-config.html
+navUpText: 2 - Kerberos Configuration
+navNext: 3-kerberos-admin.html
+navNextText: 3 - Kerberos administration
+---
+
+# 2.6 - Cross Realm
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3-kerberos-admin.md b/source/apacheds/kerberos-ug/3-kerberos-admin.md
new file mode 100644
index 0000000..f5bbd23
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3-kerberos-admin.md
@@ -0,0 +1,22 @@
+---
+title: 3 - Kerberos administration
+navPrev: 2.6-cross-realm.html
+navPrevText: 2.6 - Cross Realm
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+navNext: 3.1-start-stop.html
+navNextText: 3.1 - Starting and Stopping the server
+---
+
+## Table of content
+
+* [3.1 - Starting and Stopping the server](3.1-start-stop.html)
+* [3.2 - Managing Clients and Services](3.2-managing-clients-services.html)
+* [3.3 - Changing passwords](3.3-change-password.html)
+* [3.4 - Logs](3.4-logs.html)
+* [3.5 - Replication](3.5-replication.html)
+* [3.6 - Backup/Restore](3.6-backup-restore.html)
+
+# 3 - Kerberos administration
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.1-start-stop.md b/source/apacheds/kerberos-ug/3.1-start-stop.md
new file mode 100644
index 0000000..20306cf
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.1-start-stop.md
@@ -0,0 +1,13 @@
+---
+title: 3.1 - Starting and Stopping the server
+navPrev: 3-kerberos-admin.html
+navPrevText: 3 - Kerberos administration
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 3.2-managing-clients-services.html
+navNextText: 3.2 - Managing Clients and Services
+---
+
+# 3.1 - Starting and Stopping the server
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.2-managing-clients-services.md b/source/apacheds/kerberos-ug/3.2-managing-clients-services.md
new file mode 100644
index 0000000..74761fb
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.2-managing-clients-services.md
@@ -0,0 +1,13 @@
+---
+title: 3.2 - Managing Clients and Services
+navPrev: 3.1-start-stop.html
+navPrevText: 3.1 - Starting and Stopping the server
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 3.3-change-password.html
+navNextText: 3.3 - Changing passwords
+---
+
+# 3.2 - Managing Clients and Services
+
+ TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.3-change-password.md b/source/apacheds/kerberos-ug/3.3-change-password.md
new file mode 100644
index 0000000..46a4e0f
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.3-change-password.md
@@ -0,0 +1,13 @@
+---
+title: 3.3 - Changing passwords
+navPrev: 3.2-managing-clients-services.html
+navPrevText: 3.2 - Managing Clients and Services
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 3.4-logs.html
+navNextText: 3.4 - Logs
+---
+
+# 3.3 - Changing passwords
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.4-logs.md b/source/apacheds/kerberos-ug/3.4-logs.md
new file mode 100644
index 0000000..9548c4c
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.4-logs.md
@@ -0,0 +1,13 @@
+---
+title: 3.4 - Logs
+navPrev: 3.3-change-password.html
+navPrevText: 3.3 - Changing passwords
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 3.5-replication.html
+navNextText: 3.5 - Replication
+---
+
+# 3.4 - Logs
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.5-replication.md b/source/apacheds/kerberos-ug/3.5-replication.md
new file mode 100644
index 0000000..f40d00c
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.5-replication.md
@@ -0,0 +1,13 @@
+---
+title: 3.5 - Replication
+navPrev: 3.4-logs.html
+navPrevText: 3.4 - Logs
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 3.6-backup-restore.html
+navNextText: 3.6 - Backup/Restore
+---
+
+# 3.5 - Replication
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/3.6-backup-restore.md b/source/apacheds/kerberos-ug/3.6-backup-restore.md
new file mode 100644
index 0000000..e5a2e0c
--- /dev/null
+++ b/source/apacheds/kerberos-ug/3.6-backup-restore.md
@@ -0,0 +1,13 @@
+---
+title: 3.6 - Backup/Restore
+navPrev: 3.5-replication.html
+navPrevText: 3.5 - Replication
+navUp: 3-kerberos-admin.html
+navUpText: 3 - Kerberos administration
+navNext: 4-using-kerberos.html
+navNextText: 4 - Using Kerberos
+---
+
+# 3.6 - Backup/Restore
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/4-using-kerberos.md b/source/apacheds/kerberos-ug/4-using-kerberos.md
new file mode 100644
index 0000000..f49e321
--- /dev/null
+++ b/source/apacheds/kerberos-ug/4-using-kerberos.md
@@ -0,0 +1,21 @@
+---
+title: 4 - Using Kerberos
+navPrev: 3.6-backup-restore.html
+navPrevText: 3.6 - Backup/Restore
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+navNext: 4.1-authenticate-kinit.html
+navNextText: 4.1 - Authenticate with kinit on Linux
+---
+
+## Table of content
+
+* [4.1 - Authenticate with kinit on Linux](4.1-authenticate-kinit.html)
+* [4.2 - Authenticate with Studio](4.2-authenticate-studio.html)
+
+# 4 - Using Kerberos
+
+We will now describe how to use kerberos, namely how to obtain tickets.
+
+We will use either the **kinit** program installed on **Linux** or **Studio** for that.
+
diff --git a/source/apacheds/kerberos-ug/4.1-authenticate-kinit.md b/source/apacheds/kerberos-ug/4.1-authenticate-kinit.md
new file mode 100644
index 0000000..e5c2c66
--- /dev/null
+++ b/source/apacheds/kerberos-ug/4.1-authenticate-kinit.md
@@ -0,0 +1,88 @@
+---
+title: 4.1 - Authenticate with kinit on Linux
+navPrev: 4-using-kerberos
+navPrevText: 4 - Using Kerberos
+navUp: 4-using-kerberos.html
+navUpText: 4 - Using Kerberos
+navNext: 4.2-authenticate-studio.html
+navNextText: 4.2 - Authenticate with Studio
+---
+
+# 4.1 - Authenticate with kinit on Linux
+
+##Setup
+
+You first have to make sure **kinit** is installed.
+
+You can check that by typing **kinit** in a console :
+
+
+ $ kinit --version
+ kinit (Heimdal 1.4.1apple1)
+ Copyright 1995-2010 Kungliga Tekniska Högskolan
+ Send bug-reports to heimdal-bugs@h5l.org
+ $
+
+Then, you have to configure the **krb5.conf** file (it can be found in **/etc/krb5.conf**, if not just add it).
+
+
+A minimal /etc/krb5.conf file looks as follows (make sure the port and host name matches!):
+
+
+ [libdefaults]
+ default_realm = EXAMPLE.COM
+
+ [realms]
+ EXAMPLE.COM = {
+ kdc = example.net:60088
+ }
+
+ [domain_realm]
+ .example.com = EXAMPLE.COM
+ example.com = EXAMPLE.COM
+
+
+Check that the **Kerberos** sevrer is started, then try to get a ticket from a user that exists in the base (here, we use hnelson, which is a user we created for test purposes. His password is 'secret')
+
+
+ $ kinit hnelson@EXAMPLE.COM
+ Password for hnelson@EXAMPLE.COM:
+ $
+
+You should not get any error. If you've get some, see later in this chapter.
+
+Now, let's check that we have correctly obtained a ticket. We will use the **klist** tool for that :
+
+
+ $ klist -v
+ Credentials cache: API:501:9
+ Principal: hnelson@EXAMPLE.COM
+ Cache version: 0
+
+ Server: krbtgt/EXAMPLE.COM@EXAMPLE.COM
+ Client: hnelson@EXAMPLE.COM
+ Ticket etype: aes128-cts-hmac-sha1-96
+ Ticket length: 256
+ Auth time: Feb 11 16:11:36 2013
+ End time: Feb 12 02:11:22 2013
+ Renew till: Feb 18 16:11:36 2013
+ Ticket flags: pre-authent, initial, renewable, forwardable
+ Addresses: addressless
+ $
+
+As we can see, we have obtained a ticket which will expire 6 hours after its creation, which can be renexed for 7 days, encrypted using AES-128 algorithm, ticket that can be used by the **TGS**.
+
+All is good !
+
+## Troubleshooting
+
+So it does not work...
+
+There are many possible reason why you can't get a ticket.
+
+### kinit: krb5_get_init_creds: unable to reach any KDC in realm EXAMPLE.COM
+
+Such a error says that the server is not reachable. Check those points :
+
+* Is the server started ?
+* Is the EXAMPLE.COM domain declared in your DNS (or /etc/hosts file) ?
diff --git a/source/apacheds/kerberos-ug/4.2-authenticate-studio.md b/source/apacheds/kerberos-ug/4.2-authenticate-studio.md
new file mode 100644
index 0000000..120bcea
--- /dev/null
+++ b/source/apacheds/kerberos-ug/4.2-authenticate-studio.md
@@ -0,0 +1,298 @@
+---
+title: 4.2 - Authenticate with Studio
+navPrev: 4.1-authenticate-kinit.html
+navPrevText: 4.1 - Authenticate with kinit on Linux
+navUp: 4-using-kerberos.html
+navUpText: 4 - Using Kerberos
+navNext: 5-interoperability.html
+navNextText: 5 - Interoperability
+---
+
+# 4.1 - Authenticate with Studio
+
+We will explain how to use the kerberos server to authentify users on a LDAP server. Let's first define the way we will store data in the LDAP server
+
+<DIV class="info" markdown="1">
+We will suppose that the <strong>Kerberos</strong> server is installed on a server which <em>hostName</em> is <strong>example.net</strong> and the <em>realm</em> is <strong>EXAMPLE.COM</strong> in the following paragraphes.
+</DIV>
+
+## Servers configuration
+
+We first have to configure the **LDAP** and **Kerberos** server, in order to be able to use the kerberos server to authenticate on the ldap server.
+
+If you have installed the **ApacheDS** package, the simplest way is to start the server, and to connect on it using Studio, using the _uid=admin,ou=system_ user with _secret_ as a password (this password will have to be changed later !).
+
+<DIV align="center">
+ <img alt="Admin Connection" src="images/admin-connection.png">
+</DIV>
+
+and :
+
+<DIV align="center">
+ <img alt="Admin Authentication" src="images/admin-authentication.png">
+</DIV>
+
+Once connected, right click on the connection :
+
+<DIV align="center">
+ <img alt="Open Configuration" src="images/open-config.png">
+</DIV>
+
+On the **Overview** tab, check the **Enable Kerberos Server** box :
+
+<DIV align="center">
+ <img alt="Enable Kerberos Server" src="images/enable-kerberos.png">
+</DIV>
+
+### LDAP Server configuration
+
+There are a few parameters that are to be set in the **LDAP** configuration :
+
+ * The SASL host must be the local server name (here, example.net)
+ * The SASL principal is ldap/example.net@EXAMPLE.COM
+ * The Search Base DN should point to the place under which we store users and services (dc=security,dc=example,dc=com)
+
+<DIV class="warning" markdown="1">
+The <em>SASL principal</em> instance part (ie, <strong>example.net</strong>) is in lower case, as the hostname is not case sensitive. Sadly, the <em>KrbPrincipalName</em> attributeType is case sensitive, so if the left part is not lowercased, the server won't be able to retrieve the information from the LDAP server.
+</DIV>
+
+Here is a snapshot of this configuration :
+
+<DIV align="center">
+ <img alt="LDAP configuration" src="images/ldap-config.png" style="width: 100%; height: 100%">
+</DIV>
+
+
+### Kerberos Server configuration
+
+Now, you can switch to the Kerberos tab, where some more configuration must be set :
+
+ * The Primary KDC Realm is EXAMPLE.COM
+ * The Search Base DN is the same as for the LDAP server : dc=security,dc=example,dc=com
+
+Here is a Ssnapshot of this configuration :
+
+<DIV align="center">
+ <img alt="Kerberos configuration" src="images/kerberos-config.png" style="width: 100%; height: 100%">
+</DIV>
+
+The Kerberos server also requires a minimal **krb5.conf** file. The default location of that file is **/etc/krb5.conf**, alternatively you can also put it to **JAVA_HOME/jre/lib/security/krb5.conf**.
+
+
+ [libdefaults]
+ default_realm = EXAMPLE.COM
+
+ [realms]
+ EXAMPLE.COM = {
+ kdc = example.net:60088
+ }
+
+
+Once those modifications have been done, you must restart the server.
+
+### Other configuration
+
+There is one more thing that you need to configure : your domain name (here, example.net_) has to be reachable on your machine. Either you define in on a **DNS** server, or you can also add it in your _/etc/hosts_ file.
+
+Here is a way to add it on a local host :
+
+ ...
+ 127.0.0.1 localhost example.net
+ ...
+
+<DIV class="warning" markdown="1">
+It's largely preferable to declare the server in a DNS.
+</DIV>
+
+## LDAP Hierarchy
+
+We will distinguish between **users** and **services** :
+* Users are human beings, or applications that can log on a service
+* Services are applications on which a user can log in
+
+In our case, the ldap server and the **TGS** are services.
+
+Each user and each service will be declared using an _entry_ in the ldap server.
+
+We will store those entries in a part of the **DIT** where the kerberos server and the ldap server will be able to find them. Assuming we have created our own partition named **dc=example,dc=com**, we will define this hierarchy starting from there :
+
+<DIV align="center">
+ <img alt="Authentification hierarchy" src="images/authent-hierarchy.png">
+</DIV>
+
+This can be injected in the LDAP server using this LDIF :
+
+
+ dn: dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: domain
+ dc: security
+
+ dn: ou=services,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: organizationalUnit
+ ou: services
+
+ dn: ou=users,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: organizationalUnit
+ ou: users
+
+## Users and Service declaration
+
+Now that we have built our container for users and services, we have to declare the users and services so that they can be used through **kerberos**.
+
+### Users
+
+Each user must have the **krb5KDCEntry** objectclass, and the **userPassword** attributeType (which is present in one of the following objectclasses : _dmd_, _domain_, _organization_, _organizationalUnit_, _person_, _posixAccount_, _posixGroup_ and _shadowAccount_, or one of their inheriting objectclass. You can also add it to your own objectclass).
+
+Our users will be _organizationalPerson_, which inherits from _person_.
+
+For our sample test, here is a person we will inject in the LDAP server :
+
+
+ dn: uid=hnelson,ou=users,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: krb5KDCEntry
+ objectClass: inetOrgPerson
+ objectClass: krb5Principal
+ objectClass: person
+ objectClass: organizationalPerson
+ cn: Horatio Nelson
+ krb5KeyVersionNumber: 1
+ krb5PrincipalName: hnelson@EXAMPLE.COM
+ sn: Nelson
+ uid: hnelson
+ userPassword: secret
+
+This user does not have a password yet.
+
+<DIV class="info" markdown="1">
+The import thing is the <em>krb5PrincipalName</em>, which is the one that will be used to bind the user. It has a user login (<strong>hnelson</strong>) and a realm (<strong>EXAMPLE.COM</strong>).
+</DIV>
+
+Once the user has been injected, we can see that the server has created some krb5Key attributes :
+
+
+ dn: uid=hnelson,ou=users,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: krb5KDCEntry
+ objectClass: inetOrgPerson
+ objectClass: krb5Principal
+ objectClass: person
+ objectClass: organizationalPerson
+ cn: Horatio Nelson
+ krb5KeyVersionNumber: 0
+ krb5PrincipalName: hnelson@EXAMPLE.COM
+ sn: Nelson
+ krb5Key:: MBGgAwIBA6EKBAj0pxNkimHOWw==
+ krb5Key:: MBmgAwIBEaESBBCtIUs4tp38yqzxXzRtQXuQ
+ krb5Key:: MCGgAwIBEKEaBBhXB84pUpIsHIy/Q8I9j4xenoz3XT5KXiU=
+ krb5Key:: MBmgAwIBF6ESBBCHjYAUYGzaKWd6RO+hNT/H
+ uid: hnelson
+ userPassword:: e1NTSEF9VnhjYUl4U3JxUnAraWh1dXo2NEhzN1EwbXE0ZHBBQTNsUHJXMGc9P
+ Q==
+
+Those keys have been computed automatically by the Kerberos server. Every time you will change the password, the keys will be updated.
+
+We can add as many users as we want, but keep in mind that the login name should be the first part of the **krb5PrincipalName** attributeType.
+
+### Services
+
+We now have to declare some services : the **krbtgt** service, which delivers tickets, and the **ldap** service.
+
+A user (or a service) which will try to authenticate on the LDAP server will first get a ticket from the **krbtgt** service, then will access the **ldap** service with the provided ticket.
+
+#### krbtgt service
+
+It's pretty much the same operation than for the user : create the entry, define a _krb5PrincipalName_, create a _userPassword_ and inject the entry into the LDAP server.
+
+Here is the associated LDIF file :
+
+
+ dn: uid=ldap,ou=services,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: organizationalUnit
+ objectClass: krb5KDCEntry
+ objectClass: uidObject
+ objectClass: krb5Principal
+ krb5KeyVersionNumber: 0
+ krb5PrincipalName: ldap/example.net@EXAMPLE.COM
+ uid: ldap
+ userPassword: randomKey
+ ou: TGT
+
+ dn: uid=krbtgt,ou=services,dc=security,dc=example,dc=com
+ objectClass: top
+ objectClass: organizationalUnit
+ objectClass: krb5KDCEntry
+ objectClass: uidObject
+ objectClass: krb5Principal
+ krb5KeyVersionNumber: 0
+ krb5PrincipalName: krbtgt/EXAMPLE.COM@EXAMPLE.COM
+ uid: krbtgt
+ userPassword:: randomkey
+ ou: LDAP
+
+<DIV class="info" markdown="1">
+Three important things :
+<ul>
+<li>- the userPassword is 'randomkey'. The key will not be generated based on a know password, they will use a random key.</li>
+<li>- the <em>krb5PrincipalName</em> has one more information, after the / character : <em>EXAMPLE.COM</em> for
+ the <strong>krbtgt</strong> service, and <em>example.net</em> for the <strong>ldap</strong> service. For the <strong>krbtgt</strong> principal, the instance is always the realm name. For the <strong>ldap</strong> principal, the instance is the hostname, in lowercase.</li>
+<li>- the krb5KeyVersionNumber is 0</li>
+</ul>
+</DIV>
+
+Again, once those entries have been injected in the LDAP server, the _krb5Key_ attributeTypes will be created
+
+## Login using Studio
+
+Now that the server is set, and the services and users are stored into it, we can create a new connection using the Kerberos authentication for the created users.
+
+### Create a new connection
+
+On the "Connections" tab, right click and select 'New Connection...'
+
+<DIV align="center">
+ <img alt="New Connection" src="images/new-connection.png">
+</DIV>
+
+You will now have to set the network parameters, as in the following popup. Typically, set :
+
+ * The connection name (here, Kerberos User)
+ * The LDAP server host (example.net)
+ * The LDAP server port (10389)
+ * The Provider (pick Apache Directory LDAP Client API)
+
+You can check the connection on cliking the 'check network connection' button, you should get back a popup stating that the connection was established successfully.
+
+Here is the screenshot :
+
+
+<DIV align="center">
+ <img alt="Network Parameters" src="images/network-parameters.png">
+</DIV>
+
+Then click on Next to setup the authentication part.
+Select the following parameters and values :
+
+ * Authentication method : GSSAPI
+ * Bind DN : the user name (here, hnelson)
+ * Bind password : here, secret
+ * Do not change anything in the SASL settings
+ * Kerberos settings
+ * Obtain TGT from KDC
+ * Use following configuration :
+ * Kerberos Realm : EXAMPLE.COM
+ * KDC Host : example.net
+ * KDC port : 60088
+
+Here is the resulting screen :
+
+<DIV align="center">
+ <img alt="Kerberos authentification" src="images/kerberos-authent.png">
+</DIV>
+
+Clinking in the 'Check Authentication' button should be succesfull.
+
diff --git a/source/apacheds/kerberos-ug/5-interoperability.md b/source/apacheds/kerberos-ug/5-interoperability.md
new file mode 100644
index 0000000..ad79da5
--- /dev/null
+++ b/source/apacheds/kerberos-ug/5-interoperability.md
@@ -0,0 +1,13 @@
+---
+title: 5 Interoperability
+navPrev: 4.2-authenticate-studio.html
+navPrevText: 4.2 - Authenticate with Studio
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+navNext: 6-glossary.html
+navNextText: 6 - Kerberos Glossary
+---
+
+# 5 Interoperability
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-ug/6-glossary.md b/source/apacheds/kerberos-ug/6-glossary.md
new file mode 100644
index 0000000..32c428f
--- /dev/null
+++ b/source/apacheds/kerberos-ug/6-glossary.md
@@ -0,0 +1,13 @@
+---
+title: 6 - Kerberos Glossary
+navPrev: 5-interopability.html
+navPrevText: 5 - Interopability
+navUp: ../kerberos-user-guide.html
+navUpText: Kerberos User Guide
+---
+
+## Table of content
+
+# 6 - Kerberos Glossary
+
+TODO...
\ No newline at end of file
diff --git a/source/apacheds/kerberos-user-guide.md b/source/apacheds/kerberos-user-guide.md
new file mode 100644
index 0000000..54ea802
--- /dev/null
+++ b/source/apacheds/kerberos-user-guide.md
@@ -0,0 +1,46 @@
+---
+title: Kerberos User Guide
+---
+
+# ApacheDS 2.0 Kerberos User Guide
+This guide will help you to configure and use the embedded Kerberos Server.
+
+ApacheDS is not only a LDAP server, it also support the Kerberos Protocl, and is a KDC (Key DIstribution Center), containing a TGS (Ticket Granting Server) and a AS (Authentication Server).
+
+This guide will describe how it works.
+
+# Table of content
+
+* [1 - What is Kerberos](kerberos-ug/1-kerberos.html)
+ * [1.1 - Introduction](kerberos-ug/1.1-introduction.html)
+ * [1.1.1 - Realms](kerberos-ug/1.1.1-realms.html)
+ * [1.1.2 - Principals](kerberos-ug/1.1.2-principals.html)
+ * [1.1.3 - Keys](kerberos-ug/1.1.3-keys.html)
+ * [1.1.4 - KDC (Key Distribution Center)](kerberos-ug/1.1.4-kdc.html)
+ * [1.1.5 - Database](kerberos-ug/1.1.5-database.html)
+ * [1.1.6 - AS (Authentication Server)](kerberos-ug/1.1.6-as.html)
+ * [1.1.7 - TGS (Ticket Granting Server)](kerberos-ug/1.1.7-tgs.html)
+ * [1.1.8 - Tickets](kerberos-ug/1.1.8-tickets.html)
+ * [1.2 - Resources](kerberos-ug/1.2-resources.html)
+ * [1.2.1 - Kerberos Articles](kerberos-ug/1.2.1-kerberos-articles.html)
+ * [1.2.2 - Microsoft compatibility](kerberos-ug/1.2.2-microsoft-compatibility.html)
+ * [1.2.3 - Standards](kerberos-ug/1.2.3-standards.html)
+* [2 - Kerberos Configuration](kerberos-ug/2-kerberos-config.html)
+ * [2.1 - Installing the server](kerberos-ug/2.1-installing.html)
+ * [2.2 - LDAP server configuration](kerberos-ug/2.2-ldap-server-config.html)
+ * [2.3 - Kerberos server configuration](kerberos-ug/2.3-kerberos-server-config.html)
+ * [2.4 - Kerberos and Unlimited Strength Policy](kerberos-ug/2.4-kerberos-ulp.html)
+ * [2.5 - PKINIT](kerberos-ug/2.5-pkinit.html)
+ * [2.6 - Cross Realm](kerberos-ug/2.6-cross-realm.html)
+* [3 - Kerberos administration](kerberos-ug/3-kerberos-admin.html)
+ * [3.1 - Starting and Stopping the server](kerberos-ug/3.1-start-stop.html)
+ * [3.2 - Managing Clients and Services](kerberos-ug/3.2-managing-clients-services.html)
+ * [3.3 - Changing passwords](kerberos-ug/3.3-change-password.html)
+ * [3.4 - Logs](kerberos-ug/3.4-logs.html)
+ * [3.5 - Replication](kerberos-ug/3.5-replication.html)
+ * [3.6 - Backup/Restore](kerberos-ug/3.6-backup-restore.html)
+* [4 - Using Kerberos](kerberos-ug/4-using-kerberos.html)
+ * [4.1 - Authenticate with kinit](kerberos-ug/4.1-authenticate-kinit.html)
+ * [4.2 - Authenticate with Studio](kerberos-ug/4.2-authenticate-studio.html)
+* [5 - Interoperability](kerberos-ug/5-interoperability.html)
+* [6 - Kerberos Glossary](kerberos-ug/6-glossary.html)
diff --git a/source/apacheds/news.md b/source/apacheds/news.md
new file mode 100644
index 0000000..42f1298
--- /dev/null
+++ b/source/apacheds/news.md
@@ -0,0 +1,779 @@
+---
+title: News
+---
+
+# News
+<h2 class="news">ApacheDS 2.0.0.AM26 released <em>posted on March 7th, 2020</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0.AM26, the 26th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This is a major release of ApacheDS. It brings many bug fixes, and is the first version implementing LDAP transactions,
+which are now used internally for atomic operations, but can also be used through an extended operation, to apply many
+operations in one transaction.
+We also have changed the Cache system we were using (ehcache) to use the more efficient and lighter [Caffeine]
+(https://github.com/ben-manes/caffeine/wiki).
+Otherwise, we don't anymore store certificates in the server by default, but use an external keystore.
+
+We can't anymore produce the Mac OSX installer package, we are working on finding a solution for that issue (Apple
+deprecated the MakePackage tool and is now applying way more stringent checks and controls for packages, like
+and Apple signature). This will most certainly be fixed in the next revision.
+
+It uses the Apache LDAP API 2.0.0 release
+
+Here is the release note for Apache Directory ApacheDS 2.0.0.AM26:
+
+<b>Bugs :</b>
+
+* [DIRSERVER-1414](https://issues.apache.org/jira/browse/DIRSERVER-1414) - Normalization is not handling correctly (but this has no impact)
+* [DIRSERVER-1580](https://issues.apache.org/jira/browse/DIRSERVER-1580) - Numerous JUnit tests failing on Windows, again.
+* [DIRSERVER-1878](https://issues.apache.org/jira/browse/DIRSERVER-1878) - Bad warning from 'maven-shade-plugin' when creating the 'apacheds-service' jar
+* [DIRSERVER-1924](https://issues.apache.org/jira/browse/DIRSERVER-1924) - The MavibotPartition entry cache is not correctly set
+* [DIRSERVER-1974](https://issues.apache.org/jira/browse/DIRSERVER-1974) - Rename Operation Issue - ApacheDS
+* [DIRSERVER-2049](https://issues.apache.org/jira/browse/DIRSERVER-2049) - Queries interrupted with delete/add operations
+* [DIRSERVER-2066](https://issues.apache.org/jira/browse/DIRSERVER-2066) - Maven 3.3.x produces Invalid installers/archives
+* [DIRSERVER-2070](https://issues.apache.org/jira/browse/DIRSERVER-2070) - Null pointer exception on kerberos password changing
+* [DIRSERVER-2071](https://issues.apache.org/jira/browse/DIRSERVER-2071) - MinaKerberosDecoder fails with NullPointerException if the kerberos message is split in multiple packets
+* [DIRSERVER-2074](https://issues.apache.org/jira/browse/DIRSERVER-2074) - small default TCP receive/send buffer size causing TCP packet fragmentation on some platforms
+* [DIRSERVER-2089](https://issues.apache.org/jira/browse/DIRSERVER-2089) - AttributeType breaks the equals/hashCode override contract
+* [DIRSERVER-2099](https://issues.apache.org/jira/browse/DIRSERVER-2099) - NOTICE and LICENSE files for DS 2.0.0-M20 are incorrect
+* [DIRSERVER-2146](https://issues.apache.org/jira/browse/DIRSERVER-2146) - Using special chars in uid makes problem
+* [DIRSERVER-2197](https://issues.apache.org/jira/browse/DIRSERVER-2197) - Debian installer package contains the binary 4 times
+* [DIRSERVER-2237](https://issues.apache.org/jira/browse/DIRSERVER-2237) - Application opens but can't 'Open Connection' - IllegalArgumentException
+* [DIRSERVER-2247](https://issues.apache.org/jira/browse/DIRSERVER-2247) - Invalid signature file digest for Manifest main attributes - When switching from 2.0.0-M24 to 2.0.0-AM25
+* [DIRSERVER-2253](https://issues.apache.org/jira/browse/DIRSERVER-2253) - NIS schema object class and attribute problem
+* [DIRSERVER-2264](https://issues.apache.org/jira/browse/DIRSERVER-2264) - missing schema type for NIS: nisMapName
+* [DIRSERVER-2273](https://issues.apache.org/jira/browse/DIRSERVER-2273) - Le serveur ne démarre plus
+* [DIRSERVER-2275](https://issues.apache.org/jira/browse/DIRSERVER-2275) - Les schemas LDIF générés à partir du schema browser font planter Directory au démarrage
+* [DIRSERVER-2289](https://issues.apache.org/jira/browse/DIRSERVER-2289) - Paging support to retrieve all the entries available in ApacheDS between different client and LDAP server connections
+
+<b>Improvements :</b>
+
+* [DIRSERVER-959](https://issues.apache.org/jira/browse/DIRSERVER-959) - We nedd a global cache
+* [DIRSERVER-1639](https://issues.apache.org/jira/browse/DIRSERVER-1639) - Add support for specifying cipher suites in LdapServer's configuration
+* [DIRSERVER-1892](https://issues.apache.org/jira/browse/DIRSERVER-1892) - We don't need to clone the full entry when returning it from the backen
+* [DIRSERVER-1916](https://issues.apache.org/jira/browse/DIRSERVER-1916) - Don't drop 'top' from ObjectClass index, it's never present in the BTree
+* [DIRSERVER-2044](https://issues.apache.org/jira/browse/DIRSERVER-2044) - The CacheService.initialize() method takes an unused InstanceID argument
+* [DIRSERVER-2132](https://issues.apache.org/jira/browse/DIRSERVER-2132) - Add the structuralObjectClass attribute to every returned entry
+* [DIRSERVER-2133](https://issues.apache.org/jira/browse/DIRSERVER-2133) - Add the hasSubordinates operational attribute to entries
+* [DIRSERVER-2145](https://issues.apache.org/jira/browse/DIRSERVER-2145) - A BIND request will do 2 lookups of the entry trying to bind
+* [DIRSERVER-2168](https://issues.apache.org/jira/browse/DIRSERVER-2168) - Possible performance improvement in the Add operation
+* [DIRSERVER-2262](https://issues.apache.org/jira/browse/DIRSERVER-2262) - The LdapServer.loadkeyStore() method do the work twice if there is no KeyStore defined
+* [DIRSERVER-2270](https://issues.apache.org/jira/browse/DIRSERVER-2270) - Inconsistent log level practices
+
+<b>New features :</b>
+
+* [DIRSERVER-279](https://issues.apache.org/jira/browse/DIRSERVER-279) - Transaction support
+* [DIRSERVER-1422](https://issues.apache.org/jira/browse/DIRSERVER-1422) - Delegation of Authentication
+* [DIRSERVER-1956](https://issues.apache.org/jira/browse/DIRSERVER-1956) - Add support for rfc4525 (increment)
+* [DIRSERVER-2245](https://issues.apache.org/jira/browse/DIRSERVER-2245) - Implement the transaction support in ApachedS
+* [DIRSERVER-2248](https://issues.apache.org/jira/browse/DIRSERVER-2248) - The server generates some errors when starting (Schema isues)
+
+
+<b>Tasks :</b>
+
+* [DIRSERVER-1245](https://issues.apache.org/jira/browse/DIRSERVER-1245) - Source audit
+* [DIRSERVER-2063](https://issues.apache.org/jira/browse/DIRSERVER-2063) - Automat testing of installers
+* [DIRSERVER-2097](https://issues.apache.org/jira/browse/DIRSERVER-2097) - Fix usage of default charset|locale|timezone and enable forbiddenapis check
+* [DIRSERVER-2271](https://issues.apache.org/jira/browse/DIRSERVER-2271) - Replace Ehcache with Caffeine
+
+<b>Tests :</b>
+
+* [DIRSERVER-1847](https://issues.apache.org/jira/browse/DIRSERVER-1847) - Introduce time provider for time dependent tests
+
+<h2 class="news">ApacheDS 2.0.0.AM25 released <em>posted on August 18th, 2018</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0.AM25, the 25th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This is a major release of ApacheDS.
+
+It uses the Apache LDAP API 2.0.0.AM1 release, which itself brings a lot of improvements and bug fixes.
+
+But the major improvement is the cross-indexes transaction support that has been added, which is expecting to solve the database corruption issue we are facing for years.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0.AM25:
+
+<b>Bugs :</b>
+
+* [DIRSERVER-2109](https://issues.apache.org/jira/browse/DIRSERVER-2109) - Apply LDIF with special crafted DN creates two CN attributes
+* [DIRSERVER-2220](https://issues.apache.org/jira/browse/DIRSERVER-2220) - ApacheDS should not log credentials
+* [DIRSERVER-2231](https://issues.apache.org/jira/browse/DIRSERVER-2231) - NPE in AbstractBTreePartition when cacheService is not used
+* [DIRSERVER-2234](https://issues.apache.org/jira/browse/DIRSERVER-2234) - Kinit via TCP causes ApacheDS to create a
+NioProcessor thread at 100% CPU
+
+<b>Improvements :</b>
+
+* [DIRSERVER-2242](https://issues.apache.org/jira/browse/DIRSERVER-2242) - Keystore change from JKS to PKCS12
+* [DIRSERVER-2225](https://issues.apache.org/jira/browse/DIRSERVER-2225) - Usage of maven-source-plugin goal jar-no-fork instead of jar
+* [DIRSERVER-2230](https://issues.apache.org/jira/browse/DIRSERVER-2230) - SCM pointing to gitbox instead of svn
+* [DIRSERVER-2229](https://issues.apache.org/jira/browse/DIRSERVER-2229) - Remove duplicated declaration of
+versions-maven-plugin in pom.xml
+
+<b>Tasks :</b>
+
+* [DIRSERVER-2244](https://issues.apache.org/jira/browse/DIRSERVER-2244) - Support AES Encryption with HMAC-SHA2 for Kerberos
+5 defined in RFC 8009
+
+
+<h2 class="news">ApacheDS 2.0.0-M24 released <em>posted on June 7th, 2017</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M24, the 24th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This is mainly a maintenance release, and it's needed to be able to release Studio with many fixes related to the server itself. The main fixes are related to SyntaxCheckers, which are now immutable, and the switch to LDAP 1.0.0 which fixes a critical SSL issue. Otherwise, the 'repair' command has been fixed, and a thread leak has been fixed.
+
+In order to repair the database, one has just to start the server passing the 'repair' command to the apacheds script, instead of the 'start' command. The server will start after having repaired the database.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M24:
+
+<b>Bugs :</b>
+
+ * [DIRSERVER-2190](https://issues.apache.org/jira/browse/DIRSERVER-2190) - there is thread leak when did following operations: ADD,DELETE,MODIFY,MOVE,RENAME
+ * [DIRSERVER-2173](https://issues.apache.org/jira/browse/DIRSERVER-2173) - Linux binary installation fails because RUN_AS_GROUP not used in chown commands
+ * [DIRSERVER-2121](https://issues.apache.org/jira/browse/DIRSERVER-2121) - ApacheDS fails to start after upgrading to 2.0.0-M21
+ * [DIRSERVER-2072](https://issues.apache.org/jira/browse/DIRSERVER-2072) - Documentation For Kerberos Configuration Needs To Be Updated
+
+
+<b>Improvements :</b>
+
+ * [DIRSERVER-2186](https://issues.apache.org/jira/browse/DIRSERVER-2186) - Fix repair command
+
+
+<h2 class="news">ApacheDS 2.0.0-M23 released <em>posted on July 22th, 2016</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M23, the 23th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This release is a bug fix release. It fixes the installers that were broken on Linux. It also fixes teh 'repair' command, that allows user who have a broken backend to fix it (We still have some use case where the database can get corrupted. We are working on fixing this, but it's far from being easy...)
+
+In order to repair the database, one has just to start the server passing the 'repair' command to the apacheds script, instead of the 'start' comamnd. The server will start after having repaired the database.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M23:
+
+<b>Bugs :</b>
+
+ * [DIRSERVER-2158](https://issues.apache.org/jira/browse/DIRSERVER-2158) - unable to start ApacheDS M22 x64
+
+
+<b>Improvements :</b>
+
+ * [DIRKRB-595](https://issues.apache.org/jira/browse/DIRKRB-595) - Add mode to allow KerberosString's to contain UTF-8 for MSFT KDC interop
+
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M22 released <em>posted on June 28th, 2016</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M22, the 22th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This release is a bug fix release. We also added a 'repair' mode taht can be used to fix a database corruption : you just have to start the server with the 'repair' parameter.
+
+This release also fixed the painful problem we have in Studio, when trying
+to save the configuration.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M22:
+
+<b>Bugs :</b>
+
+ * [DIRSERVER-2120](https://issues.apache.org/jira/browse/DIRSERVER-2120) - apacheds init.d script always returning 0
+ * [DIRSERVER-2125](https://issues.apache.org/jira/browse/DIRSERVER-2125) - More than one value has been provided for the single-valued attribute: pwdAccountLockedTime
+ * [DIRSERVER-2139](https://issues.apache.org/jira/browse/DIRSERVER-2139) - IBM with IPV6
+ * [DIRSERVER-2141](https://issues.apache.org/jira/browse/DIRSERVER-2141) - Some tests are declaring user index with reverse
+
+
+<b>Improvements :</b>
+
+ * [DIRSERVER-2124](https://issues.apache.org/jira/browse/DIRSERVER-2124) - Add support for modular crypt format password
+ * [DIRSERVER-2128](https://issues.apache.org/jira/browse/DIRSERVER-2128) - Uplift dependency on commons-io from 2.4 to 2.5
+
+
+
+<b>New features :</b>
+
+ * [DIRSERVER-2113](https://issues.apache.org/jira/browse/DIRSERVER-2113) - Integrate the 'partition-plumber' into ApacheDS
+ * [DIRSERVER-2129](https://issues.apache.org/jira/browse/DIRSERVER-2129>) - Add the number of descendant and the number of children to entries
+
+
+<b>Task : </b>
+ * [DIRSERVER-2123](https://issues.apache.org/jira/browse/DIRSERVER-2123) - Remove reference to commons.io and use the LDAP API Fileutils class instead
+
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M21 released <em>posted on December 21th, 2015</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M21, the 21th milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This release is a bug fix release. We fixed some random failures on startup, and some fixes in the start scripts, beside many other smaller issues.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M21:
+
+<b>Bugs :</b>
+
+ * [DIRSERVER-2108](https://issues.apache.org/jira/browse/DIRSERVER-2108) - Update Apache Commons Collections to 3.2.2 due to vulnerability in 3.2.1
+ * [DIRSERVER-2100](https://issues.apache.org/jira/browse/DIRSERVER-2100) - Zip file does not unpack cleanly on case-insensitive OSes
+ * [DIRSERVER-2085](https://issues.apache.org/jira/browse/DIRSERVER-2085) - The PasswordPolicyConfiguration holds the password attribute as a String
+ * [DIRSERVER-2082](https://issues.apache.org/jira/browse/DIRSERVER-2082) - User is allowed to perform all operations even when password must be reset
+ * [DIRSERVER-2075](https://issues.apache.org/jira/browse/DIRSERVER-2075) - apacheds.sh creates a file called '0' during stop action
+
+
+<b>Improvements :</b>
+
+ * [DIRSERVER-1901](https://issues.apache.org/jira/browse/DIRSERVER-1901>) - subschemaSubentry attribute only available under root DSE
+ * [DIRSERVER-2080](https://issues.apache.org/jira/browse/DIRSERVER-2080>) - Add a way to politely stop apacheds from apacheds.sh
+ * [DIRSERVER-2084](https://issues.apache.org/jira/browse/DIRSERVER-2084>) - Admin user should be exempt from the pwdHistory check
+
+
+<b>Tasks :</b>
+
+
+ * [DIRSERVER-2096](https://issues.apache.org/jira/browse/DIRSERVER-2096>) - Fix violations of coding standards and enable checkstyle check
+
+
+<h2 class="news">ApacheDS 2.0.0-M20 released <em>posted on May 2nd, 2015</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M20, the twentieth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This release is a bug fix release. We fixed some random failures on startup, and some fixes in the start scripts, beside many other smaller issues.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M19:
+
+<b>Bugs :</b>
+
+ * [DIRSERVER-2025](https://issues.apache.org/jira/browse/DIRSERVER-2025) - ApacheDS fails to return sortedResults when searched against a certain number of entries
+ * [DIRSERVER-2026](https://issues.apache.org/jira/browse/DIRSERVER-2026) - Version M19 does not allow eszet (ß) in any tested field of inetOrgPerson
+ * [DIRSERVER-2034](https://issues.apache.org/jira/browse/DIRSERVER-2034) - ReplayCache entries can't be written to disk
+ * [DIRSERVER-2035](https://issues.apache.org/jira/browse/DIRSERVER-2035) - Sporadic test failure due to fix for DIRSERVER-2034
+ * [DIRSERVER-2047](https://issues.apache.org/jira/browse/DIRSERVER-2047) - Some data can be lost when using ldapadd command to insert data into apacheds
+ * [DIRSERVER-2048](https://issues.apache.org/jira/browse/DIRSERVER-2048) - Searching for entries with numerous MV attributes can be long
+ * [DIRSERVER-2055](https://issues.apache.org/jira/browse/DIRSERVER-2055) - Apacheds M19 not starting
+ * [DIRSERVER-2057](https://issues.apache.org/jira/browse/DIRSERVER-2057) - Server returns search continuation only if 'ref' or '+' attributes are requested
+ * [DIRSERVER-2060](https://issues.apache.org/jira/browse/DIRSERVER-2060) - Bind not working after server startup
+ * [DIRSERVER-2065](https://issues.apache.org/jira/browse/DIRSERVER-2065) - apacheds.sh in tar.gz archive is not executable
+
+
+<b>Improvements :</b>
+
+ * [DIRSERVER-1809](https://issues.apache.org/jira/browse/DIRSERVER-1809) - Allow password policy changes to take effect without server restart.
+ * [DIRSERVER-2030](https://issues.apache.org/jira/browse/DIRSERVER-2030) - Remove the casting in generateResponse() method of SearchRequestHandler
+ * [DIRSERVER-2031](https://issues.apache.org/jira/browse/DIRSERVER-2031) - Use a properly random port when creating a KDCServer via annotation
+ * [DIRSERVER-2033](https://issues.apache.org/jira/browse/DIRSERVER-2033) - Upgrade BouncyCastle dependency
+ * [DIRSERVER-2036](https://issues.apache.org/jira/browse/DIRSERVER-2036) - Upgrade EhCache dependency
+ * [DIRSERVER-2050](https://issues.apache.org/jira/browse/DIRSERVER-2050) - Move configuration from single LDIF to multiple LDIF structure
+ * [DIRSERVER-2061](https://issues.apache.org/jira/browse/DIRSERVER-2061) - Logging config bundled with installers is too strict
+
+
+<b>Tasks :</b>
+
+ * [DIRSERVER-2024](https://issues.apache.org/jira/browse/DIRSERVER-2024) - Add some configuration for the list of supported TLS protocol
+ * [DIRSERVER-2039](https://issues.apache.org/jira/browse/DIRSERVER-2039) - Replace non-OSGi dependencies
+ * [DIRSERVER-2041](https://issues.apache.org/jira/browse/DIRSERVER-2041) - Add OSGi tests
+ * [DIRSERVER-2064](https://issues.apache.org/jira/browse/DIRSERVER-2064) - Uninstallof deb package incomplete
+
+
+<b>Test :</b>
+
+ * [DIRSERVER-2037](https://issues.apache.org/jira/browse/DIRSERVER-2037) - ClientInitialRefreshIT test failures
+
+
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M19 released <em>posted on November 22th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M19, the nineteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+This release is a security fix release : the server is not anymore accepting SSLv3 as a valid protocol.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M19:
+
+<b>Bugs</b>
+
+ * [DIRSERVER-2020](https://issues.apache.org/jira/browse/DIRSERVER-2020) - Poodle remediation for ApacheDS 2.X
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M18 released <em>posted on November 13th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M18, the eighteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M18:
+
+<b>Bugs</b>
+
+ * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2018) Race condition in PasswordPolicy Bind handling
+ * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2017) Another Java 8 only error (with Kerberos)
+ * [DIRSERVER-2016](https://issues.apache.org/jira/browse/DIRSERVER-2016) Java 7 vs Java 8 : failure in Java 8
+ * [DIRSERVER-2014](https://issues.apache.org/jira/browse/DIRSERVER-2014) Synchronization is stopped if remote server was not restored during refresh interval
+ * [DIRSERVER-2012](https://issues.apache.org/jira/browse/DIRSERVER-2012) Replication ignores startTLS when ads replStrictCertValidation is true
+ * [DIRSERVER-2010](https://issues.apache.org/jira/browse/DIRSERVER-2010) LdifFileLoader cannot load LDIFS from the classpath unless they are very specific location
+ * [DIRSERVER-2006](https://issues.apache.org/jira/browse/DIRSERVER-2006) Licencing for apacheds-all
+ * [DIRSERVER-2003](https://issues.apache.org/jira/browse/DIRSERVER-2003) Remove ONE and SUB level index configuration from default configuration file
+ * [DIRSERVER-2002](https://issues.apache.org/jira/browse/DIRSERVER-2002) OutOfMemory error while loading more than 70K entries at once
+ * [DIRSERVER-2001](https://issues.apache.org/jira/browse/DIRSERVER-2001) Replication using TLS does not work when confidentiality is enforced
+ * [DIRSERVER-1992](https://issues.apache.org/jira/browse/DIRSERVER-1992) LRUMap used as Entry DN cache in AbstractBTreePartition is going into an inconsistent state
+ * [DIRSERVER-1986](https://issues.apache.org/jira/browse/DIRSERVER-1986) Delegated authentication fails when password policy is enabled
+ * [DIRSERVER-1978](https://issues.apache.org/jira/browse/DIRSERVER-1978) Unable to import ldif when operational attribute pwdChangedTime is present
+
+<b>Improvement</b>
+
+ * [DIRSERVER-1965](https://issues.apache.org/jira/browse/DIRSERVER-1965) An Index should speed up searches starting with '*'
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M17 released <em>posted on July 4th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M17, the seventeenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M17:
+
+<b>Bugs</b>
+
+ * [DIRSERVER-1971](https://issues.apache.org/jira/browse/DIRSERVER-1971) - Allow any sort of modification on operational attriutes while processing replication events in the consumer
+ * [DIRSERVER-1976](https://issues.apache.org/jira/browse/DIRSERVER-1976) - JDBM partition is not building new indices added to the configuration
+ * [DIRSERVER-1979](https://issues.apache.org/jira/browse/DIRSERVER-1979) - Adding child entries can't be found after restarting server
+ * [DIRSERVER-1980](https://issues.apache.org/jira/browse/DIRSERVER-1980) - pwdReset isn't replicated properly
+ * [DIRSERVER-1982](https://issues.apache.org/jira/browse/DIRSERVER-1982) - Couldn't see KDC Principal field under Kerberos settings
+ * [DIRSERVER-1986](https://issues.apache.org/jira/browse/DIRSERVER-1986) - Delegated authentication fails when password policy is enabled
+
+<b>New Features</b>
+
+ * [DIRSERVER-1967](https://issues.apache.org/jira/browse/DIRSERVER-1967) - Add the support for the WhoAmI extended operation
+
+# News
+<h2 class="news">ApacheDS 2.0.0-M16 released <em>posted on March 13th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M16, the sixteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Downloads are available [here](downloads.html)
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M16:
+
+<b>Bugs</b>
+
+ * DIRSERVER-1092 - org.apache.directory.server.dns.store.RecordStore not support ordered multiple resource record answers
+ * DIRSERVER-1252 - Server tools dump command broken due to use of old paths
+ * DIRSERVER-1412 - Modifying the schema with more than one mod may fail
+ * DIRSERVER-1471 - Providing a right fix for DIRSERVER-1459
+ * DIRSERVER-1761 - Unable to use external keystore for SSL
+ * DIRSERVER-1810 - Test case org.apache.directory.server.replication.ClientServerReplicationIT.testModDn() fails permanently
+ * DIRSERVER-1845 - Sporadic failure on CollectivAttributeServiceIT
+ * DIRSERVER-1855 - java.lang.IllegalStateException: Can't overwrite cause at org.apache.directory.server.core.authz.GroupCache.initialize(GroupCache.java:190)
+ * DIRSERVER-1860 - Invalid DN in returned entry
+ * DIRSERVER-1870 - Persistent control is not decoded properly
+ * DIRSERVER-1873 - Searching on member attribute (multivalued) for groups is not working as expected
+ * DIRSERVER-1884 - Incorrect length specified in PaswordUtil.splitCredentials
+ * DIRSERVER-1885 - The JDBM index cache configuration is not used at all
+ * DIRSERVER-1888 - Some pwdPolicy schema AT are incorrect
+ * DIRSERVER-1894 - Multi-Master replicated startup does not complete
+ * DIRSERVER-1900 - Password hashing interceptor is not encrypting the passwords
+ * DIRSERVER-1902 - Concurrent reads cause LDAP:Error 80, LDAP: Error 1 and LDAP: error code 49 errors
+ * DIRSERVER-1905 - KeytabDecoder should use '/' instead of '\' to separate principal name components
+ * DIRSERVER-1906 - We still store entryUUID associated with 'top' in the OC index
+ * DIRSERVER-1909 - Integer cannot be cast to java.lang.Long in JdbmTable prevents service start
+ * DIRSERVER-1911 - Incorrect installation presumption toward user naming convention
+ * DIRSERVER-1917 - Class Cast Exception when doing paged search
+ * DIRSERVER-1921 - Indexes dont work on distinguishedNameMatch attributeType
+ * DIRSERVER-1922 - Not Operator in Ldap Filter on Indexed Attributes
+ * DIRSERVER-1928 - PasswordPolicy should be ignored from Admin session
+ * DIRSERVER-1932 - Password policy pwdMinAge check should check for required reset
+ * DIRSERVER-1948 - NPE in AuthenticationInterceptor when password policy is in place and user does not have a pwdChangedTime
+ * DIRSERVER-1953 - "entryDn" attribute is not returned when requested along with wildcard attribute symbol *
+ * DIRSERVER-1954 - Second startup of an embedded server fails (after an ungraceful shutdown of the first startup)
+ * DIRSERVER-1955 - Directory Apacheds sends wrong empty response for password policy request
+ * DIRSERVER-1957 - chpass/passwd failure (Linux)
+ * DIRSERVER-1959 - Certificates corruption during replication
+ * DIRSERVER-1961 - Searches wth Object level scope and non-existing attribute assertion in filter are not working
+ * DIRSERVER-1962 - Replication Consumer "Enabled" checkbox not working
+ * DIRSERVER-1963 - Add contextCSN attribute to the list of ignored attributes in ReplicationConsumerImpl
+
+<b>Improvements</b>
+
+ * DIRSERVER-1081 - Injecting more information in the opContext structure
+ * DIRSERVER-1294 - Add size() and hasNext() methods to cursors
+ * DIRSERVER-1338 - Allow non-Jdbm schema partition
+ * DIRSERVER-1460 - Add locale to configuration
+ * DIRSERVER-1534 - Improving implementation of loading LDIF files during startup
+ * DIRSERVER-1601 - New index to add : PrescriptiveACI, member, uniqueMember
+ * DIRSERVER-1634 - Add a DN cache for Stores
+ * DIRSERVER-1676 - Provide a set of error codes along with an AuthenticationException to indicate its root cause.
+ * DIRSERVER-1716 - Add a ParentIdAndRdn cache
+ * DIRSERVER-1920 - Refactor DefaultDirectoryServiceFactory/DefaultDirectoryService for extensability
+ * DIRSERVER-1926 - Supply Entry to PasswordValidator instead of username
+ * DIRSERVER-1935 - Include password policy control in the password modify extended operation response if requested
+
+<b>New Features</b>
+
+ * DIRSERVER-264 - Add Support for Sort Control
+ * DIRSERVER-265 - In-memory backend storage support
+ * DIRSERVER-442 - Synchronize suffix entries in configuration with entry on disk
+ * DIRSERVER-1030 - Add CascadeControl and add functionality to cascade modify and delete effects
+ * DIRSERVER-1246 - Add shell scripts and batch files for clients
+ * DIRSERVER-1263 - Add authz schema
+ * DIRSERVER-1852 - Sort the entry based on the DN before returning them
+ * DIRSERVER-1886 - Add configuration schema elements for Mavibot partition
+ * DIRSERVER-1889 - Credentials cache for Kerberos
+ * DIRSERVER-1898 - Authentication mechanism: PKCS5S2
+
+<b>Task</b>
+
+ * DIRSERVER-575 - Convert all non-forwarding (out of band) nextInterceptor calls to use the proxy with bypass instructions
+
+We have also fixed many Kerberos related issues :
+
+<b>Bugs</b>
+
+ * DIRKRB-28 - Allow setting searchBaseDN
+ * DIRKRB-30 - Decoding incoming request over TCP fails
+ * DIRKRB-96 - Unable to obtain ticket after changing the password
+
+<b>Tasks</b>
+
+ * DIRKRB-31 - Create the Authenticator grammar
+ * DIRKRB-32 - Create the EncTicketPart grammar
+ * DIRKRB-33 - Create the AS-REQ grammar
+ * DIRKRB-34 - Create the AS-REP grammar
+ * DIRKRB-35 - Create the TGS-REQ grammar
+ * DIRKRB-36 - Create the TGS-REP grammar
+ * DIRKRB-37 - Create the AP-REQ grammar
+ * DIRKRB-38 - Create the AP-REP grammar
+ * DIRKRB-39 - Create the KRB-SAFE grammar
+ * DIRKRB-40 - Create the KRB-PRIV grammar
+ * DIRKRB-41 - Create the KRB-CRED grammar
+ * DIRKRB-42 - Create the EncASRepPart grammar
+ * DIRKRB-43 - Create the EncTGSRepPart grammar
+ * DIRKRB-44 - Create the EncAPRepPart grammar
+ * DIRKRB-45 - Create the EncKrbPrivPart grammar
+ * DIRKRB-46 - Create the EncKrbCredPart grammar
+ * DIRKRB-47 - Create the KRB-ERROR grammar
+ * DIRKRB-48 - Create the PA-DATA grammar
+ * DIRKRB-49 - Create the Checksum grammar
+ * DIRKRB-50 - Create the TransitedEncoding grammar
+ * DIRKRB-51 - Create the KDC-REQ-BODY grammar
+ * DIRKRB-52 - Create the KDC-REP grammar
+ * DIRKRB-53 - Create the EncKDCRepPart grammar
+ * DIRKRB-54 - Create the LastReq grammar
+ * DIRKRB-55 - Create the KRB-SAFE-BODY grammar
+ * DIRKRB-56 - Create the KrbCredInfo grammar
+ * DIRKRB-57 - Create the METHOD-DATA grammar
+ * DIRKRB-58 - Create the TYPED-DATA grammar
+ * DIRKRB-59 - Create the PA-ENC-TIMESTAMP grammar
+ * DIRKRB-60 - Create the PA-ENC-TS-ENC grammar
+ * DIRKRB-61 - Create the ETYPE-INFO-ENTRY grammar
+ * DIRKRB-62 - Create the ETYPE-INFO grammar
+ * DIRKRB-63 - Create the ETYPE-INFO2-ENTRY grammar
+ * DIRKRB-64 - Create the ETYPE-INFO2 grammar
+ * DIRKRB-65 - Create the AD-IF-RELEVANT grammar
+ * DIRKRB-66 - Create the AD-KDCIssued grammar
+ * DIRKRB-67 - Create the AD-AND-OR grammar
+ * DIRKRB-68 - Create the AD-MANDATORY-FOR-KDC grammar
+ * DIRKRB-69 - Create the Ticket grammar
+ * DIRKRB-70 - Create the EncryptedData grammar
+ * DIRKRB-71 - Create the PrincipalName grammar
+ * DIRKRB-72 - Create the HostAddresses grammar
+ * DIRKRB-73 - Create the HostAddress grammar
+ * DIRKRB-74 - Create the AuthorizationData grammar
+ * DIRKRB-75 - Create the EncryptionKey grammar
+ * DIRKRB-76 - Create the KDC-REQ grammar
+ * DIRKRB-77 - Adapt the error messages we use in grammars
+ * DIRKRB-78 - Add tests for all the grammars
+
+
+<h2 class="news">ApacheDS 2.0.0-M15 released <em>posted on August 18th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M15, the fifteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M15:
+
+<b>Bugs</b>
+
+ * DIRSERVER-1325 - Simple Authentication can not be disabled
+ * DIRSERVER-1490 - Not 100% sure, but the DN caches we have in the server might not be updated when doing a Move
+ * DIRSERVER-1871 - Logging Not Working in M14
+ * DIRSERVER-1872 - The JournalInterceptor is not present in the configuration
+ * DIRSERVER-1874 - Persistent search is not considering the scope of the search
+ * DIRSERVER-1875 - Persistent search is not filtering the attributes before returning entries
+ * DIRSERVER-1879 - Incorrect check on result code done in the PwdModifyResponseImpl constructor
+ * DIRSERVER-1880 - ApacheDS failed to start on boot
+ * DIRSERVER-1882 - KertabEncoder.write() method should take into account the size of the entries list to determine the buffer size
+ * DIRSERVER-1883 - Searching for entries starting at the rootDSE does not work
+
+
+<b>Improvement</b>
+
+ * DIRSERVER-1049 - [PERF] Speed improvement in Search operation
+ * DIRSERVER-1519 - [perf] The MoveAndRename operation is not optimal
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">ApacheDS 2.0.0-M14 released <em>posted on July 1st, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M14, the fourteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+This release does not contain any change, but it depends on a new version of the Apache LDAP API, which contains a fix
+for a critical bug.
+
+This is a critical version, and anyone using 2.0.0-M13 should replace it with this version.
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">ApacheDS 2.0.0-M13 released <em>posted on June 25th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M13, the thirteenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M13:
+
+<b>Bugs</b>
+
+ * DIRSERVER-1325 - Simple Authentication can not be disabled
+ * DIRSERVER-1490 - Not 100% sure, but the DN caches we have in the server might not be updated when doing a Move
+ * DIRSERVER-1491 - Improve schema extractor
+ * DIRSERVER-1500 - Error searching children of known element.
+ * DIRSERVER-1521 - dc=example,dc=com DIT no longer exists as a default partition (DIT) in 1.5.7?
+ * DIRSERVER-1579 - Various problems using moddn operation
+ * DIRSERVER-1661 - Kerberos tests not working with JDK 1.6.0_27 and JDK 1.7.0
+ * DIRSERVER-1806 - The DelegatedAuthIT test does not test a delegated authentication
+ * DIRSERVER-1829 - bug in initializing authenticators for AuthenticatorInterceptor
+ * DIRSERVER-1836 - When extedning an interceptor, the operation are executed twice
+ * DIRSERVER-1840 - Wrong default duration for ads-repllogmaxidle
+ * DIRSERVER-1846 - Configuring SSL/Start TLS keystore does not accept backward slash (\) in path
+ * DIRSERVER-1849 - Invalid prefixes format for password stored using SHA-2 hashing mechanisms (SHA-256, SHA-384, SHA-512)
+ * DIRSERVER-1862 - Concurrent searches and adds may break the backend
+
+
+<b>Improvement</b>
+
+ * DIRSERVER-289 - Configure an optional password message digest algorithm which is applied on userPassword attribute values at add and modify operations.
+ * DIRSERVER-1236 - Store an AttributeEntry object in filter's node
+ * DIRSERVER-1310 - Improve the way we handle controls encoding/decoding
+ * DIRSERVER-1346 - Use ServiceLifecycleListener to avoid having System.out messages for service start/stop events.
+ * DIRSERVER-1447 - loadAllEnabled() method is taking way too long
+ * DIRSERVER-1489 - Provide access to remote connection info
+ * DIRSERVER-1511 - Some operations are present in the Partition interface when they should not
+ * DIRSERVER-1617 - Add a feature to support TLS in DelegatingAuthenticator
+ * DIRSERVER-1801 - The authenticator cache is invalidated too frequently
+
+
+<b>New Feature</b>
+
+ * DIRSERVER-275 - Add Support for LDAP Password Modify Extended Operation
+ * DIRSERVER-434 - Add Support for Paged Search Results Control
+ * DIRSERVER-866 - Initialization with another backend than JDBM for the system partition
+ * DIRSERVER-1203 - RFC2307bis Support is missing
+ * DIRSERVER-1837 - The DelegatingAuthenticator does not support SSL/StartTLS/SASL
+
+
+<b>Task</b>
+
+ * DIRSERVER-710 - Exception tree should be reviewed
+
+
+
+This is a critical version, and anyone using 2.0.0-M12 should replace it with this version.
+
+Downloads are available [here](downloads.html)
+
+
+
+<h2 class="news">ApacheDS 2.0.0-M12 released <em>posted on May 2nd, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M12, the twelwth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M12:
+
+<b>Bugs</b>
+
+ * DIRSERVER-1798 - The AdministrativePoint interceptor is always activated, even if it's not part of the config
+ * DIRAPI-80] - Cannot issue a direct operation without having connected to the server
+ * DIRSERVER-1143 - ldappasswd fails to bind
+ * DIRSERVER-1584 - document how to limit the available ciphers for ldaps (how to disable SSL3_RSA_RC4_40_MD5 : SSL_EXPORT SSL3_RSA_DES_40_CBC_SHA)
+ * DIRSERVER-1812 - The default admin account should never get locked forever
+ * DIRSERVER-1814 - Using anon connection results in UnbindRequestHandler reporting 'LdapNoSuchObjectException: ERR_268 Cannot find a partition for '
+ * DIRSERVER-1826 - The ads-pwdFailureCountInterval is not taken into account
+ * DIRSERVER-1834 - Broken backend when using AT with no EQUALITY MR
+
+This is a critical version, and anyone using 2.0.0-M11 should replace it with this version.
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">ApacheDS 2.0.0-M11 released <em>posted on March 3rd, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M11, the eleventh milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M11:
+
+<b>Bugs</b>
+
+ * DIRSERVER-1281 - StreamCorruptedException after brutal shutdown
+ * DIRSERVER-1797 - The AdministrativeRole AT is not indexed, leadings to huge delay when starting the server
+ * DIRSERVER-1798 - The AdministrativePoint interceptor is always activated, even if it's not part of the config
+ * DIRSERVER-1799 - When deleting values from an existing entry, the presence index might get out of date
+ * DIRSERVER-1802 - Disabling an authenticator results in a NPE
+ * DIRSERVER-1803 - When the SimpleAuthenticator is disabled, and the auth level is set to SIMPLE, we can bind freely
+ * DIRSERVER-1804 - [patch] Fix ApacheDS code to allow control and reduce number of outputted logs
+ * DIRSERVER-1805 - The replication janitor thread is not stopped correctly when the server is stopped
+ * DIRSERVER-1321 - Clarify relationship between partition.syncOnWrite and apacheDS.syncPeriodMillis configuration attributes
+ * DIRSERVER-1322 - Auto inferring context entry
+ * DIRSERVER-1808 - We should evaluate the Scope and any other index in a fliter only when the # of candidate is above a threshold
+ * DIRKRB-85 - @CreateKdcServer should include searchBaseDn attribute
+ * DIRKRB-86 - The Kerberos server badly need some logging...
+
+Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">ApacheDS 2.0.0-M10 released <em>posted on January 29th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M10, the tenth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M10:
+
+<b>Bugs</b>
+
+* DIRSERVER-1704 - Inconistency in Master-Slave Replication
+* DIRSERVER-1740 - REPLICATION data loss
+* DIRSERVER-1772 - Improve the replication logs
+* DIRSERVER-1788 - ConfigurationReader fails to correctly read byte[] values
+* DIRSERVER-1789 - Changes to an existing replication consumer may not be taken into account
+* DIRSERVER-1790 - When we restart the server, some user index are lost
+* DIRSERVER-1791 - Interrupting a search on the client side cause the connection to be closed by the server
+* DIRSERVER-1792 - Replication and Modification of ACIs
+
+Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">ApacheDS 2.0.0-M8 released <em>posted on October 12th, 2012</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M8, the eigth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M8:
+
+<b>Bugs</b>
+
+* DIRSERVER-1458 - Cursor API generic usage is totally wrong
+* DIRSERVER-1624 - Index are not created when added after the server has been started
+* DIRSERVER-1655 - Possible incorrect insertion of modifications in the consumer log
+* DIRSERVER-1659 - the apacheds.sh/bat files contains a hard coded revision. This is not good
+* DIRSERVER-1663 - NPE when doing add/delete and search at the same time on the same entries
+* DIRSERVER-1677 - Dependencies cleanup
+* DIRSERVER-1689 - testNoSearchByNonAdmin does not throw an LdapNoPermissionException, as expected
+* DIRSERVER-1706 - be sure we close the cursors when the session expires and if we have paged searches or persistent search going on
+* DIRSERVER-1709 - Adding an index does not create the index if the server is already started
+* DIRSERVER-1710 - The memory default (128M) is not enouh in most case
+* DIRSERVER-1715 - Implement backward browse for DescendantCursor and ChildrenCursor
+* DIRSERVER-1718 - Problems when adding a schema containing one or more uppercased letters
+* DIRSERVER-1722 - The PagedSearchIT.testPagedSearchWrongCookie() test blocks randomly the build
+* DIRSERVER-1723 - Potential LRUCache exhaustion with searches
+* DIRSERVER-1726 - DefaultPasswordValidator always throws PasswordPolicyException when consecutive non-letter chars are in RDN
+* DIRSERVER-1727 - LDAP Searches against boolean attributes with booleanMatch equality never return matches
+* DIRSERVER-1732 - ERR_04131 The value is expected to be a String
+* DIRSERVER-1735](https://issues.apache.org/jira/browse/DIRSERVER-1735) - When ads-pwdmaxage attribute is set to more then 2147483, then all user passwords are expirer forever.
+* DIRSERVER-1737 - ApacheDS should be able to start even when one of its indexed attributes can't be found in the schema manager
+* DIRSERVER-1738 - Can't restart ApacheDS after setting a value superior to Integer.MAX_VALUE in an AT with Integer syntax
+* DIRSERVER-1739 - LDAP Searches Slow
+* DIRSERVER-1744 - Compex LDAP search filters returning unmatched objects
+* DIRSERVER-1747 - Presence index is not up to date when the server is started
+* DIRSERVER-1748 - EqualityEvaluator does not work correctly
+
+Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">ApacheDS 2.0.0-M7 released <em>posted on May 21st, 2012</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M7, the seventh milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M7:
+
+<b>Bugs</b>
+
+* DIRSERVER-1093 - the ResourceRecordEncoder and QuestionRecordEncoder have bug for empty domainName
+* DIRSERVER-1697 - Creation of new syntax fails due to ERR_277 Attribute m-obsolete not declared in objectClasses of entry
+* DIRSERVER-1698 - Search on entries with multiple AVA in RDN does not work correctly if the initial RDN order is not used
+* DIRSERVER-1702 - Adding an index through annotation does not work
+* DIRSERVER-1712 - If the index are created using their alias, they are deleted immediately
+* DIRSERVER-1711 - Index initialization is taking way too much time
+* DIRSERVER-1713 - Error on console with first start of clean system
+
+Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">ApacheDS 2.0.0-M6 released <em>posted on February 29th, 2012</em></h2>
+
+The Apache Directory team is pleased to announce the release of ApacheDS 2.0.0-M6, the sixth milestone towards a 2.0 version.
+
+ApacheDS is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.
+
+Here is the release note for Apache Directory ApacheDS 2.0.0-M6:
+
+<b>Bugs</b>
+
+* DIRSERVER-1644 - User provided value is not retained during rename operation
+* DIRSERVER-1681 - adding entries with attribute userCertificate;binary fails with "No such attribute"
+* DIRSERVER-1692 - Unable to add a JPEG image to an entry due to an 'Invalid Attribute Syntax' error
+* DIRSERVER-1693 - Renaming an entry when the RDN uses a case insensitive AT should be possible
+* DIRSERVER-1694 - Renaming an existing entry with a DN containing upper cased chars will not store the CN as provided
+* DIRSERVER-1696 - Creation of an entry like cn=test1+cn=test2, ou=system should not be allowed
+* DIRSERVER-1699 - DN/RDN handling is incorrect when there are some escaped values into them
+* DIRSERVER-1700 - Version in Root DSE is reported as '$pom.version'
+
+Note that this is a milestone, and some parts of the API or configuration can change before the 2.0 GA. We don't have any defined time frame for the 2.0-GA release, we do expect to release a few more milestones before reaching the 2.0-GA.
+
+Downloads are available [here](downloads.html)
diff --git a/source/api/__index.md b/source/api/__index.md
new file mode 100644
index 0000000..1d37b08
--- /dev/null
+++ b/source/api/__index.md
@@ -0,0 +1,30 @@
+---
+type: api
+title: Welcome to Apache Directory LDAP API
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="left">
+ <h1>Apache Directory LDAP API™</h1>
+ <h2>The modern Java LDAP API</h2>
+ <div class="description">
+ The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).<br/>
+ This is a "schema aware" API with some convenient ways to access all types of LDAP servers, not only ApacheDS but any LDAP server.<br/>
+ The API is OSGI ready and extensible. New controls, schema elements and network layer could be added or used in the near future.
+ </div>
+ <div class="download-link">
+ <a href="/api/downloads-1.html" class="download_badge"><b>Download Apache<br>LDAP API {{< param version_api >}}</b></a>
+ </div>
+ <div class="download-link">
+ <a href="/api/downloads-2.html" class="download_badge"><b>Download Apache<br>LDAP API {{< param version_api2 >}}</b></a>
+ </div>
+ </div>
+ <div class="right">
+ <img src="../images/hero-ldap-api.jpg" width="377" height="287" border="0"/>
+ </div>
+</div>
+
+<div class="news">
+ {{< grabpage "api/news.md" >}}
+</div>
diff --git a/source/api/coding-standards.md b/source/api/coding-standards.md
new file mode 100644
index 0000000..ad35808
--- /dev/null
+++ b/source/api/coding-standards.md
@@ -0,0 +1,154 @@
+---
+title: Coding Standards
+---
+
+# Coding Standards
+
+Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enfore the code formating : [formatting.xml](https://github.com/apache/directory-project/blob/master/resources/formatting.xml) and [codetemplates.xml](https://github.com/apache/directory-project/blob/master/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enfore the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
+
+```text
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+```
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A descrption of this class/interface
+* an *author* tag which should be :
+
+```java
+@author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+```
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
+* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please !
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningfull names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+```java
+...
+int result = myMethod( param1, param2 )
+
+if ( result > 0 )
+{
+ // do something
+}
+...
+```
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
diff --git a/source/api/developer-guide.md b/source/api/developer-guide.md
new file mode 100644
index 0000000..40bc1b9
--- /dev/null
+++ b/source/api/developer-guide.md
@@ -0,0 +1,494 @@
+---
+title: LDAP Java API - Developer Guide
+---
+
+# Developer Guide
+
+This guide is intened to be read by those who participate into the development of the LDAP API. Users of the API are expected to read the [User guide](user-guide.html).
+
+## Getting the source, Building the trunks
+To get the source, build the *trunks/api* and get along with Maven.
+
+## Versioning Scheme
+
+The version number of **LDAP API** has the following form:
+
+<DIV class="info" markdown="1">
+ <major>.<minor>.<micro> \[-M<milestone number> or -RC<release candidate number>]
+</DIV>
+
+This scheme has three number components:
+
+* The __major__ number increases when there are incompatible changes in the API.
+* The __minor__ number increases when a new feature is introduced.
+* The __micro__ number increases when a bug or a trivial change is made.
+
+and an optional label that indicates the maturity of a release:
+
+* __M__ (Milestone) means the feature set can change at any time in the next milestone releases. The last milestone release becomes the first release candidate after a vote.
+* __RC__ (Release Candidate) means the feature set is frozen and the next RC releases will focus on fixing problems unless there is a serious flaw in design. The last release candidate becomes the first GA release after a vote.
+* No label implies __GA__ (General Availability), which means the release is stable enough and therefore ready for production environment.
+
+<DIV class="info" markdown="1">
+ A <b>stable</b> version is a version with a frozen set of features, and a frozen <b>API</b>. We don't release a version if all the integration tests are not passing, so any release should be considered stable enogh to be used.<BR/>
+ Although we may add new features between two milestones, and the data structure may change, which may imply that the data have to be extracted and reimported in order for the server to be operational.<BR/>
+ The configuration might also evolve between two versions.
+</DIV>
+
+## Coding standards
+
+The applicable coding standards for LDAP API 1.0 are described in [Coding Standards](coding-standards.html)
+
+There are some more rules, as we are using **Java 6** now :
+
+* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
+* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
+* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
+* Use the new *Enum* type !
+
+## Releasing the LDAP API
+
+**Note: The release guide needs to be updated after git migration!**
+
+Here is a guide on how to cut a new release. This is a long process, expect it to last a couple of hours !
+
+First, you need to have a recent version of Maven (we are using 3.0.4) and a recent version of the JDK (1.7 is ok, it should also build with 1.6).
+
+### Maven Settings
+
+You'll need a settings section for the **Nexus** and **people.apache.org** servers with a password or a path to the SSH key used. Here's what my **settings.xml** file in **~/.m2** looks like:
+
+
+ <settings>
+
+ <servers>
+ <!-- To publish a snapshot of some part of Maven -->
+ <server>
+ <id>apache.snapshots.https</id>
+ <username>username</username>
+ <password>********</password>
+ </server>
+
+ <!-- To publish a website using Maven -->
+ <server>
+ <id>apache.directory</id>
+ <username>username</username>
+ <privateKey>/Users/username/.ssh/id_rsa</privateKey>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+
+ <!-- To stage a release of some part of Maven -->
+ <server>
+ <id>apache.releases.https</id>
+ <username>username</username>
+ <password>********</password>
+ </server>
+
+ <!-- To stage a website of some part of Maven -->
+ <server>
+ <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
+ <username>elecharny</username>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+
+ </servers>
+
+ <profiles>
+ <profile>
+ <id>apache-public</id>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache.public</id>
+ <url>https://repository.apache.org/content/groups/public/</url>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+
+ <profile>
+ <id>apache-release</id>
+ <!-- Configuration for artifacts signature -->
+ <properties>
+ <gpg.passphrase>********</gpg.passphrase>
+ <gpg.keyname>elecharny@apache.org</gpg.keyname>
+ </properties>
+ </profile>
+ </profiles>
+
+ </settings>
+
+Just replace your username, passwords and paths. Note that the username and password is your Apache LDAP account.
+
+
+<DIV class="info" markdown="1">
+You'll need to provide the passphrase in the <b>settings.xml</b> to access the gpg secret key installed on your host. This is due to a bug with the passphrase prompt in the <em>maven-gpg-plugin</em>. So unfortunately we must provide the passphrase in the <b>settings.xml</b> file in clear text. This should change in the future when this bug is fixed. Note that this passphrase is put into the release profile which we activate to properly sign and release the artifacts and poms via the release plugin.
+</DIV>
+
+### GPG Key
+
+All subprojects are configured to deploy signatures for the artifacts uploaded to the repository. The **gpg** plugin will check use the default gpg key for the user deploying the project with the release:perform directive of the release plugin. This will prompt you for the passphrase for the default key. If you do not have one setup the build will fail.
+
+You can generate and upload a PGP key to a PGP keyserver using the following commands:
+
+
+ gpg --gen-key
+ gpg --fingerprint
+ gpg --keyserver subkeys.pgp.net --send-keys <your key's id from last command>
+
+
+<DIV class="info" markdown="1">
+Make sure to have created the .pgpkey in your <em>p.a.o/~</em> directory and to have added your public key to the <b>KEYS</b> file.
+See also http://people.apache.org/~henkp/repo/faq.html#4
+</DIV>
+
+## Release process
+
+Since we are using Nexus for releases the release process is as follows (see also [Publishing maven artifacts](http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven)).
+
+### Test the Project
+
+
+ $ mvn release:prepare -DdryRun=true
+
+Be aware that this phase will ask you about the next version, and most important, for the next SCM tag :
+
+
+ ...
+ [INFO] Checking dependencies and plugins for snapshots ...
+ What is the release version for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent) 1.0.0-M16: :
+ What is the release version for "Apache Directory LDAP API I18n"? (org.apache.directory.api:api-i18n) 1.0.0-M16: :
+ What is the release version for "Apache Directory LDAP API Utilities"? (org.apache.directory.api:api-util) 1.0.0-M16: :
+ ...
+ What is SCM release tag or label for "Apache Directory LDAP API"? (org.apache.directory.api:api-parent) 1.0.0-M16: :
+ ...
+
+### Deploy a Snapshot
+
+
+ $ mvn deploy
+
+This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
+
+### Prepare the Release
+
+
+ $ mvn release:clean
+ $ mvn release:prepare
+
+This creates a tag [here](https://gitbox.apache.org/repos/asf?p=directory-ldap-api.git)
+
+### Stage the Release
+
+
+ $ mvn release:perform
+
+This deploys the release to a staging repository.
+
+Go to [the nexus server](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
+
+### Build the Site
+
+In order to be able to generate the site, you will have to modify the target/checkout/pom.xml file, by adding a line to the javadoc configuration (in two places) :
+
+
+ $ vi target/checkout/pom.xml
+ ...
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <show>private</show>
+ <nohelp>true</nohelp>
+ <doclint>none</doclint> <---- This line
+ ...
+
+and
+
+
+ ...
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <windowtitle>Apache LDAP API ${project.version} API Documentation</windowtitle>
+ <doctitle>Apache LDAP API ${project.version} API Documentation</doctitle>
+ <minmemory>512m</minmemory>
+ <maxmemory>1g</maxmemory>
+ <linksource>true</linksource>
+ <doclint>none</doclint> <---- This line too
+ ...
+
+
+then run the maven site goal :
+
+
+ $ cd target/checkout
+ $ mvn site
+
+This creates the site.
+
+### Sign the packages
+
+Now, you have to sign the binary packages which are in target/checkout/distribution/target.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+
+You can get the keys by typing :
+
+ gpg --list-keys
+
+The produced packages already have .asc signature that you will need to remove :
+
+
+ $ cd target/checkout/distribution/target
+ $ rm *.asc
+ $ ~/sign.sh
+ PGP Key ID:
+ <You public key>
+ PGP Key Password:
+ <Your password>
+ -n Signing: ./apache-ldap-api-1.0.0-M25-bin.tar.gz ...
+ - Generated './apache-ldap-api-1.0.0-M25-bin.tar.gz.md5'
+ - Generated './apache-ldap-api-1.0.0-M25-bin.tar.gz.asc'
+ -n Signing: ./apache-ldap-api-1.0.0-M25-bin.zip ...
+ - Generated './apache-ldap-api-1.0.0-M25-bin.zip.md5'
+ - Generated './apache-ldap-api-1.0.0-M25-bin.zip.asc'
+ ...
+
+You are done with the signature.
+
+For the record, here is the script shell you can use to sign the packages. Name it sign.sh, and put it into your home directory (on a unix based computer) :
+
+ #!/bin/sh
+
+ echo "PGP Key ID: "
+ read DEFAULT_KEY
+
+ echo "PGP Key Password: "
+ stty -echo
+ read PASSWORD
+ stty echo
+ echo ""
+
+ for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" -or -name "*.asc" ')' -and -type f) ; do
+ if [ -f "$FILE.asc" ]; then
+ echo "Skipping: $FILE"
+ continue
+ fi
+
+ echo -n "Signing: $FILE ... "
+
+ # SHA-256
+ if [ ! -f "$FILE.sha256" ];
+ then
+ gpg -v --default-key "$DEFAULT_KEY" --print-md SHA256 "$FILE" > "$FILE".sha256
+ echo " - Generated '$FILE.sha256'"
+ else
+ echo " - Skipped '$FILE.sha256' (file already existing)"
+ fi
+
+ # SHA-512
+ if [ ! -f "$FILE.sha512" ];
+ then
+ gpg -v --default-key "$DEFAULT_KEY" --print-md SHA512 "$FILE" > "$FILE".sha512
+ echo " - Generated '$FILE.sha512'"
+ else
+ echo " - Skipped '$FILE.sha512' (file already existing)"
+ fi
+
+ # ASC
+ if [ ! -f "$FILE.asc" ];
+ then
+ echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
+ echo " - Generated '$FILE.asc'"
+ else
+ echo " - Skipped '$FILE.asc' (file already existing)"
+ fi
+ done
+
+
+### Publish Source and Binary Distribution Packages
+
+The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by the other committers, in order to be checked while validating the release. As the ~/people.apache.org server is not anymore available for that purpose, we use the [distribution](https://dist.apache.org/repos/dist/dev/directory) space for that purpose.
+
+If you haven't checked out this space, do it now :
+
+
+ $ mkdir -p ~/apacheds/dist/dev/directory
+ $ svn co https://dist.apache.org/repos/dist/dev/directory ~/apacheds/dist/dev/directory
+
+That will checkout the full project distributions.
+
+You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
+
+
+ $ mkdir -p ~/apacheds/dist/dev/directory/api
+ $ svn co https://dist.apache.org/repos/dist/dev/directory/api ~/apacheds/dist/dev/directory/api
+
+Now, create a sub-directory for the version you have generated (here, for version 1.0.0-RC1) :
+
+
+ $ mkdir ~/apacheds/dist/dev/directory/api/1.0.0-RC1
+
+and copy the packages and signature to this area :
+
+
+ $ cd distributions/target
+ $ cp apache-ldap-api-<version>-* ~/apacheds/dist/dev/directory/api/1.0.0-RC1
+
+Last, not least, commit your changes
+
+
+ $ svn add ~/apacheds/dist/dev/directory/api/1.0.0-RC1
+ $ svn ci ~/apacheds/dist/dev/directory/api/1.0.0-RC1 -m "Apache LDAP API 1.0.0-RC1 packages"
+
+### Test the New Version in ApacheDS and Studio
+
+In <em>apacheds/pom.xml</em> change the <org.apache.directory.api.version> property, build ApacheDS, go into <em>apacheds/service</em>, and run <em>./apachds.sh</em> to start the server.
+
+In <em>studio/pom.xml</em> change the <org.apache.directory.api.version> and <org.apache.directory.api.validversion> properties, build Studio, and start Studio in <em>applications/applications_<your platform>/target/ApacheDirectoryStudio-<your platform>/<executable></em>. Connect to the started **ApacheDS**.
+
+### Stage the release
+
+Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
+
+### Vote
+
+Start a 72h vote at the dev mailing list.
+
+### Release
+
+If the vote succeeds LDAP API project can be released.
+
+Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
+
+The sources, binaries and their signatures, have to be pushed in a place where they can be downloaded by users. We use the [distribution](https://dist.apache.org/repos/dist/release/directory) space for that purpose.
+
+Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/api/dist/$(version)
+
+If you haven't checked out this space, do it now :
+
+
+ $ mkdir -p ~/apacheds/dist/release/directory
+ $ svn co https://dist.apache.org/repos/dist/release/directory ~/apacheds/dist/release/directory
+
+That will checkout the full project distributions.
+
+You may want to checkout only the part that you are going to generate, to avoid getting Gb of data :
+
+
+ $ mkdir -p ~/apacheds/dist/release/directory/api/dist
+ $ svn co https://dist.apache.org/repos/dist/release/directory/api/dist ~/apacheds/dist/release/directory/api/dist
+
+Then move the packages from 'dev' to 'release' :
+
+
+ # cd dist/release/directory/api/dist
+ # cp ~/apacheds/dist/dev/directory/api/<version> .
+ # svn add <version>
+ # svn ci <version>
+ ...
+ # exit
+ $
+
+The packages should now be available on http://www.us.apache.org/dist/directory/api/dist/<version>
+
+### Deploy the Javadocs and XRef
+
+We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
+
+ target/checkout/target/site
+
+We will copy two directories :
+
+ apidocs
+ xref
+
+*Staging or Production?*
+
+<DIV class="info" markdown="1">
+Those files will be stored on the production server only !!! And some extra caution ust be taken not to delete them when we will publish the staging site too...
+</DIV>
+
+First of all, you must checkout the two CMS store for the site : staging and production.
+
+
+ $ cd ~/apacheds
+ $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
+ ...
+ $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+ ...
+
+Now, you will first add the directory for the newly generated version :
+
+
+ $ cd ~/apacheds/production/content/api/gen-docs
+ $ mkdir <version>
+ $ svn add <version>
+
+Then copy the generated docs :
+
+
+ $ cp -r ~/apacheds/trunks/api/target/checkout/target/site/apidocs ~/apacheds/production/content/api/gen-docs/<version>
+ $ cp -r ~/apacheds/trunks/api/target/checkout/target/site/xref ~/apacheds/production/content/api/gen-docs/<version>
+ $
+
+You have to check in those directories :
+
+
+ $ svn add <version>/*
+ $ svn ci <version> -m "Injected <version> javadocs"
+
+Now, you have to update the staging site <em>extpaths.txt</em>
+
+This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
+
+
+ $ cd ~/apacheds/staging/content/
+ $ vi extpaths.txt
+
+Add the following line :
+
+
+ ...
+ # API
+ api/gen-docs/<version>
+ ...
+
+then save and check in the file <em>extpaths.txt</em>
+
+We also have to update the <em>.htaccess</em> file :
+
+
+ $ cd ~/apacheds/staging/content/api/gen-docs
+ $ vi .htaccess
+
+And update the two last lines to refer to the version you've just released :
+
+
+ RewriteRule ^latest$ <version>/
+ RewriteRule ^latest/(.*)$ <version>/$1
+
+Save and commit the file.
+
+### Update the web site
+
+You can now update the site, add a news on the front page, and publish the site.
+
+There are a few places to modify :
+
+* /lib/path.pm : update the $version_api variable with the new version.
+* /content/index.mdtext : same here, update the <!-- LDAP API project --> section, which contains the version.
+* /content/api/news.mdtext : add the news on top of this page
+* /content/api/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
+
+Commit the changes, and publish the web site, you are done !
+
+### Inform the world !
+
+After 24h, you can now inform the world about the release.
+
+Send a mail to the users and dev mailing list, and one to the **announce@apache.org**
+
+You are done !
diff --git a/source/api/download-old-versions.md b/source/api/download-old-versions.md
new file mode 100644
index 0000000..f245445
--- /dev/null
+++ b/source/api/download-old-versions.md
@@ -0,0 +1,107 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+## LDAP API 2.0
+
+<center>
+
+| Version| Download Link | Javadoc & XRef | Date |
+|:-:|:-:|:-:|:-:|
+| Apache LDAP API 2.0.0 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0/apidocs/), [Xref](http://directory.apache.org/api/gen-docs/2.0.0/xref/) |13/Nov/2019 |
+| Apache LDAP API 2.0.0.AM4 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM4) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM4/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/2.0.0.AM4/xref/) |09/Jun/2019 |
+| Apache LDAP API 2.0.0.AM3 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM3) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM3/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/2.0.0.AM3/xref/) |15/May/2019 |
+| Apache LDAP API 2.0.0.AM2 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM2) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM2/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/2.0.0.AM2/xref/) |03/Sep/2018 |
+| Apache LDAP API 2.0.0.AM1 | [Download](https://archive.apache.org/dist/directory/api/dist/2.0.0.AM1) | [Javadoc](https://directory.apache.org/api/gen-docs/2.0.0.AM1/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/2.0.0.AM1/xref/) |26/Jul/2018 |
+
+</center>
+
+## LDAP API 1.0
+
+<center>
+
+| Version| Download Link | Javadoc & XRef | Date |
+|:-:|:-:|:-:|:-:|
+| Apache LDAP API 1.0.2 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.2/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.2/xref/) |06/Jun/2018 |
+| Apache LDAP API 1.0.1 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.1/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.1/xref/) |19/May/2018 |
+| Apache LDAP API 1.0.0 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0/xref/) |07/June/2017 |
+| Apache LDAP API 1.0.0-RC2 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-RC2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-RC2/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-RC2/xref/) |02/Nov/2016 |
+| Apache LDAP API 1.0.0-RC1 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-RC1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-RC1/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-RC1/xref/) |17/Jun/2016 |
+| Apache LDAP API 1.0.0-M33 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M33) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M33/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M33/xref/) |21/Dec/2015 |
+| Apache LDAP API 1.0.0-M32 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M32) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M32/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M32/xref/) |19/Oct/2015 |
+| Apache LDAP API 1.0.0-M31 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M31) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M31/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M31/xref/) |05/Jul/2015 |
+| Apache LDAP API 1.0.0-M30 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M30) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M30/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M30/xref/) |02/May/2015 |
+| Apache LDAP API 1.0.0-M29 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M29) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M29/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M29/xref/) |02/Apr/2015 |
+| Apache LDAP API 1.0.0-M28 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M28) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M28/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M28/xref/) |15/Jan/2015 |
+| Apache LDAP API 1.0.0-M27 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M27) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M27/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M27/xref/) |29/Dec/2014 |
+| Apache LDAP API 1.0.0-M26 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M26) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M26/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M26/xref/) |22/Nov/2014 |
+| Apache LDAP API 1.0.0-M25 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M25) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M25/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M25/xref/) |12/Nov/2014 |
+| Apache LDAP API 1.0.0-M24 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M24) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M24/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M24/xref/) |02/Aug/2014 |
+| Apache LDAP API 1.0.0-M23 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M23) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M23/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M23/xref/) |03/Jul/2014 |
+| Apache LDAP API 1.0.0-M22 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M22) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M22/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M22/xref/) | 22/Apr/2014 |
+| Apache LDAP API 1.0.0-M21 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M21) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M21/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M21/xref/) | 13/Mar/2014 |
+| Apache LDAP API 1.0.0-M20 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M20) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M20/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M20/xref/) | 18/Aug/2013 |
+| Apache LDAP API 1.0.0-M19 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M19) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M19/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M19/xref/) | 01/Jul/2013 |
+| Apache LDAP API 1.0.0-M18 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M18) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M18/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M18/xref/) | 25/Jun/2013 |
+| Apache LDAP API 1.0.0-M17 | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M17) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M17/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M17/xref/) | 02/May/2013 |
+| Apache LDAP API 1.0.0-M16 binaries | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M16) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M16/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M16/xref/) | 03/Mar/2013 |
+| Apache LDAP API 1.0.0-M16 sources | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M16) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M16/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M16/xref/) | 03/Mar/2013 |
+| Apache LDAP API 1.0.0-M15 binaries | [Download](https://archive.apache.org/dist/directory/api/dist/1.0.0-M15) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M15/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M15/xref/) | 28/Jan/2013 |
+| Apache LDAP API 1.0.0-M15 sources | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M15) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M15/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M15/xref/) | 28/Jan/2013 |
+| Apache LDAP API 1.0.0-M14 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M14) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M14/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M14/xref/) | 07/Jan/2013 |
+| Apache LDAP API 1.0.0-M13 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M13) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M13/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M13/xref/) | 12/Oct/2012 |
+| Apache LDAP API 1.0.0-M12 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M12) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M12/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M12/xref/) | 09/May/2012 |
+| Apache LDAP API 1.0.0-M11 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M11) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M11/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M11/xref/) | 28/feb/2012 |
+| Apache LDAP API 1.0.0-M10 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M10) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M10/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M10/xref/) | 03/Feb/2012 |
+| Apache LDAP API 1.0.0-M9 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M9) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M9/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M9/xref/) | 17/Jan/2012 |
+| Apache LDAP API 1.0.0-M8 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M8) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M8/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M8/xref/) | 05/Sep/2011 |
+| Apache LDAP API 1.0.0-M7 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M7) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M7/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M7/xref/) | 15/Aug/2011 |
+| Apache LDAP API 1.0.0-M6 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M6) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M6/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M6/xref/) | 04/Aug/2011 |
+| Apache LDAP API 1.0.0-M5 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M5) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M5/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M5/xref/) | 25/Jun/2011 |
+| Apache LDAP API 1.0.0-M4 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M4) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M4/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M4/xref/) | 30/May/2011 |
+| Apache LDAP API 1.0.0-M3 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M3) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M3/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M3/xref/) | 22/Apr/2011 |
+| Apache LDAP API 1.0.0-M2 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M2) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M2/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M2/xref/) | 15/Mar/2011 |
+| Apache LDAP API 1.0.0-M1 | [Download](https://archive.apache.org/dist/directory/api/1.0.0-M1) | [Javadoc](https://directory.apache.org/api/gen-docs/1.0.0-M1/apidocs/), [Xref](https://directory.apache.org/api/gen-docs/1.0.0-M1/xref/) | 18/Feb/2011 |
+
+</center>
+
+
+## LDAP API 0.x
+
+<center>
+
+| Version| Download Link | Javadoc & XRef | Date |
+|:-:|:-:|:-:|:-:|
+| Apache LDAP API 0.1 | [Download](https://archive.apache.org/dist/directory/api/unstable/0.1/) | 24/Mar/2010 |
+
+</center>
+
+<DIV class="note" markdown="1">
+We encourage you to verify the integrity of the downloaded file using:
+
+* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+* the MD5 file (checksum).
+</DIV>
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+
+
+Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/source/api/download/download-archive-1.md b/source/api/download/download-archive-1.md
new file mode 100644
index 0000000..e54616d
--- /dev/null
+++ b/source/api/download/download-archive-1.md
@@ -0,0 +1,77 @@
+---
+title: Downloads for Archive
+---
+
+# Downloads of Archive packages
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## LDAP API 1.0
+
+### ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.zip">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api >}}-bin.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+### TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.tar.gz">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api >}}-bin.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-bin.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-ldap-api-{{< param version_api >}}-bin.zip{{< /download-verify >}}
diff --git a/source/api/download/download-archive-2.md b/source/api/download/download-archive-2.md
new file mode 100644
index 0000000..6b5b450
--- /dev/null
+++ b/source/api/download/download-archive-2.md
@@ -0,0 +1,76 @@
+---
+title: Downloads for Archive
+---
+
+# Downloads of Archive packages
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## LDAP API 2.0
+
+### ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.zip">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api2 >}}-bin.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+### TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-bin.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-ldap-api-{{< param version_api2 >}}-bin.zip{{< /download-verify >}}
diff --git a/source/api/download/download-sources-1.md b/source/api/download/download-sources-1.md
new file mode 100644
index 0000000..f361bc7
--- /dev/null
+++ b/source/api/download/download-sources-1.md
@@ -0,0 +1,76 @@
+---
+title: Downloads for Sources
+---
+
+# Download of source packages
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## LDAP API 1.0
+
+### ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.zip">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api >}}-src.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+### TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.tar.gz">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api >}}-src.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api >}}/apache-ldap-api-{{< param version_api >}}-src.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-ldap-api-{{< param version_api >}}-bin.zip{{< /download-verify >}}
diff --git a/source/api/download/download-sources-2.md b/source/api/download/download-sources-2.md
new file mode 100644
index 0000000..5b681d9
--- /dev/null
+++ b/source/api/download/download-sources-2.md
@@ -0,0 +1,76 @@
+---
+title: Downloads for Sources
+---
+
+# Download of source packages
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## LDAP API 2.0
+
+### ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.zip">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api2 >}}-src.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+### TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz">
+ <strong>
+ [preferred]/[...]/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{< param version_api2 >}}/apache-ldap-api-{{< param version_api2 >}}-src.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-ldap-api-{{< param version_api2 >}}-bin.zip{{< /download-verify >}}
diff --git a/source/api/downloads-1.md b/source/api/downloads-1.md
new file mode 100644
index 0000000..3f88463
--- /dev/null
+++ b/source/api/downloads-1.md
@@ -0,0 +1,22 @@
+---
+title: LDAP API Downloads
+---
+
+# Downloads LDAP API 1.0
+
+## Jar Download
+
+The Apache Directory LDAP API is distributed as a jar.
+
+* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive-1.html)
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources-1.html)
+
+## Maven Dependency
+
+The Apache Directory LDAP API is also available as a Maven dependency:
+
+ <dependency>
+ <groupId>org.apache.directory.api</groupId>
+ <artifactId>api-all</artifactId>
+ <version>${api-version}</version>
+ </dependency>
diff --git a/source/api/downloads-2.md b/source/api/downloads-2.md
new file mode 100644
index 0000000..ebd075f
--- /dev/null
+++ b/source/api/downloads-2.md
@@ -0,0 +1,22 @@
+---
+title: LDAP API Downloads
+---
+
+# Downloads LDAP API 2.0
+
+## Jar Download
+
+The Apache Directory LDAP API is distributed as a jar.
+
+* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive-2.html)
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources-2.html)
+
+## Maven Dependency
+
+The Apache Directory LDAP API is also available as a Maven dependency:
+
+ <dependency>
+ <groupId>org.apache.directory.api</groupId>
+ <artifactId>api-all</artifactId>
+ <version>${api-version}</version>
+ </dependency>
diff --git a/source/api/five-minutes-tutorial.md b/source/api/five-minutes-tutorial.md
new file mode 100644
index 0000000..8b39231
--- /dev/null
+++ b/source/api/five-minutes-tutorial.md
@@ -0,0 +1,109 @@
+---
+title: Five Minute Tutorial
+---
+
+# Five Minute Tutorial
+
+## Introduction
+
+> *Warning*: This is a very preliminary tutorial, the user must be informed that the current implementation will evolve a **lot** in the near future. So will the tutorial, hopefully...
+
+This new API has been created in order to offer a better API than what we currently use, namely JNDI or older API like LdapSDK or jldap. It benefits from some improvements brought by **ApacheDS** and **OpenDS**.
+
+This 5-minutes tutorial will present the way to use this API when working with a LDAP server.
+
+## Base principles
+
+LDAP is a connected protocol, so you need to create a connection in order to send request and receive response from a Ldap server. This is the main point : you have to create a connection first.
+
+Each operation can have one or more responses, and produce exceptions when something went wrong.
+
+The API is schema ware, ie the manipulated objects will be controlled on the client side, assuming you have brought back the schema from the server, or by using a default schema configuration
+
+## Connection
+
+In order to create a connection, you first have to provide the name of the server, and the port to use. Those parameters will be defaulted to **localHost** and **389** if nothing is defined.
+
+### Opening a connection
+Here is an example :
+
+```java
+LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
+```
+
+It's important to note that the connection has nothing to do with being bound, and this is a major difference with JNDI, where you create some context and provide the principalDN. A Connection is just a channel opened with the server, here.
+
+Another important thing to understand is that the connection is not explicitly opened. In fact, the **bind** operation will open the connection.
+
+### Secure connection
+
+>TODO
+
+## Bind operation
+Now that the connection has been created, you can call the **bind()** method. This will create a identified connection between a client and the server. The **bind** operation has nothing to do with the **JNDI** bind, as no entry will be created.
+
+### Anonymous bind
+You can bind using no identifier, and in this case, you'll create an anonymous LDAP session. This is done this way :
+
+```java
+connection.bind();
+```
+
+### Simple bind
+The most common bind uses an identifier and a password. The identifier must be a *DN*, and the password can be encrypted. Here is an example of a bind operation :
+
+```java
+// Don't do that ! Password in clear text = danger !
+connection.bind( "ou=example, dc=com", "secret" );
+
+// The password is encrypted, but it does not protect against a MITM attack
+connection.bind( "ou=example, dc=com", "{crypt}wSiewPyxdEC2c" );
+```
+
+## Search operation
+
+We have tried to make it easy to search information in a LDAP server, as this is the most frequently used operation.
+
+Many parameters can be used in a search. The most commonly used are :
+* The base DN
+* The filter
+* The scope
+* The returning attributes list
+
+### Simple search operation
+
+Here is a simple search, done using only those four parameters :
+
+```java
+EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL, "*" );
+
+while ( cursor.next() )
+{
+ Entry entry = cursor.get();
+
+ // Process the entry
+ ...
+}
+```
+
+Here, we call the search operation, and we get back a cursor. Reading search result from the cursor is done with the **get()** method, moving forward uses the **next()** method.
+
+## Unbinding
+When you are done with the operation, you can unbind. This is done by calling the **unbind()** method, this way :
+
+```java
+connection.unbind();
+```
+
+## Closing the connection
+Once you are done with the connection, don't forget to close it. It's done by calling the **close()** method :
+
+```java
+connection.close();
+```
+
+If you explicitly call the **unbind()** method, the connection will also be closed, and in this case, you wont have to close it explicitly.
+
+## Conclusion
+
+This very limited presentation was written to give users a quick insight about how to use the **API**. In order to get some further information, please check the **[User Guide](user-guide.html)**
diff --git a/source/api/internal-design-guide.md b/source/api/internal-design-guide.md
new file mode 100644
index 0000000..d2bf3cf
--- /dev/null
+++ b/source/api/internal-design-guide.md
@@ -0,0 +1,36 @@
+---
+title: LDAP Java API - Internal Design Guide
+---
+
+# Internal Design Guide
+
+This guide expose the internal structure of the *Apache LDAP API* : how it is designed, achitectural choices made, implementation decisions, in general it offers an isnsight of the existing code.
+
+Although it's not exhaustive, it should allow a new commer interested in loking into teh code to have a better understanding on its design, and hopefully help her/him to jump in and add new features/fix bugs.
+
+Note that is a on-going effort, so please don't jump to conclusion when you find a 'TODO' or some erros : you can help adding the missing pieces, or fix the current content.
+
+Keep in mind that it's a 10+ years effort, and obviously some parts of the code might be aging...
+
+Thanks !
+
+Here is the content :
+
+* [1 - Introduction](internal-design-guide/1-introduction.html)
+* [2 - General structure](internal-design-guide/2-general-structure.html)
+* [3 - Building](internal-design-guide/3-building.html)
+* [4 - ASN/1](internal-design-guide/4-asn1.html)
+* * [4.1 - ASN/1 TLV](internal-design-guide/4.1-asn1-tlv.html)
+* [5 - Network](internal-design-guide/5-network.html)
+* [6 - Encoding/Decoding](internal-design-guide/6-codec.html)
+* [7 - LDAP Messages](internal-design-guide/7-ldap-messages.html)
+* [8 - Schema](internal-design-guide/8-schema.html)
+* [9 - Dn](internal-design-guide/9-dn.html)
+* [10 - Entry](internal-design-guide/10-entry.html)
+* [11 - Filter](internal-design-guide/11-filter.html)
+* [12 - Cursor](internal-design-guide/12-cursor.html)
+* [13 - Controls](internal-design-guide/13-controls.html)
+* [14 - Extended Operations](internal-design-guide/14-extended-operations.html)
+* [15 - LDIF](internal-design-guide/15-ldif.html)
+* [16 - DSML](internal-design-guide/16-dsml.html)
+* [17 - OSGi](internal-design-guide/17-osgi.html)
diff --git a/source/api/internal-design-guide/1-introduction.md b/source/api/internal-design-guide/1-introduction.md
new file mode 100644
index 0000000..d215576
--- /dev/null
+++ b/source/api/internal-design-guide/1-introduction.md
@@ -0,0 +1,11 @@
+---
+title: 1 - Introduction
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 2-general-structure.html
+navNextText: 2 - General structure
+---
+
+# 1 - Introduction
+
+This Internal Design Guide teaches developers about the inner logic of the **LDAP API**. It can be useful to those interested in the project, giving them some clues about how it all works and its design, and also to those who want to extend the **LDAP API** by adding _Controls_, _Extended Operations_, or schema elements like _SyntaxCheckers_, _Comparators_, etc.
diff --git a/source/api/internal-design-guide/10-entry.md b/source/api/internal-design-guide/10-entry.md
new file mode 100644
index 0000000..87989dd
--- /dev/null
+++ b/source/api/internal-design-guide/10-entry.md
@@ -0,0 +1,13 @@
+---
+title: 10 - Entry
+navPrev: 9-dn.html
+navPrevText: 9 - DN
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 11-filter.html
+navNextText: 11 - Filter
+---
+
+# 10 - Entry
+
+TODO...
diff --git a/source/api/internal-design-guide/11-filter.md b/source/api/internal-design-guide/11-filter.md
new file mode 100644
index 0000000..4f34656
--- /dev/null
+++ b/source/api/internal-design-guide/11-filter.md
@@ -0,0 +1,13 @@
+---
+title: 11 - Filter
+navPrev: 10-entry.html
+navPrevText: 10 - Entry
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 12-cursor.html
+navNextText: 12 - Cursor
+---
+
+# 11 - Filter
+
+TODO...
diff --git a/source/api/internal-design-guide/12-cursor.md b/source/api/internal-design-guide/12-cursor.md
new file mode 100644
index 0000000..943ae8d
--- /dev/null
+++ b/source/api/internal-design-guide/12-cursor.md
@@ -0,0 +1,13 @@
+---
+title: 12 - Cursor
+navPrev: 11-filter.html
+navPrevText: 11 - Filter
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 13-controls.html
+navNextText: 13 - Controls
+---
+
+# 12 - Cursor
+
+TODO...
diff --git a/source/api/internal-design-guide/13-controls.md b/source/api/internal-design-guide/13-controls.md
new file mode 100644
index 0000000..69e6125
--- /dev/null
+++ b/source/api/internal-design-guide/13-controls.md
@@ -0,0 +1,489 @@
+---
+title: 13 - Controls
+navPrev: 12-cursor.html
+navPrevText: 12 - Cursor
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 14-extended-operations.html
+navNextText: 14 - Extended Operations
+---
+
+# 13 - Controls
+
+
+Controls are extension to the protocol. They are added in messages, and can contain extra information. A **Control** contains :
+
+* an **OID**, unique to this **Control**, as an identifier
+* a **Criticality** flag, which tells if the control can be ignored or not
+* a value, which might be **BER** encoded
+
+We have 20 **Control**s declared in the **LDAP API**, and we can add more.
+
+## Implementation
+
+Here is the **Control** classes and interfaces hierarchy :
+
+![Control Hierarchy](images/controls.png)
+
+As we can see, each _Impl_ class is coupled with a _Decorator_ class, used to process teh encoding and decoding of a **Control**
+
+Keep in mind that **Control**s have to be sent within a message, thus be encoded or decoded when the response come back.
+
+## Package/module
+
+We have two flavors of **Control**s, standard and 'extra'. Standard **Control**s are those supported by all he servers, extras are oly supported by a few servers. This is an arbitrary decision, we could have put all of them at teh same place.
+
+The list of standard **Control**s is :
+
+* _Cascade_
+* _EntryChange_
+* _ManageDsaIT_
+* _PagedResults_
+* _PersistentSearch_
+* _ProxiedAuthz_
+* _SortRequest_
+* _SortResponse_
+* _Subentries_
+
+The list of extra **Control**s is :
+
+* _AdDirSync_
+* _AdPolicyHints_
+* _AdShowDeleted_
+* _ChangeNotifications_
+* _PermissiveModify_
+* _PasswordPolicy_
+* _SyncDoneValue_
+* _SyncRequestValue_
+* _SyncStateValue_
+* _VirtualListViewRequest_
+* _VirtualListViewResponse_
+
+The standard **Control**s are described in the _ldap/model_ module (for the classes and interfaces) and in the _ldap/codec/core_ module (for the _Decorator_ and the decoding classes), in the _org.apache.directory.api.ldap.model.message.controls_ package.
+
+The extra **Control**s are described in the _ldap/extras/codec_ and _ldap/extras/codec-api modules (the first module contains the _classes_ and _interfaces_, the second module contains the _Decorator_s and all the decoder classes.) , in the _org.apache.directory.api.ldap.extras.controls.XXX_ packages (one sub-package per control) and in the _org.apache.directory.api.ldap.codec.controls.XXX_ package.
+
+Any new **Control** is likely to be declared as an extra **Control**.
+
+## Creating a new Control
+
+The **Control** creation follows a few rules :
+
+* It has to have a unique **OID** (this is generally the case, for **Control**s defined in RFCs)
+* It has an _Interface_, a _Decorator_ and an implementation
+* It must be declared
+
+Let's see how it all works, using an example. We will add the **Transaction Specification Control**, defined in [RFC 5805(https://tools.ietf.org/html/rfc5805)], paragraphe 2.2 :
+
+
+ 2.2. Transaction Specification Control
+
+ A Transaction Specification Control is an LDAPControl where the
+ controlType is 1.3.6.1.1.21.2, the criticality is TRUE, and the
+ controlValue is a transaction identifier. The control is appropriate
+ for update requests including Add, Delete, Modify, and ModifyDN
+ (Rename) requests [RFC4511], as well as the Password Modify requests
+ [RFC3062].
+
+ As discussed in Section 4, the Transaction Specification control can
+ be used in conjunction with request controls appropriate for the
+ update request.
+
+The _Interface_ will just expose the _Transaction Identifier_, and store the **Control** **OID** :
+
+```java
+package org.apache.directory.api.ldap.extras.controls.transaction;
+
+import org.apache.directory.api.ldap.model.message.Control;
+
+/**
+ * The Transaction Specification control. It's defined in RFC 5805.
+ * This control is sent with every update once a transaction is started.
+ * It contains the Transaction ID.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public interface TransactionSpecification
+{
+ /** The Transaction Specification control OID */
+ String OID = "1.3.6.1.1.21.2";
+
+ /**
+ * @return The transaction identifier
+ */
+ byte[] getIdentifier();
+
+
+ /**
+ * Set the transaction ID
+ * @param The transaction identifier, an opaque byte array
+ */
+ void setIdentifier( byte[] identifier );
+}
+```
+
+We now need an implementation for this **Control**. It really just a matter of having an instanciable object. Note that this class exteds the _AbstractControl_ class.
+
+Here it is :
+
+```java
+package org.apache.directory.api.ldap.extras.controls.transaction;
+
+import org.apache.directory.api.ldap.model.message.controls.AbstractControl;
+import org.apache.directory.api.util.Strings;
+
+/**
+ * The Transaction Specification control. It's defined in RFC 5805.
+ * This control is sent with every update once a transaction is started.
+ * It contains the Transaction ID.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TransactionSpecificationImpl extends AbstractControl implements TransactionSpecification
+{
+ /** The Transaction Specification identifier */
+ private byte[] identifier;
+
+
+ /**
+ * Default constructor
+ */
+ public TransactionSpecificationImpl()
+ {
+ super( OID );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getIdentifier()
+ {
+ return identifier;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setIdentifier( byte[] identifier )
+ {
+ // Copy the byte[]
+ if ( identifier != null )
+ {
+ this.identifier = new byte[identifier.length];
+ System.arraycopy( identifier, 0, this.identifier, 0, identifier.length );
+ }
+ }
+
+
+ /**
+ * @see Object#toString()
+ */
+ @Override
+ public String toString()
+ {
+ if ( identifier != null )
+ {
+ return "Transaction specification ID=null";
+ }
+ else
+ {
+ return "Transaction specification ID=" + Strings.dumpBytes( identifier );
+ }
+ }
+}
+```
+
+Nothing much to say, except that we have a default constructor that use the **Control**'s **OID** and a _toString()_ method, for convenience. The _Identifier_ is printed in hex format.
+
+That's it for the two base _class_ and _interface_, we now have to deal with encoding and decoding.
+
+
+### Encoding & Decoding
+
+Encoding the **Control** is done by the **Decorator**. This class implements the _Asn1Object_ which defines the method _encode()_. Let's see how it works...
+
+In order to encode the value we need to know its length, this is why we also have to implement the _computeLegth()_ method. In our case, it's superflouous, as the length is known : it's the _identifier_'s length.
+Decoidng is quitre trivial : as we only need to decode the **Control** value, and as it's an opaque _byte[]_, we just need to copy this value in the instance.
+
+In any case, we don't encode the whole **Control**, we just encode it's value : the **Control** itself is encode by the **LdapMessage**.
+
+Here is the _Decorator_ code.
+
+```java
+package org.apache.directory.api.ldap.extras.controls.transaction;
+
+import java.nio.ByteBuffer;
+
+import org.apache.directory.api.asn1.Asn1Object;
+import org.apache.directory.api.asn1.DecoderException;
+import org.apache.directory.api.asn1.EncoderException;
+import org.apache.directory.api.ldap.codec.api.ControlDecorator;
+import org.apache.directory.api.ldap.codec.api.LdapApiService;
+
+/**
+ * TransactionSpecification decorator.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TransactionSpecificationDecorator extends ControlDecorator<TransactionSpecification> implements TransactionSpecification
+{
+ /**
+ * Create a new instance of TransactionSpecificationDecorator
+ *
+ * @param codec The LDAP Service to use
+ * @param decoratedControl The control to decorate
+ */
+ public TransactionSpecificationDecorator( LdapApiService codec, TransactionSpecification decoratedControl )
+ {
+ super( codec, decoratedControl );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Asn1Object decode( byte[] controlBytes ) throws DecoderException
+ {
+ // Nothing to decode, the byte array is copied as is in identifier
+ setIdentifier( controlBytes );
+
+ return this;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int computeLength()
+ {
+ byte[] identifier = getDecorated().getIdentifier();
+
+ if ( identifier != null )
+ {
+ return identifier.length;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
+ {
+ byte[] identifier = getDecorated().getIdentifier();
+
+ if ( identifier != null )
+ {
+ ByteBuffer encoded = ByteBuffer.allocate( identifier.length );
+
+ encoded.put( identifier );
+
+ return encoded;
+ }
+ else
+ {
+ return ByteBuffer.allocate( 0 );
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getIdentifier()
+ {
+ return getDecorated().getIdentifier();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setIdentifier( byte[] identifier )
+ {
+ getDecorated().setIdentifier( identifier );
+ }
+}
+```
+
+### The Factory
+
+We also need a _Factory_ class that is used to register the **Control**. This class simply expose a constructor for the **Control**. It's code is pretty trival, there is nothing specific to the added **Control**.
+
+Side note : as this class is ony invoked at startup, we could use reflection instead of having one _Factory_ per **Control**...
+
+```java
+package org.apache.directory.api.ldap.extras.controls.transaction;
+
+
+import org.apache.directory.api.ldap.codec.api.CodecControl;
+import org.apache.directory.api.ldap.codec.api.ControlFactory;
+import org.apache.directory.api.ldap.codec.api.LdapApiService;
+
+
+/**
+ * A codec {@link ControlFactory} implementation for {@link TransactionSpecification} controls.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class TransactionSpecificationFactory implements ControlFactory<TransactionSpecification>
+{
+ /** The LDAP codec responsible for encoding and decoding Cascade Controls */
+ private LdapApiService codec;
+
+
+ /**
+ * Creates a new instance of TransactionSpecificationFactory.
+ *
+ * @param codec The LDAP codec
+ */
+ public TransactionSpecificationFactory( LdapApiService codec )
+ {
+ this.codec = codec;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getOid()
+ {
+ return TransactionSpecification.OID;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public CodecControl<TransactionSpecification> newCodecControl()
+ {
+ return new TransactionSpecificationDecorator( codec, new TransactionSpecificationImpl() );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public CodecControl<TransactionSpecification> newCodecControl( TransactionSpecification control )
+ {
+ return new TransactionSpecificationDecorator( codec, control );
+ }
+}
+```
+
+## A more complex Control
+
+We just shown a **Control** which was easy to encode or decode. Most of the time, the **Control**'s value is itself an **ASN/1** **BER** encoded value, and we need more classes to be able to process the decoding. Let use another **Control** as a sample :
+
+
+TODO
+
+
+## Adding a Control to the API
+
+Once we have written the **Control** classes and interfaces, we need to declare it so that the **LDAP API** can use it.
+
+The thing is that the **LDAP API** is **OSGi** compliant, so we need to expose the **Control**s and we also have to activate them.
+
+The _ExtrasBundleActivator_ class (in the _ldap/extras/codec_ module) has to be modified to register and unregister the added **Control** :
+
+```java
+...
+import org.apache.directory.api.ldap.extras.controls.changeNotifications.TransactionSpecification;
+...
+
+/**
+ * A BundleActivator for the ldap codec extras extension: extra ApacheDS and
+ * Apache Directory Studio specific controls and extended operations.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ExtrasBundleActivator implements BundleActivator
+{
+ ....
+ /**
+ * Registers all the extras controls present in this control pack.
+ *
+ * @param codec The codec service.
+ */
+ private void registerExtrasControls( LdapApiService codec )
+ {
+ ControlFactory<AdDirSync> adDirSyncFactory = new AdDirSyncFactory( codec );
+ codec.registerControl( adDirSyncFactory );
+ ...
+
+ ControlFactory<TransactionSpecification> TransactionSpecificationFactory = new TransactionSpecificationFactory( codec );
+ codec.registerControl( TransactionSpecification );
+ }
+
+ ...
+
+ private void unregisterExtrasControls( LdapApiService codec )
+ {
+ codec.unregisterControl( AdDirSync.OID );
+ codec.unregisterControl( AdShowDeleted.OID );
+ ...
+ codec.unregisterControl( TransactionSpecification.OID );
+ }
+
+ ....
+```
+
+Here we added the _TransactionSpecification_ **Control** at the end of thse two methods, and added the associated _import_.
+
+Last, not least, we need to update the _loadStockControls_ method in the _CodecFactoryUtil_ class (in _ldap/codec/standalone_ module) :
+
+```java
+...
+import org.apache.directory.api.ldap.extras.controls.changeNotifications.TransactionSpecification;
+...
+
+/**
+ * A utility class for adding Codec and extended operation factories.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public final class CodecFactoryUtil
+{
+ ....
+ /**
+ * Loads the Controls implement out of the box in the codec.
+ *
+ * @param controlFactories The Control factories to use
+ * @param apiService The LDAP Service instance to use
+ */
+ public static void loadStockControls( Map<String, ControlFactory<?>> controlFactories, LdapApiService apiService )
+ {
+ // Standard controls
+ ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService );
+ controlFactories.put( cascadeFactory.getOid(), cascadeFactory );
+ LOG.info( "Registered pre-bundled control factory: {}", cascadeFactory.getOid() );
+
+ ...
+ ControlFactory<TransactionSpecification> transactionSpecificationFactory =
+ new TransactionSpecificationFactory( apiService );
+ controlFactories.put( transactionSpecificationFactory.getOid(), transactionSpecificationFactory );
+ LOG.info( "Registered pre-bundled control factory: {}", transactionSpecificationFactory.getOid() );
+ }
+
+ ...
+}
+```
+
+We are done ! Note that there is nothing to change in the _MANIFEST.MF_ file, as the packages are already exported.
diff --git a/source/api/internal-design-guide/14-extended-operations.md b/source/api/internal-design-guide/14-extended-operations.md
new file mode 100644
index 0000000..1e40d6c
--- /dev/null
+++ b/source/api/internal-design-guide/14-extended-operations.md
@@ -0,0 +1,1134 @@
+---
+title: 14 - Extended Operations
+navPrev: 13-controls.html
+navPrevText: 13 - Controls
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 15-ldif.html
+navNextText: 15 - LDIF
+---
+
+# 14 - Extended Operations
+
+**Extended Operation** is a **LDAP** message which may content a payload. It is generally sent by the clinet, but the server can send a _ExtendedResponse_ as a response to any operation : the **Notice of Disconnection**.
+
+Here is the syntax for the extended Operation :
+
+
+ ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
+ requestName [0] LDAPOID,
+ requestValue [1] OCTET STRING OPTIONAL }
+
+ ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
+ COMPONENTS OF LDAPResult,
+ responseName [10] LDAPOID OPTIONAL,
+ responseValue [11] OCTET STRING OPTIONAL }
+
+(the payload is the _requestValue_ or _responseValue_ part, which may be **BER** encoded).
+
+This message is routinely decoded as is by the standard **LDAP** message decoder, but the payload has to be decoded on its own.
+
+## Supported extended operations
+
+Currently, the **LDAP API** support the following extended operations :
+
+* _Cancel_ request and response ([RFC 3909](https://tools.ietf.org/html/rfc3909))
+* _CertGenerationRequest_ request and response, an **ApacheDS** specific operation in charge of generating a certificate
+* _GracefulDisconnect_ response, an **ApacheDS** specific operation used when the server is shutdown properly
+* _GracefulShutdown_ request and response, an **ApacheDS** specific operation used to shutdown the remote server properly
+* _PasswordModify_ request and response ([RFC 3062](https://tools.ietf.org/html/rfc3062))
+* _StartTls_ request and response ([RFC 4511](https://tools.ietf.org/html/rfc4511))
+* _StoredProcedure_ request and response, an **ApacheDS** specific operation used to execute a stored procedure on the server
+* _WhoAmI_ request and response ([RFC 4532](https://tools.ietf.org/html/rfc4532))
+
+
+## Encoding and decoding
+
+When the _requestValue_ part is present, it has to be encoded (when the client sends the request to the srrver) or decoded ( when the client receives the response from the server).
+
+### Decoding a request/response
+
+The payload is decoded on the fly when the request/response is processed during the _extendedRequest_/_extendedResponse_ is being decoded. The _StoreExtendedRequestValue_/_StoreExtendedResponseValue_ will store the _byte[]_ - if any - and depending on the operation, the specific request/response will decode the value. Here is the _action_ method for the _StoreExtendedRequestValue_ class :
+
+
+ :::Java
+ public void action( LdapMessageContainer<ExtendedRequestDecorator<?>> container ) throws DecoderException
+ {
+ // We can allocate the ExtendedRequest Object
+ ExtendedRequestDecorator<?> extendedRequest = container.getMessage();
+
+ // Get the Value and store it in the ExtendedRequest
+ TLV tlv = container.getCurrentTLV();
+
+ // We have to handle the special case of a 0 length matched
+ // value
+ if ( tlv.getLength() == 0 )
+ {
+ extendedRequest.setRequestValue( Strings.EMPTY_BYTES );
+ }
+ else
+ {
+ extendedRequest.setRequestValue( tlv.getValue().getData() );
+ }
+
+Each implementaion may have a _setRequestValue_/_setResponseValue_ methd, overloading the parentclass. In this case, the value is decoded by the method.
+
+Here is an example of _setRequestValue_ implementation (for the _PasswordModifyRequest_ class) :
+
+ :::Java
+ public void setRequestValue( byte[] requestValue )
+ {
+ PasswordModifyRequestDecoder decoder = new PasswordModifyRequestDecoder();
+
+ try
+ {
+ if ( requestValue != null )
+ {
+ passwordModifyRequest = decoder.decode( requestValue );
+
+ this.requestValue = new byte[requestValue.length];
+ System.arraycopy( requestValue, 0, this.requestValue, 0, requestValue.length );
+ }
+ else
+ {
+ this.requestValue = null;
+ }
+ }
+ catch ( DecoderException e )
+ {
+ LOG.error( I18n.err( I18n.ERR_04165 ), e );
+ throw new RuntimeException( e );
+ }
+ }
+
+As we can see, the decoder is invoked if the _requestValue_ bytes is not null. It instanciate a _PasswordModifyRequest_.
+
+If there is no payload, the parent's method is invoked (which basically does nothing).
+
+Here is a schema showing which request/response operations as a payload that needs to be decoded :
+
+![Extended Operations Payload](images/extended-request-decorator.png)
+
+
+
+### Encoding a request/response
+
+Encoding is done through a _Decorator_. Each extended operation has a dedicated _Decorator_, which may have a specific encoding function. Again, as we only encode the payload, if this payload is absent, there is nothing to encode. Not all the extended operations have a payload.
+
+If there is a payload to encode, this is done by calling the _getRequestValue()_/_getResponseValue()_ method in the decorator. Here is an example :
+
+ :::Java
+ public byte[] getRequestValue()
+ {
+ if ( requestValue == null )
+ {
+ try
+ {
+ requestValue = encodeInternal().array();
+ }
+ catch ( EncoderException e )
+ {
+ LOG.error( I18n.err( I18n.ERR_04167 ), e );
+ throw new RuntimeException( e );
+ }
+ }
+
+ return requestValue;
+ }
+
+
+The _encodeInternal_ method is in charge of encoding teh paylod.
+
+If the _getRequestValue_/getResponseValue_ method is absent, that leans there is nothing to encode. The inherited method will be executed, which returns null.
+
+Internally, we compute the length of the needed **PDU** accordingly to the data we have to encode, allocate a _ByteBuffer_ to hold the encoded data, and store teh encoded data into it :
+
+ :::Java
+ /**
+ * Encodes the PasswordModifyRequest extended operation.
+ *
+ * @return A ByteBuffer that contains the encoded PDU
+ * @throws org.apache.directory.api.asn1.EncoderException If anything goes wrong.
+ */
+ /* No qualifier */ByteBuffer encodeInternal() throws EncoderException
+ {
+ ByteBuffer bb = ByteBuffer.allocate( computeLengthInternal() );
+
+ bb.put( UniversalTag.SEQUENCE.getValue() );
+ bb.put( TLV.getBytes( requestLength ) );
+
+ if ( passwordModifyRequest.getUserIdentity() != null )
+ {
+ byte[] userIdentity = passwordModifyRequest.getUserIdentity();
+ bb.put( ( byte ) PasswordModifyRequestConstants.USER_IDENTITY_TAG );
+ bb.put( TLV.getBytes( userIdentity.length ) );
+ bb.put( userIdentity );
+ }
+
+ if ( passwordModifyRequest.getOldPassword() != null )
+ {
+ byte[] oldPassword = passwordModifyRequest.getOldPassword();
+ bb.put( ( byte ) PasswordModifyRequestConstants.OLD_PASSWORD_TAG );
+ bb.put( TLV.getBytes( oldPassword.length ) );
+ bb.put( oldPassword );
+ }
+
+ if ( passwordModifyRequest.getNewPassword() != null )
+ {
+ byte[] newPassword = passwordModifyRequest.getNewPassword();
+ bb.put( ( byte ) PasswordModifyRequestConstants.NEW_PASSWORD_TAG );
+ bb.put( TLV.getBytes( newPassword.length ) );
+ bb.put( newPassword );
+ }
+
+ return bb;
+ }
+
+
+and the _computeLength_ method is :
+
+
+ :::Java
+ /**
+ * Compute the PasswordModifyRequest extended operation length
+ * <pre>
+ * 0x30 L1
+ * |
+ * [+-- 0x80 L2 userIdentity]
+ * [+-- 0x81 L3 oldPassword]
+ * [+-- 0x82 L4 newPassword]
+ * </pre>
+ */
+ /* No qualifier */int computeLengthInternal()
+ {
+ requestLength = 0;
+
+ if ( passwordModifyRequest.getUserIdentity() != null )
+ {
+ int len = passwordModifyRequest.getUserIdentity().length;
+ requestLength = 1 + TLV.getNbBytes( len ) + len;
+ }
+
+ if ( passwordModifyRequest.getOldPassword() != null )
+ {
+ int len = passwordModifyRequest.getOldPassword().length;
+ requestLength += 1 + TLV.getNbBytes( len ) + len;
+ }
+
+ if ( passwordModifyRequest.getNewPassword() != null )
+ {
+ int len = passwordModifyRequest.getNewPassword().length;
+ requestLength += 1 + TLV.getNbBytes( len ) + len;
+ }
+
+ return 1 + TLV.getNbBytes( requestLength ) + requestLength;
+ }
+
+
+## Adding a new Extended operation
+
+We will show how to add a new extended operation in the **LDAP API**. The added operation is the _startTransaction_ operation, described in [RFC 5805](https://tools.ietf.org/html/rfc5805).
+
+The _startTransactionRequest_ has a _requestName_ containing **1.3.6.1.1.21.1**, and no _requestValue_.
+The _startTransactionResponse_ has no _responseName_ and a _responseValue_ containing an opaque transaction identifier (ie, it does not need to be decoced).
+
+We first need to declare an interface and implementation for each of those two operations. Those four elements are declared in the _<coec-api>_ module (in _/ldap/extras/codec-api_), and in the _org.apache.directory.api.ldap.extras.extended.startTransaction_ package, beside the other extended operations :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.startTransaction;
+
+
+ import org.apache.directory.api.ldap.model.message.ExtendedRequest;
+
+
+ /**
+ * The TransactionRequest interface. This is for the RFC 5805 Start Transaction Request,
+ * which grammar is :
+ * <pre>
+ * ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
+ * requestName [0] LDAPOID,
+ * requestValue [1] OCTET STRING OPTIONAL }
+ * </pre>
+ *
+ * where 'requestName' is 1.3.6.1.1.21.1 and requestValue is absent.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public interface StartTransactionRequest extends ExtendedRequest
+ {
+ /** The OID for the Transaction extended operation request. */
+ String EXTENSION_OID = "1.3.6.1.1.21.1";
+ }
+
+The request interface defines noting but the _OID_, as we don't have any payload.
+
+Here is the implementation :
+
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.startTransaction;
+
+
+ import org.apache.directory.api.ldap.model.message.AbstractExtendedRequest;
+
+
+ /**
+ * Implement the extended Start Transaction Request as described in RFC 5805.
+ *
+ * It's grammar is :
+ *
+ * <pre>
+ * ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
+ * requestName [0] LDAPOID,
+ * requestValue [1] OCTET STRING OPTIONAL }
+ * </pre>
+ *
+ * where 'requestName' is 1.3.6.1.1.21.1 and requestValue is absent.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class StartTransactionRequestImpl extends AbstractExtendedRequest implements StartTransactionRequest
+ {
+ /**
+ * Creates a new instance of StartTransactionRequestImpl.
+ *
+ * @param messageId the message id
+ */
+ public StartTransactionRequestImpl( int messageId )
+ {
+ super( messageId );
+ setRequestName( EXTENSION_OID );
+ }
+
+
+ /**
+ * Creates a new instance of StartTransactionRequestImpl.
+ */
+ public StartTransactionRequestImpl()
+ {
+ setRequestName( EXTENSION_OID );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionResponse getResultResponse()
+ {
+ if ( getResponse() == null )
+ {
+ setResponse( new StartTransactionResponseImpl() );
+ }
+
+ return ( StartTransactionResponse ) getResponse();
+ }
+ }
+
+We just implement the method that returns the associated response.
+
+Now for the response, which has an opaque value, here is the interface :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.startTransaction;
+
+
+ import org.apache.directory.api.ldap.model.message.ExtendedResponse;
+
+
+ /**
+ * The interface for Start Transaction Extended Response. It's described in RFC 5805 :
+ *
+ * <pre>
+ * ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
+ * COMPONENTS OF LDAPResult,
+ * responseName [10] LDAPOID OPTIONAL,
+ * responseValue [11] OCTET STRING OPTIONAL }
+ * </pre>
+ *
+ * where the responseName is not present, and the responseValue contain
+ * a transaction identifier when the result is SUCCESS.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public interface StartTransactionResponse extends ExtendedResponse
+ {
+ /** The OID for the Start Transaction extended operation response. */
+ String EXTENSION_OID = StartTransactionRequest.EXTENSION_OID;
+
+
+ /**
+ * @return The transaction ID if success
+ */
+ byte[] getTransactionId();
+ }
+
+As the response value is opaque, we return it as a _byte[]_.
+
+Here is the implementation :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.startTransaction;
+
+
+ import org.apache.directory.api.i18n.I18n;
+ import org.apache.directory.api.ldap.model.message.ExtendedResponseImpl;
+ import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
+ import org.apache.directory.api.util.Strings;
+
+
+ /**
+ * The interface for Start Transaction Extended Response. It's described in RFC 5805 :
+ *
+ * <pre>
+ * ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
+ * COMPONENTS OF LDAPResult,
+ * responseName [10] LDAPOID OPTIONAL,
+ * responseValue [11] OCTET STRING OPTIONAL }
+ * </pre>
+ *
+ * where the responseName is not present, and the responseValue contain
+ * a transaction identifier when the result is SUCCESS.
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class StartTransactionResponseImpl extends ExtendedResponseImpl implements StartTransactionResponse
+ {
+ /** The transaction ID if the request was successful */
+ private byte[] transactionId;
+
+ /**
+ * Create a new StartTransactionResponseImpl object
+ *
+ * @param messageId The messageId
+ * @param rcode the result code
+ * @param transactionId The transaction ID
+ */
+ public StartTransactionResponseImpl( int messageId, ResultCodeEnum resultCode, byte[] transactionId )
+ {
+ super( messageId );
+
+ switch ( resultCode )
+ {
+ case SUCCESS:
+ this.transactionId = Strings.copy( transactionId );
+ // pass through ...
+ case CANCELED:
+ case CANNOT_CANCEL:
+ case NO_SUCH_OPERATION:
+ case TOO_LATE:
+ break;
+
+ default:
+ throw new IllegalArgumentException( I18n.err( I18n.ERR_04166, ResultCodeEnum.SUCCESS,
+ ResultCodeEnum.OPERATIONS_ERROR, ResultCodeEnum.INSUFFICIENT_ACCESS_RIGHTS ) );
+ }
+
+ super.getLdapResult().setMatchedDn( null );
+ super.getLdapResult().setResultCode( resultCode );
+ }
+
+
+ /**
+ * Create a new StartTransactionResponseImpl instance
+ *
+ * @param messageId The request's messageId
+ * @param transactionId The transaction ID
+ */
+ public StartTransactionResponseImpl( int messageId, byte[] transactionId )
+ {
+ super( messageId );
+ super.getLdapResult().setMatchedDn( null );
+ super.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
+ this.transactionId = Strings.copy( transactionId );
+ }
+
+
+ /**
+ * Create a new StartTransactionResponseImpl instance
+ *
+ * @param transactionId The transaction ID
+ */
+ public StartTransactionResponseImpl( byte[] transactionId )
+ {
+ super( StartTransactionRequest.EXTENSION_OID );
+ super.getLdapResult().setMatchedDn( null );
+ super.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
+ this.transactionId = Strings.copy( transactionId );
+ }
+
+
+ /**
+ * Create a new StartTransactionResponseImpl instance
+ */
+ public StartTransactionResponseImpl()
+ {
+ super( StartTransactionRequest.EXTENSION_OID );
+ super.getLdapResult().setMatchedDn( null );
+ super.getLdapResult().setResultCode( ResultCodeEnum.UNWILLING_TO_PERFORM );
+ }
+
+
+ /**
+ * Gets the OID uniquely identifying this extended response (a.k.a. its
+ * name). It's a null value for the Cancel response
+ *
+ * @return the OID of the extended response type.
+ */
+ @Override
+ public String getResponseName()
+ {
+ return "";
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int hashCode()
+ {
+ int hash = 37;
+
+ if ( transactionId != null )
+ {
+ for ( byte b : transactionId )
+ {
+ hash += hash * 17 + b;
+ }
+ }
+
+ hash = hash * 17 + getClass().getName().hashCode();
+
+ return hash;
+ }
+
+
+ /**
+ * @see Object#equals(Object)
+ */
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( obj == this )
+ {
+ return true;
+ }
+
+ if ( !( obj instanceof StartTransactionResponseImpl ) )
+ {
+ return false;
+ }
+
+ return Arrays.equals( transactionId, ( ( StartTransactionResponseImpl ) obj ).transactionId );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getTransactionId()
+ {
+ return Strings.copy( transactionId );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setTransactionId( byte[] transactionId )
+ {
+ this.transactionId = Strings.copy( transactionId );
+ }
+ }
+
+There is nothing special in this implementation, we just make it so the _transactionId_ bytes are copied to be sure they can't be altered from the outside. Basically, the payload is transfered pristine into the instance.
+
+Now that we have the interfaces and implementations, we need to add the decorators and the factory. The factory is used to initialize the **API** with the list of available extended operaiton at startup, as a mean to make the **API** extensible. It creates request and response, and the associated decorator.
+
+Here is the factory code, declared in the _<extra-codec>_ module :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
+
+
+ import org.apache.directory.api.asn1.DecoderException;
+ import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
+ import org.apache.directory.api.ldap.codec.api.LdapApiService;
+ import org.apache.directory.api.ldap.extras.extended.cancel.CancelRequest;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequestImpl;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponseImpl;
+ import org.apache.directory.api.ldap.model.message.ExtendedRequest;
+ import org.apache.directory.api.ldap.model.message.ExtendedResponse;
+
+
+ /**
+ * An {@link ExtendedOperationFactory} for creating cancel extended request response
+ * pairs.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class StartTransactionFactory implements ExtendedOperationFactory
+ {
+ private LdapApiService codec;
+
+
+ /**
+ * Creates a new instance of CancelFactory.
+ *
+ * @param codec The codec for this factory.
+ */
+ public StartTransactionFactory( LdapApiService codec )
+ {
+ this.codec = codec;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getOid()
+ {
+ return CancelRequest.EXTENSION_OID;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionResponse newResponse( byte[] encodedValue ) throws DecoderException
+ {
+ StartTransactionResponseDecorator response = new StartTransactionResponseDecorator( codec, new StartTransactionResponseImpl() );
+ response.setResponseValue( encodedValue );
+
+ return response;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionRequest newRequest( byte[] value )
+ {
+ return new StartTransactionRequestDecorator( codec, new StartTransactionRequestImpl() );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionRequestDecorator decorate( ExtendedRequest modelRequest )
+ {
+ if ( modelRequest instanceof StartTransactionRequestDecorator )
+ {
+ return ( StartTransactionRequestDecorator ) modelRequest;
+ }
+
+ return new StartTransactionRequestDecorator( codec, null );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionResponseDecorator decorate( ExtendedResponse decoratedMessage )
+ {
+ if ( decoratedMessage instanceof StartTransactionResponseDecorator )
+ {
+ return ( StartTransactionResponseDecorator ) decoratedMessage;
+ }
+
+ return new StartTransactionResponseDecorator( codec, null );
+ }
+ }
+
+
+The decorator are very simple : they just encapsulate the requets or response instance. It's because encoding or decoding is non existant for this operation. Decorators are declared in the _<extra-codec>_ module.
+
+Here is teh code for both those decorators :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
+
+
+ import org.apache.directory.api.ldap.codec.api.ExtendedRequestDecorator;
+ import org.apache.directory.api.ldap.codec.api.LdapApiService;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
+
+
+ /**
+ * A Decorator for startTransaction request.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class StartTransactionRequestDecorator extends ExtendedRequestDecorator<StartTransactionRequest> implements
+ StartTransactionRequest
+ {
+ /** The internal startTransaction request */
+ private StartTransactionRequest startTransactionRequest;
+
+
+ /**
+ * Creates a new instance of StartTransactionRequestDecorator.
+ *
+ * @param codec The LDAP Service to use
+ * @param decoratedMessage The canceled request
+ */
+ public StartTransactionRequestDecorator( LdapApiService codec, StartTransactionRequest decoratedMessage )
+ {
+ super( codec, decoratedMessage );
+ startTransactionRequest = decoratedMessage;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StartTransactionResponse getResultResponse()
+ {
+ return ( StartTransactionResponse ) startTransactionRequest.getResultResponse();
+ }
+ }
+
+
+and for the response :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;
+
+
+ import org.apache.directory.api.ldap.codec.api.ExtendedResponseDecorator;
+ import org.apache.directory.api.ldap.codec.api.LdapApiService;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionResponse;
+ import org.apache.directory.api.util.Strings;
+
+
+ /**
+ * A Decorator for CancelResponses.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class StartTransactionResponseDecorator extends ExtendedResponseDecorator<StartTransactionResponse> implements StartTransactionResponse
+ {
+ /** The startTransaction response */
+ private StartTransactionResponse startTransactionResponse;
+
+ /**
+ * Creates a new instance of CancelResponseDecorator.
+ *
+ * @param codec The LDAP service instance
+ * @param decoratedMessage The decorated message
+ */
+ public StartTransactionResponseDecorator( LdapApiService codec, StartTransactionResponse decoratedMessage )
+ {
+ super( codec, decoratedMessage );
+ startTransactionResponse = decoratedMessage;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setResponseValue( byte[] responseValue )
+ {
+ this.responseValue = Strings.copy( responseValue );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getTransactionId()
+ {
+ return startTransactionResponse.getTransactionId();
+ }
+ }
+
+
+The last step is to declare the extended operation in the **LDAP API** initialization and **OSGi**. There are two places we have to declare the factory :
+
+* _CodecFactoryUtil_ class, in the _<ldap/codec/standalone>_ module
+* _ExtrasBundleActivator_ class, in the _<ldap/extras/codec>_ module
+
+
+Here is the added code in the _CodecFactoryUtil_ class :
+
+ :::Java
+ ...
+ import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
+ import org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction.StartTransactionFactory;
+ ...
+
+ /**
+ * A utility class for adding Codec and extended operation factories.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public final class CodecFactoryUtil
+ {
+ ...
+ public static void loadStockExtendedOperations(
+ Map<String, ExtendedOperationFactory> extendendOperationsFactories, LdapApiService apiService )
+ {
+ ...
+
+ StartTlsFactory startTlsFactory = new StartTlsFactory( apiService );
+ extendendOperationsFactories.put( startTlsFactory.getOid(), startTlsFactory );
+ LOG.info( "Registered pre-bundled extended operation factory: {}", startTlsFactory.getOid() );
+
+ StartTransactionFactory startTransactionFactory = new StartTransactionFactory( apiService );
+ extendendOperationsFactories.put( startTransactionFactory.getOid(), startTransactionFactory );
+ LOG.info( "Registered pre-bundled extended operation factory: {}", startTransactionFactory.getOid() );
+ ...
+ }
+ }
+
+We just need to instanciate the factory, and to add it to the map of supported extended operations.
+
+
+And the added code for the _ExtrasBundleActivator_ class :
+
+ :::Java
+ ...
+ import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
+ import org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction.StartTransactionFactory;
+ ...
+ import org.apache.directory.api.ldap.extras.extended.startTls.StartTlsRequest;
+ import org.apache.directory.api.ldap.extras.extended.startTransaction.StartTransactionRequest;
+ ...
+
+ /**
+ * A BundleActivator for the ldap codec extras extension: extra ApacheDS and
+ * Apache Directory Studio specific controls and extended operations.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class ExtrasBundleActivator implements BundleActivator
+ {
+ ...
+ /**
+ * Registers all the extras extended operations present in this control pack.
+ *
+ * @param codec The codec service.
+ */
+ private void registerExtrasExtendedOps( LdapApiService codec )
+ {
+ // --------------------------------------------------------------------
+ // Register Extended Request Factories
+ // --------------------------------------------------------------------
+ ...
+
+ StartTlsFactory startTlsFactory = new StartTlsFactory( codec );
+ codec.registerExtendedRequest( startTlsFactory );
+
+ StartTransactionFactory startTransactionFactory = new StartTransactionFactory( codec );
+ codec.registerExtendedRequest( startTransactionFactory );
+ ...
+ }
+
+
+ private void unregisterExtrasExtendedOps( LdapApiService codec )
+ {
+ ...
+ codec.unregisterExtendedRequest( StartTlsRequest.EXTENSION_OID );
+ codec.unregisterExtendedRequest( StartTransactionRequest.EXTENSION_OID );
+ ...
+ }
+ }
+
+We also have to export the package for it to be visible when using **OSGi**. This is done by modifying some _pom.xml_ files.
+
+
+_<ldap/extras/codec>_ module _pom.xml_ file :
+
+ :::XML
+ ...
+ <configuration>
+ <manifestLocation>META-INF</manifestLocation>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.ldap.extras.codec</Bundle-SymbolicName>
+ <Export-Package>
+ {local-packages};version=${project.version};-noimport:=true
+ </Export-Package>
+ <Export-Package>
+ ...
+ org.apache.directory.api.ldap.extras.extended.ads_impl.startTls;version=${project.version};-noimport:=true,
+ org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;version=${project.version};-noimport:=true,
+ ...
+ </Export-Package>
+ <Import-Package>
+ ...
+ org.apache.directory.api.ldap.extras.extended.startTls;version=${project.version},
+ org.apache.directory.api.ldap.extras.extended.startTransaction;version=${project.version},
+ ...
+ </Import-Package>
+
+
+_<ldap/extras/codec-api>_ module _pom.xml_ file :
+
+ :::XML
+ ...
+ <configuration>
+ <manifestLocation>META-INF</manifestLocation>
+ <instructions>
+ <Bundle-SymbolicName>${project.groupId}.ldap.extras.codec.api</Bundle-SymbolicName>
+ <Export-Package>
+ ...
+ org.apache.directory.api.ldap.extras.extended.startTls;version=${project.version};-noimport:=true,
+ org.apache.directory.api.ldap.extras.extended.startTransaction;version=${project.version};-noimport:=true,
+ ...
+ </Export-Package>
+
+# A more complex example
+
+Wealso have to add the _EndTransactionRequest_ and _endTransactionResponse_ extended opertions. We will focus on the response, which is more complex that the request.
+
+The _EndTransactionResponse_ value follows this ASN.1 description :
+
+
+ txnEndRes ::= SEQUENCE {
+ messageID MessageID OPTIONAL,
+ -- msgid associated with non-success resultCode
+ updatesControls SEQUENCE OF updateControl SEQUENCE {
+ messageID MessageID,
+ -- msgid associated with controls
+ controls Controls
+ } OPTIONAL
+ }
+
+Here, [RFC 5805](https://tools.ietf.org/html/rfc5805) gives some information about the semantic of this grammar :
+
+* we can either have a message ID, if the transaction was a failure
+* or have a list of _UpdateControls_ structure if we have had a success, with some controls having to be returned
+* or we simply have nothing and then the full value is simply absent.
+
+_Controls_ is a list of _Control_ as defined in [RFC 4511](https://tools.ietf.org/html/rfc4511#section-4.1.11), with the following ASN.1 description :
+
+
+ Controls ::= SEQUENCE OF control Control
+
+ Control ::= SEQUENCE {
+ controlType LDAPOID,
+ criticality BOOLEAN DEFAULT FALSE,
+ controlValue OCTET STRING OPTIONAL }
+
+So we may have many _updateControls_ and for each one of them, one to many _controls_. We will need to define a state machine to decode those two ASN/1 description.
+
+First, let's see what is the state machine for the _txnEndRes_ type and the _controls_ type :
+
+![Extended Operations state machine](images/EndTransactionResponse.png)
+
+
+The transitions from one step to the other is based on the BER encoded tag :
+
+* 0x30 for SEQUENCE
+* 0x04 for OCTET STRING
+* 0x01 for BOOLEAN
+* 0x02 for INTEGER
+
+Note that some deep knowledge on ASN.1 is required to encode or decode some element.
+
+Here, we will need two state machines to decode an _EndTransactionResponse_ message :
+
+* one for the response value
+* one for the embedded controls
+
+Hopefully, we can reuse the _LdapMessage_ _Control_ grammar (at least the logic)
+
+So we need to code the following interfaces and classes :
+
+* A container
+* A Factory
+* A Grammar (actually 2)
+* A list of states (StatesEnum)
+* A decorator
+* A decoder
+* An interface
+* An implementation
+
+The interface, implementation, factory, container and decoder are not really complex, and follow the same logic that what we shown in teh previous example.
+
+The list of states is just an _enum_ that describes all the states shown in the state machine exposed before :
+
+* Global SEQUENCE
+* MessageId
+* UpdateControls SEQUENCE
+* UpdateControl SEQUENCE
+* UpdateControl messageId
+* Controls
+* start and end states
+
+We can see we don't have any state associated with the _Control_ decoding : it's handled by another codec.
+
+Here is the _enum_ :
+
+ :::Java
+ package org.apache.directory.api.ldap.extras.extended.ads_impl.endTransaction;
+
+
+ import org.apache.directory.api.asn1.ber.grammar.States;
+
+
+ /**
+ * This class store the EndTransactionResponse's grammar constants. It is also used
+ * for debugging purposes.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public enum EndTransactionResponseStatesEnum implements States
+ {
+ /** The END_STATE */
+ END_STATE,
+
+ /** start state*/
+ START_STATE,
+
+ /** The initial SEQUENCE */
+ END_TRANSACTION_SEQUENCE_STATE,
+
+ /** The failed message ID */
+ FAILED_MESSAGE_ID_STATE,
+
+ /** The update controls SEQ */
+ UPDATE_CONTROLS_SEQ_STATE,
+
+ /** The update control SEQ */
+ UPDATE_CONTROL_SEQ_STATE,
+
+ /** THe control's message ID state */
+ CONTROL_MESSAGE_ID_STATE,
+
+ /** The control's state */
+ CONTROLS_STATE,
+
+ /** Last state */
+ LAST_STATE;
+
+
+ /**
+ * Get the grammar name
+ *
+ * @return The grammar name
+ */
+ public String getGrammarName()
+ {
+ return "END_TRANSACTION_RESPONSE_GRAMMER";
+ }
+
+
+ /**
+ * Get the string representing the state
+ *
+ * @param state The state number
+ * @return The String representing the state
+ */
+ public String getState( int state )
+ {
+ return ( state == END_STATE.ordinal() ) ? "END_TRANSACTION_RESPONSE_GRAMMER" : name();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEndState()
+ {
+ return this == END_STATE;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public EndTransactionResponseStatesEnum getStartState()
+ {
+ return START_STATE;
+ }
+ }
+
+We can now define transitions between states, accordingly to the grammar semantic :
+
+|Initial state|Tag|Final state|action|
+|---|---|---|---|---|
+| START | SEQUENCE | END_TRANSACTION_SEQUENCE | Initialize the data structure holding the result |
+| END_TRANSACTION_SEQUENCE | INTEGER | FAILED_MESSAGE_ID | Store the failed message ID |
+| FAILED_MESSAGE_ID | none | END | The value has been fully decode, get out |
+| END_TRANSACTION_SEQUENCE | SEQUENCE | UPDATE_CONTROLS_SEQ | Create a list of _UpdateControls_, store it in the response |
+| UPDATE_CONTROLS_SEQ | SEQUENCE | UPDATE_CONTROL_SEQ | Create a _UpdateControls_ instance, store it in the list |
+| UPDATE_CONTROL_SEQ | INTEGER | CONTROL_MESSAGE_ID | Store the message ID in the _updateControls_ instance |
+| CONTROL_MESSAGE_ID | SEQUENCE | CONTROLS | Grab the full value, call teh Controls decoder, store the result in the _updateControls_ instance |
+| CONTROLS | SEQUENCE | UPDATE_CONTROL_SEQ | Create a _UpdateControls_ instance, store it in the list |
+| CONTROLS | none | END | The decoding is over, we can quit |
+
+Each of those transitions will have an associated action. They are added in a _Grammar_ class. A _GrammarTransition_ is created and takes 3 or 4 parameters :
+
+* An initial state ('from')
+* A final state ('to')
+* A tag
+* An optional action to execute
+
+Each state may have many transitions going to many different states, but each transition must use a different tag.
+
+Here is an example of transition :
+
+ :::Java
+ /**
+ * Transition from Sequence to messageId
+ *
+ * txnEndReq ::= SEQUENCE {
+ * messageID MessageID OPTIONAL,
+ * -- msgid associated with non-success resultCode
+ * ...
+ *
+ * Set the messageId into the EndTransactionResponse instance, if it's not SUCCESS.
+ */
+ super.transitions[EndTransactionResponseStatesEnum.END_TRANSACTION_SEQUENCE_STATE.ordinal()][UniversalTag.INTEGER.getValue()] =
+ new GrammarTransition<EndTransactionResponseContainer>(
+ EndTransactionResponseStatesEnum.END_TRANSACTION_SEQUENCE_STATE,
+ EndTransactionResponseStatesEnum.FAILED_MESSAGE_ID_STATE,
+ UniversalTag.INTEGER.getValue(),
+ new GrammarAction<EndTransactionResponseContainer>( "Set EndTransactionResponse failed MessageID" )
+ {
+ public void action( EndTransactionResponseContainer container ) throws DecoderException
+ {
+ BerValue value = container.getCurrentTLV().getValue();
+
+ try
+ {
+ int failedMessageId = IntegerDecoder.parse( value );
+
+ if ( failedMessageId > 0 )
+ {
+ container.getEndTransactionResponse().setFailedMessageId( failedMessageId );
+ }
+
+ // We may have nothing left
+ container.setGrammarEndAllowed( true );
+ }
+ catch ( IntegerDecoderException ide )
+ {
+ LOG.error( I18n
+ .err( I18n.ERR_04490_BAD_END_TRANSACTION_COMMIT, Strings.dumpBytes( value.getData() ), ide.getMessage() ) );
+
+ // This will generate a PROTOCOL_ERROR
+ throw new DecoderException( ide.getMessage(), ide );
+ }
+ }
+ } );
+
+In this example, we have a transition from a **END_TRANSACTION_SEQUENCE_STATE** state to a **FAILED_MESSAGE_ID** state, which is triggered by an **INTEGER** tag. The executed action is created immediately, but it could have been a separated class.
diff --git a/source/api/internal-design-guide/15-ldif.md b/source/api/internal-design-guide/15-ldif.md
new file mode 100644
index 0000000..a5fa628
--- /dev/null
+++ b/source/api/internal-design-guide/15-ldif.md
@@ -0,0 +1,13 @@
+---
+title: 15 - LDIF
+navPrev: 14-extended-operations.html
+navPrevText: 14 - Extended Operations
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 16-dsml.html
+navNextText: 16 - DSML
+---
+
+# 15 - LDIF
+
+TODO...
diff --git a/source/api/internal-design-guide/16-dsml.md b/source/api/internal-design-guide/16-dsml.md
new file mode 100644
index 0000000..8df313b
--- /dev/null
+++ b/source/api/internal-design-guide/16-dsml.md
@@ -0,0 +1,13 @@
+---
+title: 16 - DSML
+navPrev: 15-ldif.html
+navPrevText: 15 - LDIF
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 17-osgi.html
+navNextText: 17 - OSGi
+---
+
+# 16 - DSML
+
+TODO...
diff --git a/source/api/internal-design-guide/17-osgi.md b/source/api/internal-design-guide/17-osgi.md
new file mode 100644
index 0000000..2044295
--- /dev/null
+++ b/source/api/internal-design-guide/17-osgi.md
@@ -0,0 +1,23 @@
+---
+title: 17 - OSGi
+navPrev: 16-dsml.html
+navPrevText: 16 - DSML
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+---
+
+# 17 - OSGi
+
+The **LDAP API** can either be use as a standalone API, or in an **OSGi** environment.
+
+## Activators
+
+LdapProtocolCodecActivator
+
+### ExtrasBundleActivator
+
+This activator loads and initializes extras controls and extended operations :
+
+### DefaultActivator
+
+This is the base activator. It instanciates and loads the _DefaultLdapCodecService_ class, which loas the default controls and extended operations
diff --git a/source/api/internal-design-guide/2-general-structure.md b/source/api/internal-design-guide/2-general-structure.md
new file mode 100644
index 0000000..0fdcda5
--- /dev/null
+++ b/source/api/internal-design-guide/2-general-structure.md
@@ -0,0 +1,56 @@
+---
+title: 2 - General Structure
+navPrev: 1-introduction.html
+navPrevText: 1 - Introduction
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 3-building.html
+navNextText: 3 - Building
+---
+
+# 2 - General Structure
+
+The **Apache LDAP API** is split into many modules. Here is their hierarchy :
+
+![Modules](images/ldap-api-modules.png)
+
+* The **all** module is just a packaging module, gathering all the other modules in one single jar to simplify the work for those who want to use the API. One can import each module speparately, or the **all** module only. Note that it does not include the tests and integration modules (**integ**, **integ-osgi** and **distribution**)
+
+* The **asn1** module contains the code needed to handle *ASN/1* encoding/decoding.
+
+* The **distribution** module just create the packages
+
+* The **dsml** module covers *DSML* features
+
+* The **i18n** module contains all the messages, in various languages (english, french and german at the moment)
+
+* The **integ** module is for integration tests, covering many of the existing modules
+
+* The **integ-osgi** module covers tests related to **OSGi** integration. It checks that we can instanciate some component within an **OSGi** framework.
+
+* The **ldap** modules are the meat of the *API* : they contain all the needed modules related to *LDAP*, and mainly the *model* module. Note that the *net* module should not be part of **ldap**, per se...
+
+* The **util** module contains classes that are shared across the various modules.
+
+
+Anyway, from a developer point of view, that does not tell a lot about the inner struture.
+
+Clearly, the entry point is the *Connection* interface and its inherited class, which reside in the _api-ldap-client-api_ module, in _/ldap/client/.api_. This is the interface - or one of its implementation - that is used to connect to a LDAP server. Here is the full hierarchy :
+
+![LdapConnection](images/ldap-connection.png)
+
+The user will need a _LdapNetworkConnection_ most of the time, the wrapper is just used by the connection pool. Note that *ApacheDS* has its own implementation (not represented in this picture), called _LdapCoresSessionConnection_.
+
+So, bottom line, if you want to have a look at how the *API* works, the entry point is the *LdapNetworkConnection class.
+
+## Layers
+
+If you consider a *LdapConnection*, obviously, you will have to connect to a remote server, and you will need a part of the code handling the network. This is done - currently - using *Apache MINA*, which is an *NIO* framework. That means all the communication with the remote *LDAP* server is done asynchroniously.
+
+We also made so the *API* to be *OSGi* compliant. That means some of the parts need to be 'activated'. The idea was to make it possible to extend the *API* easily by adding component that could be loaded dynamically. So far, it's not a completed work, but still, this is a on-going process.
+
+The following pitcure shows for 10 000 feet the *LDAP API* architecture :
+
+![LDAP API Architecture](images/architecture.png)
+
+
diff --git a/source/api/internal-design-guide/3-building.md b/source/api/internal-design-guide/3-building.md
new file mode 100644
index 0000000..289471e
--- /dev/null
+++ b/source/api/internal-design-guide/3-building.md
@@ -0,0 +1,46 @@
+---
+title: 3 - Building
+navPrev: 2-general-structure.html
+navPrevText: 2 - General Structure
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 4-asn1.html
+navNextText: 4 - ASN/1
+---
+
+# 3 - Building
+
+The project is based on **Apache Maven** (version 3.x), so you'll have to install it first.
+
+That being said, building the **LDAP API** is pretty straightforward :
+
+ :::
+ $ mvn clean install
+ Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
+ [INFO] Scanning for projects...
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Reactor Build Order:
+ [INFO]
+ [INFO] Apache Directory LDAP API
+ [INFO] Apache Directory LDAP API I18n
+ [INFO] Apache Directory LDAP API Utilities
+ ...
+ [INFO] Apache Directory LDAP API Model
+ [INFO] Apache Directory LDAP API Codec Parent
+ [INFO] Apache Directory API Integration Tests
+ [INFO] Apache Directory API OSGi Integration Tests
+ [INFO] Apache Directory LDAP API Distribution
+ [INFO]
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Building Apache Directory LDAP API 2.0.0.AM1-SNAPSHOT
+ [INFO] ------------------------------------------------------------------------
+ ...
+
+
+It takes around 1 min to build it all (a bit longer the first time, as some dependencies wil have to be pulled from the net).
+
+
+The top level _pom.xml_ depends on teh special _project_ 'project', which is used by all the **ApacheDS** projects. It gathers information about maven plugin dependenies and someother things. You don't really need to touch it anyway...
+
+Remember to use **Java 8** !!
+
diff --git a/source/api/internal-design-guide/4-asn1.md b/source/api/internal-design-guide/4-asn1.md
new file mode 100644
index 0000000..69dbbe6
--- /dev/null
+++ b/source/api/internal-design-guide/4-asn1.md
@@ -0,0 +1,98 @@
+---
+title: 4 - ASN/1
+navPrev: 3-building.html
+navPrevText: 3 - Building
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 4.1-asn1-tlv.html
+navNextText: 4.1 - ASN/1 TLV
+---
+
+# 4 - ASN/1
+
+To be completed...
+
+
+The **LDAP** protocol is based on an **ASN/1** description. We will notexplain in detail what is **ASN/1** about, you would rather check [This page](https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) for a very limited introduction, or if you feel teh need to understand what is **ASN/1** in detail, just read the [Olivier Dubuisson's book on ASN.1](http://www.oss.com/asn1/resources/books-whitepapers-pubs/dubuisson-asn1-book.PDF) (This is probably the best reference !)
+
+Anyway, we use a subset of **ASN/1**, as what we have to deal with is the **BER/DER** encoding. (**BER** or **DER** stands for **B**asic **E**ncoding **R**ule and **D**istinguished **E**ncoding **R**ule. There are other possible encoding, like **PER**, **XER**, **CER**, but they are irrelevant for **LDAP**)
+
+What is needed to know is that **ASN/1** is just a notation used to describe the messages being exchanged between a client and a server, and in order to use it, we need an encoder and a decoder on both sides :
+
+![Client/Server communication](images/asn1-codec.png)
+
+## ASN/1 implementation in Apache LDAP API
+
+It took a long time to get it right ! And it's not perfect :-)
+
+The very first iteration was using a proprietary library (**IBM SNACC**), but that was before **ApacheDS** became a **TLP** ! The next iteration was based on a rewriting system, which was pretty slow. Then came **Snicker**, a _State Machine_ based decoder, which is currently what we use. We might change for a faster implementation, like what **Kerby** is using...
+
+### ASN/1 messages
+
+Let's start with the basic information.
+
+An encoded ASN/1 message is a tuple contianing two or three elements : a **T**ype, a **L**ength and optionally - ie if the length is not 0 - a **V**alue. This tuple is called a **TLV**. Every message is a **TLV**.
+
+But a message can be have complex structure, so a **TLV** itself can encapsulate some **TLV**s. Actually the **V** part can be a list of **TLV**s. This is recursive...
+
+A typical encoded message can therefore represented this way :
+
+ :::
+ [TL [TLV] [TL [TLV] [TLV]]]
+
+Here, the message **TLV** value is a set of two **TLV**s, teh second one being itself a composition of 2 **TLV**s.
+
+The **T** describe the type of value, the **L** gives the length of this value (can be 0) and of course the **V** is the value, which can itself be a **TLV**.
+
+### Encoder/Decoder
+
+There are two aspects we have to deal with :
+
+* encoding messages
+* decoding messages
+
+Those are two different things, and we don't use the same mechanism. **Encoding** is done using a _State Machine_, and **Decoding** which is hard wired in each class implementing a message.
+
+As we said, it's not perfect, first because it's complex to implement, complex to add a new message, and complex to test. We don't have a compiler that generates the stubs to encode or decode messages.
+
+### Decoder
+
+The _Decoder_ work is to take a **byte[]** and transform it into an instance of a jave object. When we receive the **byte[]**, we don't know yet what kind of message we are dealing with, so the creation of the instance is differed.
+
+We have built a generic decoder that takes some imputs and produces the result, based on those elements :
+
+* A _Grammar_
+* A _Container_
+* A _StateEnum_
+* A _Decorator_
+* and optionally a _Factory_
+
+The _Grammar_ describes the transitions and actions of the state machine used to decode a message. Note that the actions can be stored in separate classes.
+
+The _Container_ is a wrapper around a message that is fed by the State Machine and that will contain the Java instance once fully decoded. It's initally empty.
+
+The _StateEnum_ is a Java enumeration listing all the possible _Grammar_ states.
+
+The _Decorator_ is a wrapper used to store a decoded message.
+
+The _Factory_ is used to create the message instance (it's optional)
+
+And of course, you have the messsage class that will be created and stored in the _Decorator_
+
+So what we have is based on a **State Engine**, which means you have to describe
+
+
+### Encoder
+
+It's slightly simpler : we use the *Decorator* to implement the encoding of a message. Two methods are necessary :
+
+* _int computeLength()_ : compute the _ByteBuffer_ size necessary to stored the encoded message
+* _ByteBuffer encode( ByteBuffer )_ : actually encode the message into a _ByteBuffer_
+
+### The state machine
+
+So we decode a message using a state machine, which basically transit from one state to another, and optionally execute an action in between :
+
+![State Machine transition](images/sm-transition.png)
+
+Now, let's see a real example.
diff --git a/source/api/internal-design-guide/4.1-asn1-tlv.md b/source/api/internal-design-guide/4.1-asn1-tlv.md
new file mode 100644
index 0000000..90ae8a1
--- /dev/null
+++ b/source/api/internal-design-guide/4.1-asn1-tlv.md
@@ -0,0 +1,605 @@
+---
+title: 4-1 - ASN/1 TLV
+navPrev: 4-asn1.html
+navPrevText: 4 - ASN/1
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 5-network.html
+navNextText: 5 - Network
+---
+
+# 4.1 - ASN/1 TLV
+
+## What are TLVs ?
+
+The acronym **TLV** stands for **T**ag, **L**ength and **V**alue. It's a way to encode a piece of information with a type, a length followed by the information itself. Three points must be known:
+
+* The **Value** part may contents other **TLV**s. One can see **TLV**s as C structures, that can contain sub-structures.
+* The **Value** may not exist, and in this case the **Length** will be 0.
+* The **Length** part may not give the **Value** length: it is called an _indefinite Length_. In this - not so frequent - case, the **Value** must end with a specific terminator.
+
+### A quick sample
+
+Let's begin with a simple example, without too many explanations. This is the **PDU** (**P**acket **D**ata **U**nit) of a LDAP _BindRequest_:
+
+![TLV](images/TLVs.png)
+
+We can see in this picture that you have what is called a first level **TLV**. It encapsulates other **TLV**s. It's basically a stream of bytes.
+
+
+### Type
+
+Each **Type** contains information about the **Value** part of the **TLV**. It tells if the **Value** is a primitive or a constructed one, which type of primitive is the value, gives some contextual information. A **Type** can be coded on more than one byte. The first 3 bits give some contextual information about the **Type**, and the 5 following bits are either a label or the beginning of a multi-bytes label.
+
+* Labels are numbers in [0..30], and they represent a specific **ASN/1** element in the protocol description, like _CompareRequest ::= [APPLICATION 14] _ (here, the label is 14).
+* If the label is 31, then more than one byte is used to encode the **Type**. In this case, we use the following bytes to compute the label, where each byte which high bit is one will be followed by another byte.
+
+We limit the label to 2,097,151 as we encode the **Type** in one Java int :
+
+ :::
+ b1 xxx[1-1111], b2 1[111-1111], b3 1[111-1111], b4 0[111-1111]
+ ->
+ [111-1111][111-1111][111-1111]
+ ->
+ 0001-1111 1111-1111 1111-1111
+ ->
+ 0x1FFFFF
+ ->
+ 2,097,151
+
+In **LDAP** or **Kerberos**, no label is higher than 30, so we always use 1 byte **Type**s.
+
+Other interesting information that we need to grab from a *Type* are stored in the two first bits (bit 7 and 6), and in the third bit (bit 5). The first two bits describe the class, the third tells if the **TLV** is a **primitive** (b5 = 0) or a **constructed** **TLV** (b5 = 1).
+
+
+### Length
+
+**Length** gives the number of bytes of the **Value**, and nothing else. So the total length of a **TLV** will be:
+
+ :::
+ TLV length = Tag length + Length length + Value length,
+
+where the **Value** length is stored in the **Length** element.
+
+The **Length** may be 0, which means that there is no value following.
+
+How is **Length** encoded? A **Value** may be from 0 to N bytes long, with N < (256 ^ 126) - 1. This limit is purely hypothetic, of course. If we have to deal with huge objects like pictures or movies, their length will not exceed a few MBytes or a few GBytes
+
+Typically, we will find five kind of **Length**s :
+
+* zero length values;
+* values with a length less than 128 bytes
+* values with a length between 128 and 256 ^ 4 bytes long (an int will be able to hold 4 bytes);
+* values above 256 ^ 4 bytes long
+* values which length is not defined by the **Length** element.
+
+The last type of Length could occurs if the sender does not know the length of the value while it is sending it. **LDAP** protocol does not allow those kind of values, which are dangerous because you need to read the full **Value** to know its length.
+
+The fourth type could also be ignored (4 GBytes is quite a huge size for an LDAP element ...), so we can decide that we won't accept those **Values**. It seems reasonable.
+
+As the **Length** can be stored in more than one byte, we have to take care of fragmented **PDU** : we may receive only the first bytes, and have to wait for the rest to be received. The idea is to freeze and start again when we receive some more data.
+
+In any case, if the first byte is > 0x7F, that means it's a multi-bytes length, and we have to process the following bytesto get the real length. In this case, the first byte contains teh number of expected following bytes. Typically :
+
+ :::
+ 0x74 -> 116
+ 0x82 0x02 0x84 : 2 bytes, length = 2 * 16 + 132 -> 164
+ 0x81 0x84 : 1 byte, length = 132
+
+
+### Value
+
+**Value** carries the 'meat' of a **TLV**. Depending on the **Type**, it's either a primitive value, or a constructed one (which means it contains a **TLV** or a set of **TLV**s). Remember that bit 5 of the **Type** tells if the **Value is _primitive_ ( b5 == 0) or _constructed (b5 == 1).
+
+* If we have a _primitive_ **Value**, we have to read **Length** byte and we are done
+** If we have a _constructed_ **Value**, we have to process it as one or more **TLV**.
+
+## TLV processing
+
+In the **API**, the **TLV** processing is done in the _Asn1Decoder_ class, and more specifically by the _decode( ByteBuffer stream, Asn1Container container )_ method, which takes a ByteBuffer as input, and feed a container as a result.
+
+The important thing to understand is that this method can be called repetively, until a message is fully decoded, as soon as we feed it with some new _ByteBuffer_. The _Container_ instance will contain the result, as soon as its state has switched to **PDU_DECODED**.
+
+While processing a **TLV**, when we are done with the **Value** part, the decoder will check if any action is to be executed. The action is associated to the grammar in use, which is stored in the container. Here is the part that call the action, in the _Asn1Decoder.treatTLVDoneState()_ method :
+
+ :::java
+ private boolean treatTLVDoneState( ByteBuffer stream, Asn1Container container ) throws DecoderException
+ {
+ // First, we have to execute the associated action
+ container.getGrammar().executeAction( container );
+ ...
+
+So the _Container_ must contain the grammar, and the current state. We may not have any action to execute, either because none is associated with the current transition or because we are at the end of the message.
+
+### TLV implementation
+
+The **TLV** class stores the **Type**, **Length** and **Value**, plus some extra information, like a unique _id_, a reference to its parent's **TLV** and the expected length when the included **Value** is a set of **TLV**.
+
+![TLV/BerValue](images/tlv-bervalue.png)
+
+You won't have tp manipulate **TLV** frequently, except in the actions, where you might fetch its *Length** and **Value** content, using _getLength()_ and _getValue().getData()_ methods respectively.
+
+### Action
+
+This is quite a simple class and hierarchy :
+
+![GrammarAction](images/grammar-action.png)
+
+As we can see, each **Action** has a name (this is only used for debug purpose) and a _action(Asn1Container)_ method, which does what it needs. The _Asn1Container_ parameter gives access to the data through the _Asn1Container.getCurrentTLV().getValue().getData()_ method, and to the message being processed.
+
+At this point, an example would be useful.
+
+## Example
+
+Let say we want to implement a decoder for the following message :
+
+ :::
+ EntryChangeNotification ::= SEQUENCE
+ {
+ changeType ENUMERATED
+ {
+ add (1),
+ delete (2),
+ modify (4),
+ modDN (8)
+ },
+ previousDN LDAPDN OPTIONAL, -- modifyDN ops. only
+ changeNumber INTEGER OPTIONAL -- if supported
+ }
+
+You don't need to know anything about this message, what is important is how we will decode it.
+
+The first thing we need to create is an interface and a implementation for the Java object that will represent the **EntryChange** object.
+
+Here is the interface (note that it's a _Control_, but it's a irrelevant information here) :
+
+ :::Java
+ public interface EntryChange extends Control
+ {
+ /** No defined change number */
+ int UNDEFINED_CHANGE_NUMBER = -1;
+
+ /** The EntryChange control */
+ String OID = "2.16.840.1.113730.3.4.7";
+
+
+ /**
+ * @return The ChangeType
+ */
+ ChangeType getChangeType();
+
+
+ /**
+ * Set the ChangeType
+ *
+ * @param changeType Add, Delete; Modify or ModifyDN
+ */
+ void setChangeType( ChangeType changeType );
+
+
+ /**
+ * @return The previous DN
+ */
+ Dn getPreviousDn();
+
+
+ /**
+ * Sets the previous DN
+ *
+ * @param previousDn The previous DN
+ */
+ void setPreviousDn( Dn previousDn );
+
+
+ /**
+ * @return The change number
+ */
+ long getChangeNumber();
+
+
+ /**
+ * Sets the ChangeNumber
+ *
+ * @param changeNumber The ChanegNumber
+ */
+ void setChangeNumber( long changeNumber );
+ }
+
+What is important is that we declare all the setters and getters for the object fields that matter : _changeType_, _previousDN_ and _changeNumber_
+
+The implementation is not really complex :
+
+ :::Java
+ /**
+ * A simple implementation of the EntryChange response control.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public class EntryChangeImpl extends AbstractControl implements EntryChange
+ {
+ /** The changeType */
+ private ChangeType changeType = ChangeType.ADD;
+
+ private long changeNumber = UNDEFINED_CHANGE_NUMBER;
+
+ /** The previous Dn */
+ private Dn previousDn = null;
+
+
+ /**
+ *
+ * Creates a new instance of EntryChangeControl.
+ *
+ */
+ public EntryChangeImpl()
+ {
+ super( OID );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public ChangeType getChangeType()
+ {
+ return changeType;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setChangeType( ChangeType changeType )
+ {
+ this.changeType = changeType;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Dn getPreviousDn()
+ {
+ return previousDn;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setPreviousDn( Dn previousDn )
+ {
+ this.previousDn = previousDn;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public long getChangeNumber()
+ {
+ return changeNumber;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setChangeNumber( long changeNumber )
+ {
+ this.changeNumber = changeNumber;
+ }
+
+
+ /**
+ * @see Object#hashCode()
+ */
+ @Override
+ public int hashCode()
+ {
+ int h = super.hashCode();
+
+ h = h * 37 + ( int ) changeNumber;
+ h = h * 37 + ( changeType == null ? 0 : changeType.hashCode() );
+ h = h * 37 + ( previousDn == null ? 0 : previousDn.hashCode() );
+
+ return h;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( !super.equals( o ) )
+ {
+ return false;
+ }
+
+ EntryChange otherControl = ( EntryChange ) o;
+
+ return ( changeNumber == otherControl.getChangeNumber() ) && ( changeType == otherControl.getChangeType() )
+ && ( previousDn.equals( otherControl.getPreviousDn() ) );
+ }
+
+
+ /**
+ * Return a String representing this EntryChangeControl.
+ */
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( " Entry Change Control\n" );
+ sb.append( " oid : " ).append( getOid() ).append( '\n' );
+ sb.append( " critical : " ).append( isCritical() ).append( '\n' );
+ sb.append( " changeType : '" ).append( changeType ).append( "'\n" );
+ sb.append( " previousDN : '" ).append( previousDn ).append( "'\n" );
+
+ if ( changeNumber == UNDEFINED_CHANGE_NUMBER )
+ {
+ sb.append( " changeNumber : '" ).append( "UNDEFINED" ).append( "'\n" );
+ }
+ else
+ {
+ sb.append( " changeNumber : '" ).append( changeNumber ).append( "'\n" );
+ }
+
+ return sb.toString();
+ }
+ }
+
+This is pretty much trivial.
+
+We now need a _Decorator to manipulate this instance. Here is the code :
+
+ :::Java
+ public class EntryChangeDecorator extends ControlDecorator<EntryChange> implements EntryChange
+ {
+ /** Default value when no change number is provided */
+ public static final int UNDEFINED_CHANGE_NUMBER = -1;
+
+ /** A temporary storage for the previous Dn */
+ private byte[] previousDnBytes = null;
+
+ /** The entry change global length */
+ private int eccSeqLength;
+
+ /** An instance of this decoder */
+ private static final Asn1Decoder DECODER = new Asn1Decoder();
+
+
+ /**
+ * Creates a new instance of EntryChangeDecoder wrapping a newly created
+ * EntryChange Control object.
+ *
+ * @param codec The LDAP service instance
+ */
+ public EntryChangeDecorator( LdapApiService codec )
+ {
+ super( codec, new EntryChangeImpl() );
+ }
+
+
+ /**
+ * Creates a new instance of EntryChangeDecorator wrapping the supplied
+ * EntryChange Control.
+ *
+ * @param codec The LDAP service instance
+ * @param control The EntryChange Control to be decorated.
+ */
+ public EntryChangeDecorator( LdapApiService codec, EntryChange control )
+ {
+ super( codec, control );
+ }
+
+
+ /**
+ * Internally used to not have to cast the decorated Control.
+ *
+ * @return the decorated Control.
+ */
+ private EntryChange getEntryChange()
+ {
+ return getDecorated();
+ }
+
+
+ /**
+ * Compute the EntryChangeControl length
+ *
+ * <pre>
+ * 0x30 L1
+ * |
+ * +--> 0x0A 0x0(1-4) [1|2|4|8] (changeType)
+ * [+--> 0x04 L2 previousDN]
+ * [+--> 0x02 0x0(1-4) [0..2^63-1] (changeNumber)]
+ * </pre>
+ *
+ * @return the control length.
+ */
+ @Override
+ public int computeLength()
+ {
+ int changeTypesLength = 1 + 1 + 1;
+
+ int previousDnLength = 0;
+ int changeNumberLength = 0;
+
+ if ( getPreviousDn() != null )
+ {
+ previousDnBytes = Strings.getBytesUtf8( getPreviousDn().getName() );
+ previousDnLength = 1 + TLV.getNbBytes( previousDnBytes.length ) + previousDnBytes.length;
+ }
+
+ if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
+ {
+ changeNumberLength = 1 + 1 + BerValue.getNbBytes( getChangeNumber() );
+ }
+
+ eccSeqLength = changeTypesLength + previousDnLength + changeNumberLength;
+ valueLength = 1 + TLV.getNbBytes( eccSeqLength ) + eccSeqLength;
+
+ return valueLength;
+ }
+
+
+ /**
+ * Encodes the entry change control.
+ *
+ * @param buffer The encoded sink
+ * @return A ByteBuffer that contains the encoded PDU
+ * @throws EncoderException If anything goes wrong.
+ */
+ @Override
+ public ByteBuffer encode( ByteBuffer buffer ) throws EncoderException
+ {
+ if ( buffer == null )
+ {
+ throw new EncoderException( I18n.err( I18n.ERR_04023 ) );
+ }
+
+ buffer.put( UniversalTag.SEQUENCE.getValue() );
+ buffer.put( TLV.getBytes( eccSeqLength ) );
+
+ buffer.put( UniversalTag.ENUMERATED.getValue() );
+ buffer.put( ( byte ) 1 );
+ buffer.put( BerValue.getBytes( getChangeType().getValue() ) );
+
+ if ( getPreviousDn() != null )
+ {
+ BerValue.encode( buffer, previousDnBytes );
+ }
+
+ if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
+ {
+ BerValue.encode( buffer, getChangeNumber() );
+ }
+
+ return buffer;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public byte[] getValue()
+ {
+ if ( value == null )
+ {
+ try
+ {
+ computeLength();
+ ByteBuffer buffer = ByteBuffer.allocate( valueLength );
+
+ buffer.put( UniversalTag.SEQUENCE.getValue() );
+ buffer.put( TLV.getBytes( eccSeqLength ) );
+
+ buffer.put( UniversalTag.ENUMERATED.getValue() );
+ buffer.put( ( byte ) 1 );
+ buffer.put( BerValue.getBytes( getChangeType().getValue() ) );
+
+ if ( getPreviousDn() != null )
+ {
+ BerValue.encode( buffer, previousDnBytes );
+ }
+
+ if ( getChangeNumber() != UNDEFINED_CHANGE_NUMBER )
+ {
+ BerValue.encode( buffer, getChangeNumber() );
+ }
+
+ value = buffer.array();
+ }
+ catch ( Exception e )
+ {
+ return null;
+ }
+ }
+
+ return value;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public ChangeType getChangeType()
+ {
+ return getEntryChange().getChangeType();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setChangeType( ChangeType changeType )
+ {
+ getEntryChange().setChangeType( changeType );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Dn getPreviousDn()
+ {
+ return getEntryChange().getPreviousDn();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setPreviousDn( Dn previousDn )
+ {
+ getEntryChange().setPreviousDn( previousDn );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public long getChangeNumber()
+ {
+ return getEntryChange().getChangeNumber();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setChangeNumber( long changeNumber )
+ {
+ getEntryChange().setChangeNumber( changeNumber );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Asn1Object decode( byte[] controlBytes ) throws DecoderException
+ {
+ ByteBuffer bb = ByteBuffer.wrap( controlBytes );
+ EntryChangeContainer container = new EntryChangeContainer( getCodecService(), this );
+ DECODER.decode( bb, container );
+ return this;
+ }
+ }
diff --git a/source/api/internal-design-guide/5-network.md b/source/api/internal-design-guide/5-network.md
new file mode 100644
index 0000000..5103646
--- /dev/null
+++ b/source/api/internal-design-guide/5-network.md
@@ -0,0 +1,343 @@
+---
+title: 5 - Network
+navPrev: 4-asn1.html
+navPrevText: 4 - ASN/1
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 6-codec.html
+navNextText: 6 - Encoding/Decoding
+---
+
+# 5 - Network
+
+# Content
+
+* [Class hierarchy](#class-hierarchy)
+* [MINA usage](#mina-usage)
+ * [Initialization](#initialization)
+ * [Example : using a LdapConnectionConfig](#example-using-a-ldapconnectionconfig)
+ * [MINA Events processing](#mina-events-processing)
+ * [Events processing](#events-processing)
+ * [Sending a message](#sending-a-message)
+ * [Receiving a message](#receiving-a-message)
+ * [Encoding/decoding](#encoding-decoding)
+ * [SSL handling](#ssl-handling)
+ * [StartTLS handling](#startts-handling)
+
+
+The **Apache LDAP AP** is built on top of [**Apache MINA**](http://mina.apache.org) which is a **NIO** framework.
+
+As **MINA** is fully asynchronous, it has some impact on the design of the **LDAP API**. Basically, we send requests, and we don't wait for responses, we get informed when the response is there. Most of the time, the **API** users will want to wait for a response, instead of leveraging the asyncrhonous aspect of the **API**: this is the reason we have a blocking **API**, based on the non-blocking implementation. We will explain the whole thing here.
+
+NOTE : **LDAP** protocol is based on **TCP**, we are not dealing with **UDP** at all.
+
+## Class hierarchy
+
+The **LdapConnection** interface and its implementations are the entry point for any code that wants to communicate using the **LDAP** protocol. There are many flavors, but one usually want to instanciate a **LdapNetworkConnection**. Her eis the complete class hierarchy:
+
+![LdapConnection hierarchy](images/ldapconnection.png)
+
+Creating a new **LdapConnection** is all about calling the appropriate constructor with the required parameters, or to create a **LdapConnectionConfig** and call the **LdapConnection** implementation constructor.
+
+It's also possible to use a **LdapConnectionFactory** implementation :
+
+![LdapConnection factory hierarchy](images/ldap-connection-factory.png)
+
+## MINA usage
+
+**MINA** handles all the complexity of managing sockets and transfering messages in and out. An application based on this framework just have to implement a few interfaces :
+
+* _IoHandler_ which is the part of the application that receives or sends messages, and manage the connection to the remote peer
+* _ProtocolDecoder_ and _ProtoclEncoder_ which is responsible for encoding a meassage to a _byte[]_ ready to be sent or to produce a message from a received _byte[]_
+* _ProtocolCodecFactory_ which is the factory that instanciates the encoder and decoder
+
+We also have to create a _Connector_, which is the instance in charge of managing the communication with the remote peer. That implies we properly set the filter chain it uses, especially the **SSL/TLS** part.
+
+Currently, we have a dedicated **MINA* module that covers a part of that, but the _Connector_ creation and initialization is done in the _LdapNetworkConnection_ class - which is a mistake, it should be delegated to a class in the **MINA** module-.
+
+### Initialization
+
+The initialization is done in the _LdapnetworkConnection.connect()_ method :
+
+ :::Java
+ public boolean connect() throws LdapException
+ {
+ ...
+
+ // Create the connector if needed
+ if ( connector == null )
+ {
+ createConnector();
+ }
+
+and the private _createConnector()_ method does all the work :
+
+ :::Java
+ private void createConnector() throws LdapException
+ {
+ // Use only one thread inside the connector
+ connector = new NioSocketConnector( 1 );
+
+ if ( connectionConfig != null )
+ {
+ ( ( SocketSessionConfig ) connector.getSessionConfig() ).setAll( connectionConfig );
+ }
+ else
+ {
+ ( ( SocketSessionConfig ) connector.getSessionConfig() ).setReuseAddress( true );
+ }
+
+ // Add the codec to the chain
+ connector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
+
+ // If we use SSL, we have to add the SslFilter to the chain
+ if ( config.isUseSsl() )
+ {
+ addSslFilter();
+ }
+
+ // Inject the protocolHandler
+ connector.setHandler( this );
+ }
+
+A few things :
+
+* We use one thread as a default to handle the communication with the server, it's enough as we are only talking to one server anyawy. This is the reason we use '1' as a parameter to the _Connector_ constructor.
+* We may have a SocketSessionConfig instance, as soon as one is passed to the _LdapNetworkConnection_ instance before the first call to the _connect_ method is done. By default, we just set the _SO_REUSE_ flag.
+* We add one or two filters to the chain : the **codec** and the **SSL** filter, if needed. The **SSL** filter requires that a _LdapConnectionConfig_ instance is passed to the constructor.
+* As we can see, the _LdapNetwworkConnection_ class is the _IoHandler_ implementation.
+
+This private class should be moved to another class in the **MINA** module.
+
+Note : We could share the _Connector_ between many **LdapConnections**, using less threads.
+
+#### Example : using a LdapConnectionConfig
+
+Here is an example on how we can create and use a _LdapConnectionConfig_ to set up a secured connection :
+
+ :::Java
+ LdapConnectionConfig sslConfig = new LdapConnectionConfig();
+ sslConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
+ sslConfig.setUseSsl( true );
+ sslConfig.setLdapPort( getLdapServer().getPortSSL() );
+ sslConfig.setTrustManagers( new NoVerificationTrustManager() );
+ sslConfig.setBinaryAttributeDetector( new SchemaBinaryAttributeDetector(
+ ldapServer.getDirectoryService().getSchemaManager() ) );
+
+ try ( LdapNetworkConnection connection = new LdapNetworkConnection( sslConfig ) )
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+ ...
+
+
+### MINA Events processing
+
+There are many aspects we need to consider when it comes to use **MINA** :
+
+* events processing
+* sending a message
+* receiving a message
+* encoding/decoding
+
+#### Events processing
+
+**MINA** is an asynchronous framework, which means it's event based : you will receive events when something 'happens' (like, a message is received, etc). The events have to be processed by the **LDAP API**, and the **IoHandler** interface is listing all the events we have to process. Here they are :
+
+* _messageReceived_ : When a message has been fully received from the remote peer
+* _messageSent_ : When a message has been fully sent to the remote peer
+* _exceptionCaught_ : If we git an exception from the network layer
+* _inputClosed_ : When the _Input_ part of a TCP connection has been closed
+* _sessionClosed_ : When a Session is closed
+* _sessionCreated_ : When a Session is created
+* _sessionIdle_ : When a Session is idle
+* _sessionOpened_ : When a Session is opened
+* _event_ : when the session receives a specific event
+
+The _session_ is created when you connect for the first time, it's atcive until it's closed. We are talking about a **TCP** session, not a **LDAP** session.
+
+So the _LdapNetworkConnection_ class must implement those methods.
+
+Regarding the _messageReceived/messageSent_ methods, it's important to know that we are talking about **FULL** **LDAP** messages, even if **TCP** does not guarantee that messages can't be fragmented : **MINA** deal with fragmentation.
+
+Actually, we only implement the _messageReceived_, _exceptionCaught_, _inputClose_, _sessionCreated_ and _sessionClosed_ methods, the other are handled by the _IoHandlerAdpater_ methods (which does nothing with it).
+
+#### Sending a message
+
+There are two modes : **Synchronous** and **Asyncrhonous**. The methods are respectively described in the _LdapConnection_ interface and _LdapAsyncConnection_ interface. Actually, _synchronous_ methods are calling _asynchronous_ methods, which returns a _Future_ :
+
+ :::Java
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public AddResponse add( AddRequest addRequest ) throws LdapException
+ {
+ ...
+
+ AddFuture addFuture = addAsync( addRequest );
+
+ // Get the result from the future
+ try
+ {
+ // Read the response, waiting for it if not available immediately
+ // Get the response, blocking
+ AddResponse addResponse = addFuture.get( timeout, TimeUnit.MILLISECONDS );
+
+ if ( addResponse == null )
+ {
+ // We didn't received anything : this is an error
+ LOG.error( "Add failed : timeout occurred" );
+ throw new LdapException( TIME_OUT_ERROR );
+ }
+
+ if ( addResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS )
+ {
+ // Everything is fine, return the response
+ LOG.debug( "Add successful : {}", addResponse );
+ }
+ else
+ {
+ // We have had an error
+ LOG.debug( "Add failed : {}", addResponse );
+ }
+
+ return addResponse;
+ }
+ catch ( Exception ie )
+ {
+ // Catch all other exceptions
+ // Send an abandon request
+ if ( !addFuture.isCancelled() )
+ {
+ abandon( addRequest.getMessageId() );
+ }
+
+ throw new LdapException( NO_RESPONSE_ERROR, ie );
+ }
+ }
+
+You can see we wait until the timeout expired, or until we got the response, calling the _addAsync_ method, getting back a _Future_ and waiting on it.
+
+This method take a _AddRequest_ but we have other simpler flavors (see the **LDAP API** documentation).
+
+
+
+ AddResponse ldapConnection.add( AddResquest )
+ |
+ +-- AddFuture addAsync( AddRequest )
+ | |
+ | +-- connect()
+ | | |
+ | | +-- createConnector()
+ | | | |
+ | | | +-- new NioSocketConnector()
+ | | | |
+ | | | +-- NioSocketConnector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
+ | | | |
+ | | | [+-- addSslFilter()]
+ | | | |
+ | | | +-- NioSocketConnector.setHandler( this )
+ | | |
+ | | +-- IoConnector.connect( address )
+ | |
+ | +-- checkSession()
+ | |
+ | +-- new AddFuture( LdapConnection, ID )
+ | |
+ | +-- addToFutureMap( ID, AddFuture )
+ | |
+ | +-- writeRequest( AddRequest )
+ | |
+ | +-- WriteFuture IoSession.write( request )
+ | |
+ | +-- WriteFuture.awaitUninterruptibly( 100 )
+ |
+ +-- AddFuture.get()
+
+Here, we first create a connection if we don't have one yet, and then we try to write the message to the remote server, and wait for the message to be sent. That means sending message is synchronous, while receiving is aysnchronous by default. (NOTE : This may change in the next version.)
+
+Once the request has been written, we do a _get_ on the returned _Future_. Either we get an _AddResponse_, or an error/timeout.
+
+#### Receiving a message
+
+Once the _IoSession.write()_ method is called, we can assume the message has been sent to the remote server (sort of). The response will come as an event : _messageReceived()_, which is implemented in _LdapNetworkConnection_.
+
+Each **LDAP** message has a unique **ID**, and every sent message is associated with a _Future_. When the message is sent, we store a tuple <**ID**, **Future**> in a map, so when the response arrives, we just have to pull the _Future_ from the map using teh message **ID**. This is what we do in the _messageReceived()_ implementation. The response is enqueued in the _Future_ (we may have more than one, typically for **Search** operations).
+
+
+#### Encoding/decoding
+
+Messages are encoded and decoded when we send or receive them. This is done by **MINA**, using a callback in the **LDAP API**. That means we configured **MINA** to process **LDAP** messages.
+
+The codec is inserted in **MINA** chain while connecting :
+
+ :::Java
+ /** The Ldap codec protocol filter */
+ private IoFilter ldapProtocolFilter = new ProtocolCodecFilter( codec.getProtocolCodecFactory() );
+
+ private void createConnector() throws LdapException
+ {
+ ...
+
+ // Add the codec to the chain
+ connector.getFilterChain().addLast( "ldapCodec", ldapProtocolFilter );
+
+So the _ProtocolCodecFilter_ class is responsible for initializing the codec (it's a **MINA** class), and here, we use a factory to inject the encoder and decoder instances. This factory is _LdapProtocolCodecFactory_.
+
+This class, which is part of the _mina_ module, instanciate an instance of the statefull **LDAP** encoder and decoder classes, _LdapProtocolEncoder_ and _LdapProtocolDecoder_, which also belongs to the _mina_ module.
+
+What is important to remember is that **TCP** is not dealing with **LDAP** messages, but with bytes. The decoder must be able to start decoding a message, even if it does not have all the necessary bytes to decode a full **LDAP** message. It should also be able to decode more than one message if the bytes it received contains more than the bytes necessary to hold a message. All of this is handle by MINA anyway, but we must provide a way for the decoder to keep the current state. Check the [codec](codec.html) page for more explainations.
+
+
+## SSL Handling
+
+**LDAPS** is a **LDAP** connection secured with **SSL/TLS** (we still use **SSL** as a name, when actually **TLS** is used, as **SSL** is not anymore safe. The currrent version of the protocol is **TLS V.12**, but **TLS v1.3** has just been released.)
+
+A **LDAPS** connection is a standard **TCP** connection which has a secured layer installed before it can be used.
+
+## StartTLS Handling
+
+The **StartTLS** extended operation is a bit specific, as it is set over an existing connection, and based on a **LDAP** message being sent to the remote server. The big plus is that it uses the standard **LDAP** port, so there is no need to declare a dedicated port for a secured connection (aka **LDAPS**).
+
+The logic is the following :
+
+ ::: text
+ - The client sends a **startTLS** extended operation to the server - assuming the server supports it -
+ - The server setup a **TLS** 'listener', configure it, and send back an extended response to inform the client it is ready to proceed further. At this point, the server will not proceed any non-handshake messages received for this **LDAP** session, not will it send any response (they will be enqueued)
+ - On reception of this response, the client will add the **SslFilter** into the MINA network chain, configure it, and start the handshake (by sending a **CLIENT HELLO** message). No further message can be sent for this session, beside the handsake messages (they will be enqueued and delivered when teh handshake has been completed successfully)
+ - The handshake is performed: messages and responses are send and received, up to teh completion point.
+ - When the handshake is completed, the **SslFilter** inform the connection that it's done by 'sending' (locally) a **SESSION_SECURED* message
+ - enqueued messages are flushed on bith the client and server. We are done, the session is secured.
+
+There are many aspect that are tricky here. One of them is to be sure we don't send messages to the remote peer while processing the handshake
+
+
+On the server :
+
+Init : the SSLContext is configured to TLS, regardless of the configuration...
+
+SslHandler.handleExtendedOperation
+ new SslFilter()
+ DefaultIoFilterChain.addFirst()
+ DefaultIoFilterChain.register()
+ SslFilter.onPreAdd()
+ new SslHandler()
+ SslHandler.init()
+ SSLContext.createSSLEngine()
+ [SSLEngine.beginHandshake()] <<<----
+ SslFilter.onPostAdd()
+ write response
+
+On the client :
+
+addSslFilter
+ SSLContext.getInstance()
+ new SslFilter()
+ DefaultIoFilterChain.addFirst()
+ DefaultIoFilterChain.register()
+ SslFilter.onPreAdd()
+ new SslHandler()
+ SslHandler.init()
+ SSLContext.createSSLEngine()
+ SSLEngine.beginHandshake() <<<----
+ SslFilter.onPostAdd()
diff --git a/source/api/internal-design-guide/6-codec.md b/source/api/internal-design-guide/6-codec.md
new file mode 100644
index 0000000..282522c
--- /dev/null
+++ b/source/api/internal-design-guide/6-codec.md
@@ -0,0 +1,13 @@
+---
+title: 6 - Encoding/Decoding
+navPrev: 5-network.html
+navPrevText: 5 - Network
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 7-ldap-messages.html
+navNextText: 7 - LDAP Messages
+---
+
+# 6 - Encoding/Decoding
+
+TODO...
diff --git a/source/api/internal-design-guide/7-ldap-messages.md b/source/api/internal-design-guide/7-ldap-messages.md
new file mode 100644
index 0000000..6cf8cee
--- /dev/null
+++ b/source/api/internal-design-guide/7-ldap-messages.md
@@ -0,0 +1,13 @@
+---
+title: 7 - LDAP Messages
+navPrev: 6-codec.html
+navPrevText: 6 - Encoding/Decoding
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 8-schema.html
+navNextText: 8 - Schema
+---
+
+# 7 - LDAP Messages
+
+TODO...
diff --git a/source/api/internal-design-guide/8-schema.md b/source/api/internal-design-guide/8-schema.md
new file mode 100644
index 0000000..edf4c44
--- /dev/null
+++ b/source/api/internal-design-guide/8-schema.md
@@ -0,0 +1,140 @@
+---
+title: 8 - Schema
+navPrev: 7-ldap-messages.html
+navPrevText: 7 - LDAP Messages
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 9-dn.html
+navNextText: 9 - DN
+---
+
+# 8 - Schema
+
+## Schema parsers
+
+We use a set of classes to parse schema elements. There are 11 flavors of schema elements, 8 of them being described in a **RFC**, 3 of them being ApacheDS proprietary:
+
+* [AttributeType](https://tools.ietf.org/html/rfc4512#section-4.1.2)
+* [DitContentRule](https://tools.ietf.org/html/rfc4512#section-4.1.6)
+* [DitStructureRule](https://tools.ietf.org/html/rfc4512#section-4.1.7.1)
+* [LDAPSyntax](https://tools.ietf.org/html/rfc4512#section-4.1.5)
+* [MatchingRule](https://tools.ietf.org/html/rfc4512#section-4.1.3)
+* [MatchingRuleUse](https://tools.ietf.org/html/rfc4512#section-4.1.4)
+* [NameForm](https://tools.ietf.org/html/rfc4512#section-4.1.7.2)
+* [ObjectClass](https://tools.ietf.org/html/rfc4512#section-4.1.1)
+
+and
+
+* LdapComparator
+* Normalizer
+* SyntaxChecker
+
+We need to be able to parse those schema elements because they can be added into the server as a description (ie, a String representing one of those schema elements as defined by the RFC). For the same reason, the **LDAP API** need to validate that those schema elements are valid before sending them to a **LDAP SERVER**, or to be able to properly parse what it gets from a **LDAP server**.
+
+## Strict vs quirks mode
+
+Here we have a problem : most of the LDAP server implementation violate the RFC. We can't simply expect the String representing a schema element to be compliant with the RFC. Some typical deviations are :
+
+* OpenLDAP uses some macro instead of OIDs. This is convenient, as it allows to define the root OID with a name, and reuse it in the associated schema elements
+* AD and many other servers expect some specific characters to be accepted, like '_', ':', '#', ...
+* Sometime, the values may come without quotes, when it's required
+* etc.
+
+We will define the _strict mode_ a mode which follows the **RFC** tightly, and the _quirks mode_ a relaxed version of the parser, more permissive. One can use either the strict or relaxed mode using a flag.
+
+### Strict mode
+
+The only thing we will relax is the order in which the various parts of each description is present in a schema description : we don't expect them to be ordered as described in the RFC.
+
+The various parts are defined using a few syntaxes :
+
+* _NAME_: qdescrs
+* _DESC_: qdstring
+* _SUP_ (**ObjectClass**), _MUST_, _MAY_, _APPLIES_, _AUX_, _NOT_: oids
+* _SUP_ (**AttributeType**), _EQUALITY_, _ORDERING_, _SUBSTR_, _FORM_, _OC_: oid
+* _SYNTAX_ (**AttributeType**): noidlen
+* _SYNTAX_ (**MathingRule**): numericoid
+* _SUP_ (**DitStructureRule**): ruleids
+
+* _descr_: oid, qdescrs
+* _qdescr_: qdescrs, qdescrlist
+
+_qdescrs_ and _oids_ may contain one or many _qdescr_ and _oid_.
+
+#### descr, strict
+
+The _descr_ construct is used by _oid_ and _qdescrs_ (an _OID_ can be a name). The strict mode will use this grammar :
+
+ descr ::= keystring
+ keystring ::= leadkeychar keychar*
+ leadkeychar ::= ALPHA
+ keychar ::= ALPHA | DIGIT | HYPHEN
+ ALPHA ::= ['A'..'Z'] | ['a'..'z']
+ DIGIT ::= ['0'..'9']
+ HYPHEN ::= '-'
+ SQUOTE ::= '\''
+
+#### qdstring, strict
+
+A _qdstring_ can contain any type of **UTF-8** characters, except the simple quote or the backslash, which must be encoded. It's always surrounded by simple quotes :
+
+
+ qdstring ::= SQUOTE dstring SQUOTE
+ dstring ::= ( QS | QQ | QUTF8 )*
+ QQ ::= ESC %x32 %x37
+ QS ::= ESC %x35 ( %x43 / %x63 )
+ QUTF8 ::= QUTF1 | UTFMB
+ QUTF1 ::= %x00-26 | %x28-5B | %x5D-7F
+
+#### qdescr, strict
+
+_qdescr_ is a quoted name, where the first char must be alphabetic, and the following chars must be alphabetic, digits or hyphen. Here is the **ABNF** for _qdescr_ :
+
+
+ qdescr ::= SQUOTE descr SQUOTE
+
+#### noidlen, strict
+
+### Relaxed mode
+
+#### qdstring, relaxed
+
+There
+
+#### descr, relaxed
+
+The relaxed _descr_ accepts more characters, like underscore, semi-colon, dot, colon or sharp. The leadkeychar will not be mandatory, too. Here is the **ABNF** we will accept :
+
+ relaxed-descr ::= relaxed-keystring
+ leaxed-keystring::= keychar+
+ relaxed-keychar ::= ALPHA | DIGIT | HYPHEN | UNDERSCORE | SEMICOLON | DOT | COLON | SHARP
+ ALPHA ::= ['A'..'Z'] | ['a'..'z']
+ DIGIT ::= ['0'..'9']
+ HYPHEN ::= '-'
+ UNDERSCORE ::= '_'
+ SEMI_COLON ::= ';'
+ COLON ::= ':'
+ SDOT ::= '.'
+ SHARP ::= '#'
+
+
+#### qdescr, relaxed
+
+Compared to the strict mode, we will accept a non-quoted String, or a String using double quotes.
+
+
+ relaxed-qdescr ::= SQUOTE relaxed-descr SQUOTE | DQUOTE relaxed-descr DQUOTE | relaxed-descr
+
+#### oid, relaxed
+
+We will accept quoted and double quoted OIDs and Names, in relaxed mode. Here is teh supported **ABNF** :
+
+
+ oid-relaxed ::= SQUOTE relaxed-descr SQUOTE | DQUOTE relaxed-descr DQUOTE | descr-relaxed |
+ SQUOTE numericoid SQUOTE | DQUOTE numericoid DQUOTE | numericoid
+
+#### noidlen, strict
+
+Here, we will allow textual syntax name to be used, not only OIDs. For instance, something like _SYNTAX IA5String_ will be allowed.
+
+We also allow quoted and double quoted OIDs.
\ No newline at end of file
diff --git a/source/api/internal-design-guide/9-dn.md b/source/api/internal-design-guide/9-dn.md
new file mode 100644
index 0000000..2fec2de
--- /dev/null
+++ b/source/api/internal-design-guide/9-dn.md
@@ -0,0 +1,14 @@
+---
+title: 9 - DN
+navPrev: 8-schema.html
+navPrevText: 8 - Schema
+navUp: ../internal-design-guide.html
+navUpText: Internal Design Guide
+navNext: 10-entry.html
+navNextText: 10 - Entry
+---
+
+# 9 - DN
+
+a **DN**, or **Distingusished Name** is a data structure that
+TODO...
diff --git a/source/api/java-api.md b/source/api/java-api.md
new file mode 100644
index 0000000..7a68cff
--- /dev/null
+++ b/source/api/java-api.md
@@ -0,0 +1,29 @@
+---
+title: LDAP Java API
+---
+
+# LDAP Java API
+This is the **Java** implementation of a new **LDAP API**. This effort was initially conducted with the **OpenDS** team.
+
+## Background
+There are a few existing **Java LDAP API** around there. Here is a short list and description.
+
+| API | Version | License | Description |
+|---|---|---|---|
+| [Apache Directory Client API 1.0](https://directory.apache.org/api/) | 1.0.0 | ASL 2.0 | The Apache Directory Server CLient API. |
+| [Apache Directory Client API 2.0](https://directory.apache.org/api/) | 2.0.0 | ASL 2.0 | The Apache Directory Server CLient API, V2. |
+| [jLDAP](http://www.openldap.org/jldap/) | 2008_03-01-1 | OpenLDAP Public License | A Novell(&tm;) contribution to the OpenLDAP project |
+| [JNDI](http://java.sun.com/products/jndi/reference/docs/index.html) | 1.2 | Sun license | This is not a pure LDAP API, however it's included in J2SE since Java 5. (Probably the API selected by many developers |
+| [ldapSDK](http://www.mozilla.org/directory/javasdk.html) | 4.17 | Netscape Public License| The Mozilla(&tm;) API, formally the Netscape LDAP API |
+| [OpenDJ LDAP SDK](https://forgerock.org/opendj/#sub-projects) | 3.0.0 | CDDL | The ForgeRock(&tm;) OpenDJ LDAP SDK |
+| [OpenDS client API](https://www.opends.org/wiki/page/ClientAPI) | Discontinued | CDDL | The OpenDS(&tm;) API |
+| [UnboundID API](http://www.unboundid.com/products/ldapsdk/) | 3.2.0 | GPLv2/LGPLv2.1/UnboundID Free Use License | A new API developed by the UnboundID(&tm;) company |
+
+(There may be some more we don't know about)
+
+## Features
+The [User Guide](user-guide.html) pages gives the list of features the API provides.
+
+## Prerequisite
+
+This API requires **Java 7** or upper.
diff --git a/source/api/migration-guide.md b/source/api/migration-guide.md
new file mode 100644
index 0000000..1bcf345
--- /dev/null
+++ b/source/api/migration-guide.md
@@ -0,0 +1,31 @@
+---
+title: API 1.0 to 2.0 migration guide
+---
+
+# Apache LDAP API 1.0 to 2.0 migration guide
+
+## Main differences
+
+The *Apache LDAP API V 2.0* is not very different from the *1.0* version. However, a few classes have been renamed, removed or added.
+
+### Value
+
+Those classes/interface were removed :
+
+* AbstractValue
+* BinaryValue
+* StringValue
+
+They are all replaced by a single class, *Value*, that is not anymore parametered.
+
+We now have to use the *Value* class only. That is not a really big trouble, as everywhere you were using *Value<?>*, you just have to remove the *<?>*.
+
+Do not anymore use *new BinaryValue( byte[] )* or *new StringValue( String )*, just do *new Value( byte[] )* and *new Value( String )*.
+
+There are a few methods that has changed, like *getValues()* that now always returns a *String* (even for a *byte[]*, which will be dumped as a hexadecimal string). If you want to get the *byte[]* from the *Value*, use *getBytes()*.
+
+### Connection pool
+
+We have moved to *commons-pool* 2.5, which means there is some incompatibility with the previous pool configuration.
+
+Typically, when configuring a *LdapConnectionPool*, you have to pass a *PooledObjectFactory* instead of a *PoolableObjectFactory*.
diff --git a/source/api/news.md b/source/api/news.md
new file mode 100644
index 0000000..1614f75
--- /dev/null
+++ b/source/api/news.md
@@ -0,0 +1,889 @@
+---
+title: News
+---
+
+# News
+<h2 class="news">Apache Directory LDAP API 2.0.1 released <em>posted on March 26th, 2020</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 2.0.1 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This is a bug fix release, which fixes some OSGi aspects and add a proper handling of the _TreeDelete_ control.
+
+ <b>Bugs :</b>
+ * [DIRAPI-354](https://issues.apache.org/jira/browse/DIRAPI-354) - java.lang.NoClassDefFoundError: org/apache/directory/api/i18n/I18n in osgi
+
+<b>Features:</b>
+ * [DIRAPI-353](https://issues.apache.org/jira/browse/DIRAPI-353) - Automatic-Module-Name need to be added to jar files
+
+
+Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 2.0.0 released <em>posted on November 13th, 2019</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 2.0.0 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This is the first GA version of the Apache LDAP API 2.0 ! It fixes an important bug in the connection management when unbinding and a coiuple of other issues :
+
+ <b>Bugs :</b>
+
+ * [DIRAPI-342](https://issues.apache.org/jira/browse/DIRAPI-342) - Unbind breaks connection
+ * [DIRAPI-349](https://issues.apache.org/jira/browse/DIRAPI-349) - DN with hex values aren't parsed properly when not schema aware
+
+<b>Improvement :</b>
+ * [DIRAPI-344](https://issues.apache.org/jira/browse/DIRAPI-344) - Allow a LDIF entry loading to be accepted when the SchemaManager is in relaxed mode
+
+
+Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 2.0.0.AM4 released <em>posted on June 9th, 2019</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 2.0.0.AM4 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+
+It fixes an important race condition (when closing a session, and re-binding it immediately, there might be some cancelled operations). We also benefited from a *MINA* release (2.1.3) which fixes a 100% CPU usage in some corner case. A couple of other minor issues have also been fixed (DIRAPI-343 and DIRAPI-328).
+
+Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
+
+
+# News
+<h2 class="news">Apache Directory LDAP API 2.0.0.AM3 released <em>posted on May 15th, 2019</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 2.0.0.AM3 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+It contains many fixes (37) and is needed to be able to release ApacheDS and Studio, which contains many important fixes themselves. There are some remaining issues to be fixed, but at this point, we need a release since the last one was cut 8 months ago...
+
+Here is the list of fixed issues:
+
+<b>Bugs :</b>
+
+ * [DIRAPI-109](https://issues.apache.org/jira/browse/DIRAPI-109) - Attribute values should be byte[]
+ * [DIRAPI-117](https://issues.apache.org/jira/browse/DIRAPI-117) - Refactor schema packages to decouple various aspects
+ * [DIRAPI-162](https://issues.apache.org/jira/browse/DIRAPI-162) - The CachingNormalizer class does not cache anything
+ * [DIRAPI-239](https://issues.apache.org/jira/browse/DIRAPI-239) - Client API exposes implementation classes of common-pools
+ * [DIRAPI-271](https://issues.apache.org/jira/browse/DIRAPI-271) - Multi-valued RDN should allow AVAs with same attribute
+ * [DIRAPI-300](https://issues.apache.org/jira/browse/DIRAPI-300) - Weird batchResponse when batchRequest contains grammar error
+ * [DIRAPI-301](https://issues.apache.org/jira/browse/DIRAPI-301) - Ldaps connection trusts all certificates
+ * [DIRAPI-302](https://issues.apache.org/jira/browse/DIRAPI-302) - DefaultAttribute NPE
+ * [DIRAPI-303](https://issues.apache.org/jira/browse/DIRAPI-303) - If and else-if branches has the same condition
+ * [DIRAPI-305](https://issues.apache.org/jira/browse/DIRAPI-305) - The SyncInfoValue element is not a control
+ * [DIRAPI-309](https://issues.apache.org/jira/browse/DIRAPI-309) - NoD extended operation is not properly implemented
+ * [DIRAPI-314](https://issues.apache.org/jira/browse/DIRAPI-314) - StartTLS operation is not correctly handled
+ * [DIRAPI-317](https://issues.apache.org/jira/browse/DIRAPI-317) - Non thread-safe tests could lead to errors while running them
+ * [DIRAPI-321](https://issues.apache.org/jira/browse/DIRAPI-321) - The ExtendedResponse message does not carry any value when sent back
+ * [DIRAPI-323](https://issues.apache.org/jira/browse/DIRAPI-323) - Decoding extended operations which require a value isn't enforcing the value to be present
+ * [DIRAPI-326](https://issues.apache.org/jira/browse/DIRAPI-326) - Schema Import - ERR_13215_VALUE_EXPECT_STRING
+ * [DIRAPI-332](https://issues.apache.org/jira/browse/DIRAPI-332) - Add missing hashcode method for Schema objects
+ * [DIRAPI-336](https://issues.apache.org/jira/browse/DIRAPI-336) - GeneralizedTime issue with timezone when DST is applied
+
+
+<b>Improvements:</b>
+
+ * [DIRAPI-99](https://issues.apache.org/jira/browse/DIRAPI-99) - Build CLI wrapper around the API
+ * [DIRAPI-276](https://issues.apache.org/jira/browse/DIRAPI-276) - RDN normalization is under efficient
+ * [DIRAPI-277](https://issues.apache.org/jira/browse/DIRAPI-277) - Update commons pool implementation Unassigned Resolved
+ * [DIRAPI-310](https://issues.apache.org/jira/browse/DIRAPI-310) - We most certainly don't need a Queue in operation futures
+ * [DIRAPI-311](https://issues.apache.org/jira/browse/DIRAPI-311) - Add RFC 5805 extended operation support
+ * [DIRAPI-312](https://issues.apache.org/jira/browse/DIRAPI-312) - Add an explaination after the log error and message numbers
+ * [DIRAPI-315](https://issues.apache.org/jira/browse/DIRAPI-315) - Create a faster Schema parser
+ * [DIRAPI-322](https://issues.apache.org/jira/browse/DIRAPI-322) - Use a TLS buffer to encode requests and responses
+ * [DIRAPI-325](https://issues.apache.org/jira/browse/DIRAPI-325) - The Asn1Decoder class is not stateless
+ * [DIRAPI-330](https://issues.apache.org/jira/browse/DIRAPI-330) - Improve TLS handshake error handling
+ * [DIRAPI-331](https://issues.apache.org/jira/browse/DIRAPI-331) - Remove the Decorators
+ * [DIRAPI-338](https://issues.apache.org/jira/browse/DIRAPI-338) - Implement RFC 4525
+ * [DIRAPI-340](https://issues.apache.org/jira/browse/DIRAPI-340) - uniqueMemberComparator does not compare DN properly
+
+
+<b>Features:</b>
+
+ * [DIRAPI-306](https://issues.apache.org/jira/browse/DIRAPI-306) - Add a Control[] parameter in operations, like what we have for lookup()
+
+
+<b>Tasks:</b>
+
+ * [DIRAPI-74](https://issues.apache.org/jira/browse/DIRAPI-74) - Complete the API documentation
+ * [DIRAPI-304](https://issues.apache.org/jira/browse/DIRAPI-304) - Add support for the Microsoft AD extended control Policy Hints (1.2.840.113556.1.4.2239)
+
+<b>Dependency updates:</b>
+
+ * [DIRAPI-313](https://issues.apache.org/jira/browse/DIRAPI-313) - SCM Pointing to SVN instead of GitBox
+ * [DIRAPI-324](https://issues.apache.org/jira/browse/DIRAPI-324) - commons-lang and commons-collections need to be updated to most recent versions
+ * [DIRAPI-333](https://issues.apache.org/jira/browse/DIRAPI-333) - Switch to Junit 5
+
+Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.3 released <em>posted on April 19th, 2019</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.3 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This is a bug fix release that fixes an issue when using _MINA 2.1.1_ version: a _SSL/TLS_ connection would stall because we were waiting on an event that _MINA 2.1.1_ would never produced.
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 2.0.0.AM2 released <em>posted on September 3rd, 2018</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 2.0.0.AM2 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This is a bug fix release that address a performance issue with the schema: All the SchemaObjects had their hashcode set to 0, which made it
+slow to fetch from a Map or a Set. That impacted Studio startup, making it slow when a user has several connections.
+
+A couple of other issues have also been fixed.
+
+Here are the associated JIRA tickets :
+
+ * [DIRAPI-318](https://issues.apache.org/jira/browse/DIRAPI-318) - Schema elements HashCode are not computed at all
+ * [DIRAPI-319](https://issues.apache.org/jira/browse/DIRAPI-319) - The RestrictedByItem class stores elements in a Set, expecting it to be ordered.
+ * [DIRAPI-291](https://issues.apache.org/jira/browse/DIRAPI-291) - The Immutable schema object can't be used
+
+Downloads are available [here](downloads-2.html) and the User's Guide is [there](user-guide.html)
+
+# CVE-2018-1337: Plaintext Password Disclosure in Secured Channel
+
+The Apache LDAP API 1.0.2 that has just been released fix a [critical security issue](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1337): A bug in the way the SSL Filter was setup made it possible for another thread to use the connection before the TLS layer has been established, if the connection has already been used and put back in a pool of connections, leading to leaking any information contained in this request (including the credentials when sending a BIND request)
+
+
+We urge you to switch to this version.
+
+Downloads are available [here](downloads-1.html)
+
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.2 released <em>posted on June 6st, 2018</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.2 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Two security issues has been fixed :
+
+* A LDAPS race condition, where some clear text message could be sent over the wire, when using a connection pool
+
+This is a critical issue, and we urge you to upgrade to **Apache LDAP API 1.0.2** if you were using a previous version.
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.1 released <em>posted on May 19th, 2018</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.1 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Two security issues has been fixed :
+
+* A LDAPS race condition, where some clear text message could be sent over the wire, when using a connection pool
+* A StartTLS issue, where the establishmenent of the secured channel can't be made, and the connection is dropped
+
+Those are two critical issues, and we urge you to upgrade to **Apache LDAP API 1.0.1** if you were using a previous version.
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0 released <em>posted on June 7th, 2017</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0 final of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+One critical issue has been fixed :
+
+<b>Bug :</b>
+
+ * [DIRAPI-227](https://issues.apache.org/jira/browse/DIRAPI-227) - Bind user dn and password sent in clear after receiving PROTOCOL_ERROR during ldaps connection
+
+Some fixes have also been applied in the syntex-checkers, which are now immutable.
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-RC2 released <em>posted on November 2nd, 2016</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-RC2 of the Apache Directory LDAP API, the second release candidate before the GA.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here is the list of fixed issues :
+
+<b>Bugs :</b>
+
+ * [DIRAPI-285](https://issues.apache.org/jira/browse/DIRAPI-285) - ModifyPassword extended operation incorrectly expects value in ModifyResponse
+ * [DIRAPI-284](https://issues.apache.org/jira/browse/DIRAPI-284) - DateUtils throws an exception for certain timestamps
+ * [DIRAPI-279](https://issues.apache.org/jira/browse/DIRAPI-279) - We are using hashcode over a set in some tests, this is not reliable
+ * [DIRAPI-154](https://issues.apache.org/jira/browse/DIRAPI-154) - Implement "online" OpenLDAP schema parsing in DefaultSchemaLoader
+
+<b>Improvements :</b>
+
+ * [DIRAPI-283](https://issues.apache.org/jira/browse/DIRAPI-283) - We don't need to parse the DN when storing a name in the LDAP requests
+ * [DIRAPI-207](https://issues.apache.org/jira/browse/DIRAPI-207) - Expose the underlying socket config
+
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-RC1 released <em>posted on June 17th, 2016</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-RC1 of the Apache Directory LDAP API, the first release candidate before the GA.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here is the list of fixed issues and added features :
+
+<b>Bugs :</b>
+
+ * [DIRAPI-243](https://issues.apache.org/jira/browse/DIRAPI-243) - Cannot get AttributeType from Attribute
+ * [DIRAPI-244](https://issues.apache.org/jira/browse/DIRAPI-244) - Error in loading schema
+ * [DIRAPI-249](https://issues.apache.org/jira/browse/DIRAPI-249) - Performance issue LDAP API 1.0.0-M31
+ * [DIRAPI-265](https://issues.apache.org/jira/browse/DIRAPI-265) - Deserialized Dn loses bytes field resulting in null dn, treated as Root DSE when encoded in ModifyRequests
+ * [DIRAPI-266](https://issues.apache.org/jira/browse/DIRAPI-266) - ResultCodeEnum 'NO_SUCH_OBJECT' should have message 'noSuchObject'
+ * [DIRAPI-273](https://issues.apache.org/jira/browse/DIRAPI-273) - api-ldap-net-mina bundle remains in STARTING mode
+ * [DIRAPI-274](https://issues.apache.org/jira/browse/DIRAPI-274) - The AttributeTypeHolder.toLdif method does not convert the m-usage Attribute correctly
+ * [DIRAPI-275](https://issues.apache.org/jira/browse/DIRAPI-275) - Many AttributeType are defined with the wrong m-usage
+ * [DIRAPI-280](https://issues.apache.org/jira/browse/DIRAPI-280) - The LdapNetworkConnection.getTimeout() method is wrong
+ * [DIRAPI-245](https://issues.apache.org/jira/browse/DIRAPI-245) - LdifUtils.convertToLdif(LdifEntry, int) does not honor the 'length' parameter fully
+ * [DIRAPI-258](https://issues.apache.org/jira/browse/DIRAPI-258) - Add support for the Microsoft LDAP server show deleted objects control
+ * [DIRAPI-260](https://issues.apache.org/jira/browse/DIRAPI-260) - OID can't process nodes which are bigger than a long
+ * [DIRAPI-261](https://issues.apache.org/jira/browse/DIRAPI-261) - OID don't encode correctly joint-iso-itu-t arcs
+ * [DIRAPI-262](https://issues.apache.org/jira/browse/DIRAPI-262) - misleading message "The matched Dn should not be set when the result code is one of..."
+
+<b>Improvements :</b>
+
+ * [DIRAPI-282](https://issues.apache.org/jira/browse/DIRAPI-282) - Detection of timeout in cursor.next()
+
+
+<b>New Features :</b>
+
+ * [DIRAPI-269](https://issues.apache.org/jira/browse/DIRAPI-269) - Add support for modular crypt format password
+
+
+<b>Tasks :</b>
+
+ * [DIRAPI-270](https://issues.apache.org/jira/browse/DIRAPI-270) - Remove the dependency on commons.io
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M33 released <em>posted on December 21th, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M33 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+A bug fix releases. We have an improved version of the Ldif anonymizer that handles Change records, and a few other fixes (OID handling...)
+
+
+Here is the list of fixed issues and added features :
+
+<b>Bugs :</b>
+
+ * [DIRAPI-245](https://issues.apache.org/jira/browse/DIRAPI-245) - LdifUtils.convertToLdif(LdifEntry, int) does not honor the 'length' parameter fully
+ * [DIRAPI-258](https://issues.apache.org/jira/browse/DIRAPI-258) - Add support for the Microsoft LDAP server show deleted objects control
+ * [DIRAPI-260](https://issues.apache.org/jira/browse/DIRAPI-260) - OID can't process nodes which are bigger than a long
+ * [DIRAPI-261](https://issues.apache.org/jira/browse/DIRAPI-261) - OID don't encode correctly joint-iso-itu-t arcs
+ * [DIRAPI-262](https://issues.apache.org/jira/browse/DIRAPI-262) - misleading message "The matched Dn should not be set when the result code is one of..."
+
+<b>Task :</b>
+
+ * [DIRAPI-257](https://issues.apache.org/jira/browse/DIRAPI-257) - Fix usage of default charset|locale|timezone and enable forbiddenapis check
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M32 released <em>posted on October 19th, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M32 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Another bug fix release, with some huge modifications in the way we handle Values. The SchemaManager is now propagated down to the Ava and Value classes, which causes many tests to have been fixed.
+
+We have added a LdifAnonymizer that can swallow a Ldif File and replace the values with a random text.
+
+We also have spent some time fixing many checkstyle violations.
+
+Here is the list of fixed issues and added features :
+
+<b>Bugs :</b>
+
+ * [DIRAPI-90](https://issues.apache.org/jira/browse/DIRAPI-90) - IllegalArgumentException: factory thrown when creating LdapNetworkConnection inside OSGi
+ * [DIRAPI-114](https://issues.apache.org/jira/browse/DIRAPI-114) - Reconsider interfaces and base classes for Registries
+ * [DIRAPI-118](https://issues.apache.org/jira/browse/DIRAPI-118) - Use JUnit TemporaryFolder Rule
+ * [DIRAPI-219](https://issues.apache.org/jira/browse/DIRAPI-219) - DateUtils.toGeneralizedTime does not work with some Locales
+ * [DIRAPI-241](https://issues.apache.org/jira/browse/DIRAPI-241) - new GeneralizedTime(String) fails for fraction close to one
+ * [DIRAPI-246](https://issues.apache.org/jira/browse/DIRAPI-246) - Error in parsing LDIF file
+ * [DIRAPI-252](https://issues.apache.org/jira/browse/DIRAPI-252) - Compiling warnings while api-all is in dependencies
+ * [DIRAPI-253](https://issues.apache.org/jira/browse/DIRAPI-253) - The AVA class is not handling correctly the values wrt the SchemaManager
+ * [DIRAPI-254](https://issues.apache.org/jira/browse/DIRAPI-254) - Value<?> don't have a apply(AttributeType) method
+ * [DIRAPI-255](https://issues.apache.org/jira/browse/DIRAPI-255) - An escaped space at the end of a RDN will not be kept due to a bug in the ComplexDNParser
+
+<b>Task :</b>
+
+ * [DIRAPI-251](https://issues.apache.org/jira/browse/DIRAPI-251) - Fix violations of coding standards and enable checkstyle check
+
+<b>New Feature :</b>
+
+ * [DIRAPI-250](https://issues.apache.org/jira/browse/DIRAPI-250) - Add a way to Anonymize a LDIF file
+
+<b>Question :</b>
+
+ * [DIRAPI-191](https://issues.apache.org/jira/browse/DIRAPI-191) - How to get attributes list according to objectClass
+
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M31 released <em>posted on July 5th, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M31 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This release fixes a security vulnerability, [CVE-2015-3250](http://cve.mitre.org/cgi-bin/cvename.cgi?name=2015-3250).
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M30 released <em>posted on May 2nd, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M30 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Another bug fix release, with some critical fixes in the connection handling, and some schema modifications.
+
+Here is the list of fixed issues :
+
+ <b>Bugs :</b>
+
+ * [DIRAPI-236](https://issues.apache.org/jira/browse/DIRAPI-236) - Unbind during search hangs
+ * [DIRAPI-234](https://issues.apache.org/jira/browse/DIRAPI-234) - ClassLoading issues with two classes in different packages
+ * [DIRAPI-231](https://issues.apache.org/jira/browse/DIRAPI-231) - Wrong namespace in generated response
+ * [DIRAPI-230](https://issues.apache.org/jira/browse/DIRAPI-230) - Connection to invalid host blocks for 30 seconds
+ * [DIRAPI-229](https://issues.apache.org/jira/browse/DIRAPI-229) - The LdifParser lowrcase attributeType
+ * [DIRAPI-196](https://issues.apache.org/jira/browse/DIRAPI-196) - Always throw error ERR_04486_VALUE_ALREADY_EXISTS from org.apache.directory.api.ldap.model.entry.DefaultAttribute against AD's attribute dSCorePropagationData when do search operation.
+
+
+<b>Improvements :</b>
+
+ * [DIRAPI-233](https://issues.apache.org/jira/browse/DIRAPI-233) - OSGi: Import package range for slf4j
+
+
+<b>Tasks :</b>
+
+ * [DIRAPI-235](https://issues.apache.org/jira/browse/DIRAPI-235) - Wrong attributeType names
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M29 released <em>posted on April 2nd, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M29 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Another bug fix release, with a few new fonctionalities being added :
+- a LDIF anonymizer
+- VLV support
+
+Here is the list of fixed issues :
+
+
+ <b>Bugs :</b>
+
+ * [DIRAPI-100](https://issues.apache.org/jira/browse/DIRAPI-100) Implement the GSSAPI SASL Bind mechanism
+ * [DIRAPI-107](https://issues.apache.org/jira/browse/DIRAPI-107) LdifReader missing attributes
+ * [DIRAPI-219](https://issues.apache.org/jira/browse/DIRAPI-219) DateUtils.toGeneralizedTime does not work with some Locales
+ * [DIRAPI-220](https://issues.apache.org/jira/browse/DIRAPI-220) The FilterEncoder.encodeFilterValue() does not accept escaped hex values like \2A
+ * [DIRAPI-223](https://issues.apache.org/jira/browse/DIRAPI-223) The SchemaObject extension key should be case-insensitive
+ * [DIRAPI-226](https://issues.apache.org/jira/browse/DIRAPI-226) Injecting non pure ASCII values into a HR attribute read from a LDIF does not work
+
+<b>Improvements :</b>
+
+ * [DIRAPI46](https://issues.apache.org/jira/browse/DIRAPI-46) Add a generic schema loader which looks for schema elements under the value of the 'subschemaSubentry' of the RootDSE
+ * [DIRAPI-225](https://issues.apache.org/jira/browse/DIRAPI-225) Add a LDIF anonymizer that takes a LDIF file and replace the value with random text
+
+
+<b>New features :</b>
+
+ * [DIRAPI-165](https://issues.apache.org/jira/browse/DIRAPI-165) Add a FilterBuillder
+ * [DIRAPI-224](https://issues.apache.org/jira/browse/DIRAPI-224) Add support for the VLV control
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M28 released <em>posted on January 15th, 2015</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M28 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This release fixes some critical issues in the LDAP Pool under heavy load, and improved a few other areas.
+
+
+<b>Bugs : </b>
+
+ * [DIRAPI-217](https://issues.apache.org/jira/browse/DIRAPI-217) Under heavy load, the Connection Pool will not provide valid connections
+ * [DIRAPI-174](https://issues.apache.org/jira/browse/DIRAPI-193) There is no future associated with operation message ID 333, perhaps the operation would have been completed
+ * [DIRAPI-184](https://issues.apache.org/jira/browse/DIRAPI-155) Chain ANTLR exceptions to ParserException
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M27 released <em>posted on December 29th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M27 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This release included a new Control : *proxied-authz* [RFC-4370](https://www.rfc-editor.org/rfc/rfc4370.txt), and a major cleanup of the OSGi Manifests.
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M26 released <em>posted on November 22th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M26 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+This release is a security fix release : SSLv3 has been disabled. Another bug has also been fixed in the POM files, for those using the API in an OSGi environment
+
+<b>Bugs : </b>
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M25 released <em>posted on November 11th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M25 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M25:
+
+<b>Bugs : </b>
+
+ * [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) Add Control support for RFC 2891 - LDAP Control Extension for Server Side Sorting of Search Results http://www.faqs.org/rfcs/rfc2891.html
+ * [DIRAPI-174](https://issues.apache.org/jira/browse/DIRAPI-174) LdifReader should provide errors wih line number
+ * [DIRAPI-184](https://issues.apache.org/jira/browse/DIRAPI-184) Supply one method in SearchCursor to judge it has element or not.
+ * [DIRAPI-201](https://issues.apache.org/jira/browse/DIRAPI-201) Inconsistent Import-Package in org.apache.directory.api ldap.model
+ * [DIRAPI-205](https://issues.apache.org/jira/browse/DIRAPI-205) AliasDerefMode can't work for API when alias entries can be search out and Server is Sun Directory Server
+ * [DIRAPI-206](https://issues.apache.org/jira/browse/DIRAPI-206) BindRequest logs exception on valid call to setter
+ * [DIRAPI-208](https://issues.apache.org/jira/browse/DIRAPI-208) The Connection Pool is a bit too aggressive when it comes to validate connections
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M24 released <em>posted on August 2th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M24 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M24:
+
+<b>Bugs : </b>
+
+ * [DIRAPI-197](https://issues.apache.org/jira/browse/DIRAPI-197) - When dumping a BindRequest, the password is exposed
+ * [DIRAPI-198](https://issues.apache.org/jira/browse/DIRAPI-198) - LdapConnectionTemplate closes connection after authentication rather than returning to the pool
+ * [DIRAPI-199](https://issues.apache.org/jira/browse/DIRAPI-199) - LdapConnectionPool.getUnboundConnection is an oxymoron
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M23 released <em>posted on July 4th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M23 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M23:
+
+<b>Bugs : </b>
+
+ * [DIRAPI-190](https://issues.apache.org/jira/browse/DIRAPI-190) - Search request time limit should override connection timeout
+ * [DIRAPI-192](https://issues.apache.org/jira/browse/DIRAPI-192) - Rdn.escapeValue() should not escape unicode characters
+
+<b>Improvements :</b>
+
+ * [DIRAPI-168](https://issues.apache.org/jira/browse/DIRAPI-168) - Create an LdapConnectionFactory that is not pooled to create LdapConnection objects for an LdapConnectionConfig
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+# News
+<h2 class="news">Apache Directory LDAP API 1.0.0-M22 released <em>posted on April 22th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M22 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M22:
+
+<b>Bugs : </b>
+
+ * [DIRAPI-156](https://issues.apache.org/jira/browse/DIRAPI-156) - LdapNetworkConnection.addSchema doesn't register attribute types
+ * [DIRAPI-186](https://issues.apache.org/jira/browse/DIRAPI-186) - Inconsistent code definition in ResultCodeEnum.
+ * [DIRAPI-188](https://issues.apache.org/jira/browse/DIRAPI-188) - Length encoding is not using the correct method in some of the codecs
+
+<b>Improvements :</b>
+
+ * [DIRAPI-181](https://issues.apache.org/jira/browse/DIRAPI-181) - Add the StartTLS extended operation
+ * [DIRAPI-187](https://issues.apache.org/jira/browse/DIRAPI-187) - Make the Entry class a fluent API
+
+<b>New Feature : </b>
+
+ * [DIRAPI-164](https://issues.apache.org/jira/browse/DIRAPI-164) - Add fluent entry builder to AddRequest
+ * [DIRAPI-183](https://issues.apache.org/jira/browse/DIRAPI-183) - Add support for the WhoAmI extended operation
+
+<b>Wish : </b>
+
+ * [DIRAPI-189](https://issues.apache.org/jira/browse/DIRAPI-189) - Support DirSync control
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M21 released <em>posted on March 13th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M21 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M21:
+
+<b>Bugs : </b>
+
+ * [DIRAPI-126](https://issues.apache.org/jira/browse/DIRAPI-126) - Timeout Exception on bind while pwdExpireWarning period
+ * [DIRAPI-128](https://issues.apache.org/jira/browse/DIRAPI-128) - FilterEncoder.format() should accept String varargs
+ * [DIRAPI-152](https://issues.apache.org/jira/browse/DIRAPI-152) - Attribute.toString() method appends newline
+ * [DIRAPI-157](https://issues.apache.org/jira/browse/DIRAPI-157) - Calling the add() method with a multi-value attribute and a null value throws an NPE
+ * [DIRAPI-160](https://issues.apache.org/jira/browse/DIRAPI-160) - DSML engine is not setting the 'requestID' value in BatchResponse when output stream instance is provided
+ * [DIRAPI-161](https://issues.apache.org/jira/browse/DIRAPI-161) - Timeout does not apply to connect method
+ * [DIRAPI-173](https://issues.apache.org/jira/browse/DIRAPI-173) - When using TLS and multiple binds, LdapNetworkConnection attempts to start TLS multiple times
+ * [DIRAPI-176](https://issues.apache.org/jira/browse/DIRAPI-176) - LDIFReader does not accept empty DN (rootDSE)
+
+
+<b>Improvements :</b>
+
+ * [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) - Add Control support for RFC 2891 - LDAP Control Extension for Server Side Sorting of Search Results http://www.faqs.org/rfcs/rfc2891.html
+ * [DIRAPI-153](https://issues.apache.org/jira/browse/DIRAPI-153) - Implement efficient reuse of schema loading
+ * [DIRAPI-159](https://issues.apache.org/jira/browse/DIRAPI-159) - Add a method to set a SchemaManager in LdapConnection
+ * [DIRAPI-169](https://issues.apache.org/jira/browse/DIRAPI-169) - Formalize the contract of PasswordPolicyResponse by stating that -1 is returned if no value is set.
+ * [DIRAPI-170](https://issues.apache.org/jira/browse/DIRAPI-170) - Allow StandaloneLdapApiServices to be configured without system properties
+ * [DIRAPI-175](https://issues.apache.org/jira/browse/DIRAPI-175) - LdifReader should handle empty
+
+<b>New Feature</b>
+
+ * [DIRAPI-143](https://issues.apache.org/jira/browse/DIRAPI-143) - Add Controls to support server-side sorting
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M20 released <em>posted on August 18th, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M20 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M20:
+
+<b>Bugs</b>
+
+ * [DIRAPI-14](https://issues.apache.org/jira/browse/DIRAPI-14) - We can't inject entries with attributes containing a null value
+ * [DIRAPI-98](https://issues.apache.org/jira/browse/DIRAPI-98) - Add generic support for Extended operations
+ * [DIRAPI-120](https://issues.apache.org/jira/browse/DIRAPI-120) - Deleted an attribute leads to an error
+ * [DIRAPI-148](https://issues.apache.org/jira/browse/DIRAPI-148) - We can't inject entries with attributes containing a null value
+ * [DIRAPI-151](https://issues.apache.org/jira/browse/DIRAPI-151) - Result codes from extended operations are lost
+
+
+<b>New Feature</b>
+
+ * [DIRAPI-129](https://issues.apache.org/jira/browse/DIRAPI-129) - Add support for PwdModify extended operation
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M19 released <em>posted on July 1st, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M19 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M19:
+
+ * [DIRAPI-148](https://issues.apache.org/jira/browse/DIRAPI-148) We can't inject entries with attributes containing a null value
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M18 released <em>posted on June 25th, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M18 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M18:
+
+ * [DIRAPI-112](https://issues.apache.org/jira/browse/DIRAPI-112) - Review Package Names
+ * [DIRAPI-130](https://issues.apache.org/jira/browse/DIRAPI-130) - The extended responses are not decoded into their respective type
+ * [DIRAPI-132](https://issues.apache.org/jira/browse/DIRAPI-132) - Add support for the StartTLS operation
+ * [DIRAPI-133](https://issues.apache.org/jira/browse/DIRAPI-133) - Correlate an extendedResponse with its associated request, when we don't have a responseName
+ * [DIRAPI-139](https://issues.apache.org/jira/browse/DIRAPI-139) - o.a.d.api.ldap.codec.api.LdapEncoder should log encoded PDU via DEBUG
+ * [DIRAPI-140](https://issues.apache.org/jira/browse/DIRAPI-140) - Test ClientSearchRequestTest.testSubDn() fails
+ * [DIRAPI-147](https://issues.apache.org/jira/browse/DIRAPI-147) - LdifEntry equals method does not compare entry attributes when changetype is None
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M17 released <em>posted on May 2nd, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M17 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M17:
+
+ * [DIRAPI-135](https://issues.apache.org/jira/browse/DIRAPI-135) - The connectiosn may be invalid when we get it from the pool
+ * [DIRAPI-103](https://issues.apache.org/jira/browse/DIRAPI-103) - the PLAIN SASL BindRequest is not supported
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M16 released <em>posted on March 3rd, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M16 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M16:
+
+* [DIRAPI-119](https://issues.apache.org/jira/browse/DIRAPI-119) - Some NPE when sending some request with lacking data
+
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M15 released <em>posted on January 29th, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M15 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M15:
+
+* [DIRAPI-112](https://issues.apache.org/jira/browse/DIRAPI-112) - Review Package Names
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M14 released <em>posted on January 7th, 2013</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M15 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M14:
+
+* [DIRAPI-89](https://issues.apache.org/jira/browse/DIRAPI-89) - EntryCursorImpl loops forever in next() when using AD Server with referrals
+* [DIRAPI-92](https://issues.apache.org/jira/browse/DIRAPI-92) - LdapConnectionPool should extend GenericObjectPool<LdapConnection>
+* [DIRAPI-94](https://issues.apache.org/jira/browse/DIRAPI-94) - Random failure of ClientAbandonRequestTest
+
+**WARNING:** An important **package renaming** took place in this milestone. The previously named "**_org.apache.directory.shared_**" package has been renamed "**_org.apache.directory.api_**". If you were using the Apache Directory LDAP API before, please **make sure to update your own code** to match this important change.
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
+
+
+<h2 class="news">Apache Directory LDAP API 1.0.0-M13 released <em>posted on October 12th, 2012</em></h2>
+
+The Apache Directory Team is proud to announce the availability of version 1.0.0-M13 of the Apache Directory LDAP API.
+
+The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).
+
+This is a schema aware API, with some convenient ways to access a LDAP server. This API is not only targeting the Apache Directory Server, but should work pristine with any LDAP server.
+
+It's also an extensible API : new Controls, schema elements and network layer could be added or used in the near future. It's also OSGi capable.
+
+Here are the release note for Apache Directory LDAP API 1.0.0-M13:
+
+* [DIRAPI-87](https://issues.apache.org/jira/browse/DIRAPI-87) - The search() method does not return the same result if it's done with a SearchRequest or with parameters
+* [DIRAPI-88](https://issues.apache.org/jira/browse/DIRAPI-88) - RDN parsing fails with values containing a # character followed by other characters
+* [DIRAPI-135](https://issues.apache.org/jira/browse/DIRAPI-135) - LdapNetworkConnection should be thread-safe
+* [DIRAPI-136](https://issues.apache.org/jira/browse/DIRAPI-136) - NPE in AntlrSubtreeSpecificationParser when initialized with an empty schema manager
+* [DIRAPI-137](https://issues.apache.org/jira/browse/DIRAPI-137) - Logically incorrect filter construction while parsing DSML search request
+* [DIRAPI-138](https://issues.apache.org/jira/browse/DIRAPI-138) - Cannot transform SearchRequestDsml object to DSML format
+
+Feel free to experiment, we highly appreciate your feedback !
+
+Downloads are available [here](downloads-1.html) and the User's Guide is [there](user-guide.html)
diff --git a/source/api/user-guide.md b/source/api/user-guide.md
new file mode 100644
index 0000000..39f864c
--- /dev/null
+++ b/source/api/user-guide.md
@@ -0,0 +1,136 @@
+---
+title: Users Guide
+---
+
+# Users guide
+
+<DIV class="note" markdown="1">
+<strong>Work in progress</strong>
+Pages with a (e) at the end of the title are empty pages.
+Pages with a (...) at the end of the title are not yet completed.
+Other pages are finished (but may be reviewed).
+</DIV>
+
+This document is about the LDAP API, developed at the Apache Software Foundation. It's a replacement for outdated Java/LDAP libraries like ([jLdap](http://www.openldap.org/jldap/), [Mozilla LDAP SDK](http://www.mozilla.org/directory/) and [JNDI](http://www.oracle.com/technetwork/java/jndi/index.html)).
+
+## About this guide
+
+Getting started. Learn how to use the LDAP API, connect to various LDAP servers, manipulate the data within a directory.
+
+### Audience
+
+This guide is for anyone wanting to learn how to use the LDAP API. If you plan to use the API, maybe even for your first LDAP experience, you'll find information here to help. Right now we've got pretty good coverage of the basic tasks. Later, we'll add more advanced use cases so keep checking back. To learn about advanced options (and many other things) go to the [Advanced User's Guide].
+
+### Feedback welcome!
+
+We are interested in improving the content of this guide. Feel free to provide feedback:
+!email.png! [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
+
+### Table of contents
+
+* [1 - Introduction](user-guide/1-introduction.html)
+ * [1.1 - Java and LDAP](user-guide/1.1-java-and-ldap.html)
+ * [1.2 - LDAP in a few words](user-guide/1.2-ldap-in-a-few-words.html)
+ * [1.3 - The Apache LDAP API rationale](user-guide/1.3-apache-ldap-api-rational.html)
+ * [1.4 - Preparation to code](user-guide/1.4-preparation-to-code.html)
+* [2 - Basic LDAP API usage (...)](user-guide/2-basic-ldap-api-usage.html)
+ * [2.1 - Connection and disconnection](user-guide/2.1-connection-disconnection.html)
+ * [2.2 - Binding and unbinding](user-guide/2.2-binding-unbinding.html)
+ * [2.3 - Searching (...)](user-guide/2.3-searching.html)
+ * [2.4 - Adding entries](user-guide/2.4-adding.html)
+ * [2.5 - Deleting entries](user-guide/2.5-deleting.html)
+ * [2.6 - Modifying entries](user-guide/2.6-modifying.html)
+ * [2.7 - Moving an renaming entries (e)](user-guide/2.7-moving-renaming.html)
+ * [2.8 - Comparing entries (e)](user-guide/2.8-comparing.html)
+ * [2.9 - Exception management (...)](user-guide/2.9-exception-management.html)
+ * [2.10 - The LdapConnectionTemplate](user-guide/2.10-ldap-connection-template.html)
+ * [2.11 - The FilterBuilder](user-guide/2.11-filter-builder.html)
+* [3 - Advanced LDAP API usage (...)](user-guide/3-advanced-ldap-api-usage.html)
+ * [3.1 - Controls](user-guide/3.1-controls.html)
+ * [3.2 - Extended operations (e)](user-guide/3.2-extended-operations.html)
+ * [3.3 - Referrals (e)](user-guide/3.3-referrals.html)
+ * [3.4 - Aliases (e)](user-guide/3.4-aliases.html)
+ * [3.5 - LDIF, DSML (...)](user-guide/3.5-ldif-dsml.html)
+ * [3.6 - Abandonning an operation (e)](user-guide/3.6-abandonning.html)
+ * [3.7 - Server informations (e)](user-guide/3.7-server-informations.html)
+* [4 - SchemaManagement (...)](user-guide/4-schema-management.html)
+ * [4.1 - Schema](user-guide/4.1-schema.html)
+ * [4.2 - SchemaManager](user-guide/4.2-schema-manager.html)
+ * [4.2.1 - SchemaObjects](user-guide/4.2.1-schema-objects.html)
+ * [4.2.1.1 - AttributeTypes](user-guide/4.2.1.1-attribute-types.html)
+ * [4.2.1.2 - ObjectClasses](user-guide/4.2.1.2-object-classes.html)
+ * [4.2.1.3 - Syntaxes](user-guide/4.2.1.3-syntaxes.html)
+ * [4.2.1.4 - MatchingRules](user-guide/4.2.1.4-matching-rules.html)
+ * [4.2.1.5 - DITContentRules](user-guide/4.2.1.5-dit-content-rules.html)
+ * [4.2.1.6 - DITStructureRules](user-guide/4.2.1.6-dit-structure-rules.html)
+ * [4.2.1.7 - MatchingRuleUses](user-guide/4.2.1.7-matching-rule-uses.html)
+ * [4.2.1.8 - NameForms](user-guide/4.2.1.8-name-forms.html)
+ * [4.2.1.9 - ApacheDS Schema Elements](user-guide/4.2.1.9-apacheds-schema-elements.html)
+ * [4.2.2 - Registries](user-guide/4.2.2-registries.html)
+ * [4.2.3 - SchemaLoader](user-guide/4.2.3-schema-loader.html)
+* [5 - LDAP security (e)](user-guide/5-ldap-security.html)
+ * [5.1 - LDAPS](user-guide/5.1-ldaps.html)
+ * [5.2 - StartTLS (e)](user-guide/5.2-start-tls.html)
+ * [5.3 - SASL Bind](user-guide/5.3-sasl-bind.html)
+ * [5.4 - Password handling](user-guide/5.4-password-handling.html)
+ * [5.5 - Certificates](user-guide/5.5-certificates.html)
+ * [5.6 - ACI and ACLs (e)](user-guide/5.6-aci-and-acls.html)
+* [6 - LDAP data structures (...)](user-guide/6-ldap-data-structures.html)
+ * [6.1 - AdministrativePoint (e)](user-guide/6.1-administrative-point.html)
+ * [6.2 - AdministrativeRole (e)](user-guide/6.2-administrative-role.html)
+ * [6.3 - Attribute](user-guide/6.3-attribute.html)
+ * [6.4 - AttributeType (...)](user-guide/6.4-attribute-type.html)
+ * [6.5 - Ava](user-guide/6.5-ava.html)
+ * [6.6 - Csn](user-guide/6.6-csn.html)
+ * [6.7 - Control (...)](user-guide/6.7-control.html)
+ * [6.8 - Cursor (e)](user-guide/6.8-cursor.html)
+ * [6.9 - Dn](user-guide/6.9-dn.html)
+ * [6.10 - DITContentRule (e)](user-guide/6.10-dit-content-rule.html)
+ * [6.11 - DITStructureRule (e)](user-guide/6.11-dit-structure-rule.html)
+ * [6.12 - Entry](user-guide/6.12-entry.html)
+ * [6.13 - ExprNode](user-guide/6.13-expr-node.html)
+ * [6.14 - LdapComparator (e)](user-guide/6.14-ldap-comparator.html)
+ * [6.15 - LdapResult](user-guide/6.15-ldap-result.html)
+ * [6.16 - LdapSyntax (e)](user-guide/6.16-ldap-syntax.html)
+ * [6.17 - LdapUrl (...)](user-guide/6.17-ldap-url.html)
+ * [6.18 - LdifControl (e)](user-guide/6.18-ldif-control.html)
+ * [6.19 - LdifEntry](user-guide/6.19-ldif-entry.html)
+ * [6.20 - MatchingRule (e)](user-guide/6.20-matching-rule.html)
+ * [6.21 - MatchingRuleUse (e)](user-guide/6.21-matching-rule-use.html)
+ * [6.22 - Message (...)](user-guide/6.22-message.html)
+ * [6.23 - Modification](user-guide/6.23-modification.html)
+ * [6.24 - NameForm (e)](user-guide/6.24-name-form.html)
+ * [6.25 - Normalizer (e)](user-guide/6.25-normalizer.html)
+ * [6.26 - ObjectClass (e)](user-guide/6.26-object-class.html)
+ * [6.27 - Oid](user-guide/6.27-oid.html)
+ * [6.28 - Rdn](user-guide/6.28-rdn.html)
+ * [6.29 - Referral (e)](user-guide/6.29-referral.html)
+ * [6.30 - Refinment (e)](user-guide/6.30-refinment.html)
+ * [6.31 - SchemaManager (e)](user-guide/6.31-schema-manager.html)
+ * [6.32 - Subentry (e)](user-guide/6.32-subentry.html)
+ * [6.33 - SubtreeSpecification (e)](user-guide/6.33-subtree-specification.html)
+ * [6.34 - SyntaxChecker (e)](user-guide/6.34-syntax-checker.html)
+ * [6.35 - Value](user-guide/6.35-value.html)
+* [7 - Requests and Responses (...)](user-guide/7-requests-responses.html)
+ * [7.1 - AbandonRequest](user-guide/7.1-abandon-request.html)
+ * [7.2 - AddRequest](user-guide/7.2-add-request.html)
+ * [7.3 - AddResponse](user-guide/7.3-add-response.html)
+ * [7.4 - BindRequest](user-guide/7.4-bind-request.html)
+ * [7.5 - BindResponse](user-guide/7.5-bind-response.html)
+ * [7.6 - CompareRequest](user-guide/7.6-compare-request.html)
+ * [7.7 - CompareResponse](user-guide/7.7-compare-response.html)
+ * [7.8 - DelRequest](user-guide/7.8-del-request.html)
+ * [7.9 - DelResponse](user-guide/7.9-del-response.html)
+ * [7.10 - ExtendedRequest](user-guide/7.10-extended-request.html)
+ * [7.11 - ExtendedResponse](user-guide/7.11-extended-response.html)
+ * [7.12 - IntermediateResponse](user-guide/7.12-intermediate-response.html)
+ * [7.13 - ModDnRequest](user-guide/7.13-mod-dn-request.html)
+ * [7.14 - ModDnResponse](user-guide/7.14-mod-dn-response.html)
+ * [7.15 - ModifyRequest](user-guide/7.15-modify-request.html)
+ * [7.16 - ModifyResponse](user-guide/7.16-modify-response.html)
+ * [7.17 - SearchRequest](user-guide/7.17-search-request.html)
+ * [7.18 - SearchResultDone](user-guide/7.18-search-result-done.html)
+ * [7.19 - SearchResultEntry](user-guide/7.19-search-result-entry.html)
+ * [7.20 - SearchResultReference](user-guide/7.20-search-result-reference.html)
+ * [7.21 - UnbindRequest](user-guide/7.21-unbind-request.html)
+* [8 - LDAP related RFCs](user-guide/8-ldap-rfcs.html)
diff --git a/source/api/user-guide/1-introduction.md b/source/api/user-guide/1-introduction.md
new file mode 100644
index 0000000..d974f02
--- /dev/null
+++ b/source/api/user-guide/1-introduction.md
@@ -0,0 +1,21 @@
+---
+title: 1 - Introduction
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 2-basic-ldap-api-usage.html
+navNextText: 2 - Basic LDAP API Usage
+---
+
+# 1 - Introduction
+
+This User Guide teaches developers how to use the Apache LDAP API. Throughout these documents, we have interspersed descriptions of features with snippets of code. These code samples are used by our integration tests as well.
+
+Hopefully there's enough here to get you started -- quickly. If you feel like improving this document or have questions / suggestions, please post to the Apache Directory LDAP API mailing list. All code and doc contributions are welcomed!
+
+## Contents
+
+* [1.1 - Java and LDAP](1.1-java-and-ldap.html)
+* [1.2 - LDAP in a few words](1.2-ldap-in-a-few-words.html)
+* [1.3 - The Apache LDAP API rationale](1.3-apache-ldap-api-rational.html)
+* [1.4 - Preparation to code](1.4-preparation-to-code.html)
+
diff --git a/source/api/user-guide/1.1-java-and-ldap.md b/source/api/user-guide/1.1-java-and-ldap.md
new file mode 100644
index 0000000..6d097ea
--- /dev/null
+++ b/source/api/user-guide/1.1-java-and-ldap.md
@@ -0,0 +1,32 @@
+---
+title: 1.1 - Java and LDAP
+navPrev: 1-introduction.html
+navPrevText: 1 - Introduction
+navUp: 1-introduction.html
+navUpText: 1 - Introduction
+navNext: 1.2-ldap-in-a-few-words.html
+navNextText: 1.2 - LDAP in a few words
+---
+
+# 1.1 - Java and LDAP
+Most developers will at some point need to learn how to communicate with an **LDAP** server. It should be a very simple technology to use but isn't because many aspects are not well known.
+
+Java is one of the most commonly used languages in the enterprise. Some call it the new **Cobol**!
+
+These facts mean it's necessary to communicate over **LDAP** using **Java**. This is why a convenient **API** is necessary, so we created this **API** to fill the necessary gaps.
+
+There are alternatives, like **JNDI**. But the alternatives aren't effective helping users cope with **LDAP**'s inherent complexities. **JNDI**'s semantics are very different from what's required for proper **LDAP** usage. For example:
+
+* **Bind** : used in **LDAP** to authenticate a user but creates an entry in **JNDI**
+* **Unbind** : closes the **LDAP** session in **LDAP** but deletes an entry in **JNDI**
+* **Compare **: is mapped to a search in **JNDI** while its proper usage is to compare to determine if a targeted attribute value matches a particular value inside an **LDAP** entry.
+* Various properties have to be set in **JNDI** in order to connect or tweak the **Search** operation, which is not convenient
+* **Attributes** are case sensitive by default in **JNDI** and not schema aware which is not compliant with LDAP standard.
+* **Name** in **JNDI** can't do a valid comparison in **JNDI**
+* **NamingEnumeration** must be explcitly closed in **JNDI**, and don't close automatically upon disconnect, which causes resource leakage to occur.
+
+Some of these same problems exist for the other **LDAP API**s. Other alternatives are no longer supported and/or lack a permissive license.
+
+All in all, writing applications to perform basic **LDAP** operations in **Java** is a painful task for most developers.
+
+Our target is to provide a better **API**, one that leads to correct and efficient usage of **LDAP** operation.
diff --git a/source/api/user-guide/1.2-ldap-in-a-few-words.md b/source/api/user-guide/1.2-ldap-in-a-few-words.md
new file mode 100644
index 0000000..9786f64
--- /dev/null
+++ b/source/api/user-guide/1.2-ldap-in-a-few-words.md
@@ -0,0 +1,35 @@
+---
+title: 1.2 - LDAP in a few words
+navPrev: 1.1-java-and-ldap.html
+navPrevText: 1.1 - Java and LDAP
+navUp: 1-introduction.html
+navUpText: 1 - Introduction
+navNext: 1.3-apache-ldap-api-rational.html
+navNextText: 1.3 - The Apache LDAP API rationale
+---
+
+# 1.2 - LDAP in a few words
+
+**LDAP** is not a new technlology. It has been around since the 90's to mitigate complexities inherent in **X.500** usage. Its name refers to **L**ightweight **D**irectory **A**ccess **P**rotocol. Soon after the first standard was issued, the first full *LDAP* server was created and X.500 became obsolete.
+
+We'll use the term **LDAP** to represent the protocol and **LDAP server** to represent the server that implements it.
+
+## Features
+The **LDAP** protocol provides access to entries stored in a **LDAP Server's** database. It provides the mechanism for fast searching and retrieval of entries. Its data structures are hierarchical, and uses a schema to manage the definition of data formats allowed across those entries.
+
+An **LDAP** client must first connect to a server and disconnect when finished. Some operations may be performed on the data itself, e.g. searches, modifications and deletions, along with a few others.
+
+**LDAP** servers are extensible, but they all use a common protocol providing access to the data in a way that isn't tied to a particular vendor's implementation.
+
+## Characteristics
+**LDAP** servers are fast for retrievals, having been designed specifically for this purpose. But modifications can be costly. These characteristics must be understood when writing applications that use an **LDAP** server for data storage.
+
+Each entry is associated with a location within its corresponding **D**irectory **I**nformation **T**ree, and we use what is known as a **D**istinguished **N**ame (or **Dn**) to describe this address. The base entry is known as the suffix. The suffix along with all entries beneath it are collectively known as the **DIT**.
+
+## Programming
+
+**LDAP** is a part of the **IT** landscape and so it's necessary to learn how to deal with it. **LDAP** servers are used to manage authentications, authorizations, demographic information about users and more. It's very likely that you will have to write some code to access data with **LDAP** at some point, and existing **API**s aren't quite up to the task. This **LDAP API** has been designed to simplify usage and ensure proper interaction with the server.
+
+## Going further
+
+This was a short introduction, there's more literature about **LDAP** on the web : [Wikipedia](http://en.wikipedia.org/wiki/LDAP) provides a good starting point.
diff --git a/source/api/user-guide/1.3-apache-ldap-api-rational.md b/source/api/user-guide/1.3-apache-ldap-api-rational.md
new file mode 100644
index 0000000..8a0dce7
--- /dev/null
+++ b/source/api/user-guide/1.3-apache-ldap-api-rational.md
@@ -0,0 +1,44 @@
+---
+title: 1.3 - The Apache LDAP API rational
+navPrev: 1.2-ldap-in-a-few-words.html
+navPrevText: 1.2 - LDAP in a few words
+navUp: 1-introduction.html
+navUpText: 1 - Introduction
+navNext: 1.4-preparation-to-code.html
+navNextText: 1.4 - Preparation to code
+---
+
+# 1.3 - The Apache LDAP API rationale
+
+When contemplating the creation of a new Java API for **LDAP**, we needed to first consider whether it was really necessary, because there were already a number of libraries that did it. For example:
+
+* **JNDI** : the default **JDK** **API**
+* **Netscape** (a.k.a Mozilla) [LdapSdk](http://www-archive.mozilla.org/directory/javasdk.html)
+* **OpenLDAP** [JLdap](http://www.openldap.org/jldap/)
+
+So why is the development of our new *LDAP API* for Java NOT the **[NIH](http://en.wikipedia.org/wiki/Not_Invented_Here)** syndrome?
+
+There are a number of reasons for which we'll discuss throughout this chapter.
+
+## History
+The Apache Directory Server project was started using the **JNDI** library, but many of its **LDAP** structures had to be developed in-house because the **JNDI** library was ineffective for interacting with an **LDAP** server. It wasn't convenient for us to use JNDI which means it won't be for you either. Eventually, all of the necessary **LDAP** data structures (_Attribute_, _Entry_, _DN_, ...) were re-implemented by us.
+
+At some point we had to communicate with other **LDAP** servers without using the **JNDI** library, so we developed our own _LdapConnection_ class. This was the first step toward a full **Java API** specifically designed for LDAP usage on the Java platform.
+
+Strangely, after starting this effort (back in 2007), some people from **Sun** (Microsystems), who was working on the **OpenDS** project, contacted us to ask if we'd be interested in helping them create the next version of **JNDI**. ([Resurrecting The Java LDAP Centric API](https://blogs.oracle.com/treydrake/entry/resurrecting_the_java_ldap_centric)). Sadly this effort stalled, as the need for *JNDI2* was no longer a priority for **Sun**. Nevertheless we decided to continue our work but the the pace was slow.
+
+The work renewed after the **OpenDS** project team's presentation at **LdapCon** in 2009 ([Towards a common LDAP API for the Java Platform](http://www.symas.com/ldapcon2009/papers/poitou1.shtml)). The story repeated itself once again after **Oracle** bought **Sun** in 2010, and its project team disbanded.
+
+Despite these fits and starts, a consensus was reached about the need for a new LDAP **API** and what it should be capable of doing. We agreed on these key features for the new **LDAP API**:
+
+* A complete coverage of the **LDAP** protocol
+* A schema aware **API**
+* An easy to use **API**
+* An **API** taking advantage of the new **Java** construction (generics, ellipsis, NIO)
+
+## Result
+Our newly defined **API** fulfills all of these aspects.
+
+We needed to ensure our **LDAP API** was made available to the masses. Because the Apache Software Foundation values community over code, this code was the result of collaboration, and our users are a necessary part of this process. Every time a user finds and reports a bug we have the opportunity to provide a better version of this **API**.
+
+In the end, we're proud to deliver a powerful new Java LDAP API, that is available for everyone to use, including our sub-projects like Apache Directory Server, Apache Directory Studio and most recently -- Apache Fortress.
diff --git a/source/api/user-guide/1.4-preparation-to-code.md b/source/api/user-guide/1.4-preparation-to-code.md
new file mode 100644
index 0000000..1552f50
--- /dev/null
+++ b/source/api/user-guide/1.4-preparation-to-code.md
@@ -0,0 +1,27 @@
+---
+title: 1.4 - Preparation to code
+navPrev: 1.3-apache-ldap-api-rational.html
+navPrevText: 1.3 - The Apache LDAP API rational
+navUp: 1-introduction.html
+navUpText: 1 - Introduction
+navNext: 2-basic-ldap-api-usage.html
+navNextText: 2 - Basic LDAP API Usage
+---
+
+# 1.4 - Preparation to code
+
+The **Apache Directory LDAP API** requires **Java 7** or higher.
+
+Secondly, you must download the **[API 1.0](https://directory.apache.org/api/downloads-1.html)** or **[API 2.0](https://directory.apache.org/api/downloads-2.html)**. This package contains the **LDAP API** plus all of its dependent jars (like _commons-lang_, _slf4j_...).
+
+If you're using **Maven**, add the following dependency on _api-all.jar_ :
+
+ :::XML
+ <dependency>
+ <groupId>org.apache.directory.api</groupId>
+ <artifactId>api-all</artifactId>
+ <version>${ldap-api-version}</version>
+ </dependency>
+
+
+and all of its dependent jar files will be included automatically. That's it, now you should be ready to code!
diff --git a/source/api/user-guide/2-basic-ldap-api-usage.md b/source/api/user-guide/2-basic-ldap-api-usage.md
new file mode 100644
index 0000000..c0e89f3
--- /dev/null
+++ b/source/api/user-guide/2-basic-ldap-api-usage.md
@@ -0,0 +1,35 @@
+---
+title: 2 - Basic LDAP API usage
+navPrev: 1-introduction.html
+navPrevText: 1 - Introduction
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 3-advanced-ldap-api-usage.html
+navNextText: 3 - Advanced LDAP API Usage
+---
+
+# 2 - Basic LDAP API usage (...)
+
+We provide three different sets of methods to send requests to the **LDAP** server:
+
+* The first set is the simplest. Its methods don't return a response but may throw a LdapOperationException if the operation was not successful.
+* The second set is for advanced users. It works with dedicated Request and Response objects and allows fine-grained control at the LDAP protocol level.
+* The third set allows users to send asynchronous requests.
+
+The first set of methods covers all basic LDAP operations: Bind, Add, Delete, Modify, Move/Rename/MoveAndRename, Compare, and Unbind operations
+
+The second and third sets cover all basic LDAP operations, Extended operations, and LDAP Controls.
+
+## Contents
+
+* [2.1 - Connection and disconnection](2.1-connection-disconnection.html)
+* [2.2 - Binding and unbinding](2.2-binding-unbinding.html)
+* [2.3 - Searching (...)](2.3-searching.html)
+* [2.4 - Adding entries](2.4-adding.html)
+* [2.5 - Deleting entries](2.5-deleting.html)
+* [2.6 - Modifying entries](2.6-modifying.html)
+* [2.7 - Moving an renaming entries (e)](2.7-moving-renaming.html)
+* [2.8 - Comparing entries (e)](2.8-comparing.html)
+* [2.9 - Exception management (...)](2.9-exception-management.html)
+* [2.10 - The LdapConnectionTemplate](2.10-ldap-connection-template.html)
+* [2.11 - The FilterBuilder](2.11-filter-builder.html)
diff --git a/source/api/user-guide/2.1-connection-disconnection.md b/source/api/user-guide/2.1-connection-disconnection.md
new file mode 100644
index 0000000..08f2f2b
--- /dev/null
+++ b/source/api/user-guide/2.1-connection-disconnection.md
@@ -0,0 +1,105 @@
+---
+title: 2.1 - Connection and disconnection
+navPrev: 2-basic-ldap-api-usage.html
+navPrevText: 2 - Basic LDAP API usage
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.2-binding-unbinding.html
+navNextText: 2.2 - Binding and unbinding
+---
+
+# 2.1 - Connection and disconnection
+
+The **LDAP** is a protocol requires users to be connected, and likely identified (authenticated), before sending requests to the server. This connection can potentially be maintained forever. What makes the **LDAP** protocol different from, say, the **HTTP** protocol is that the connections are issued explicitly. Here we'll see how it's done.
+
+## Opening a connection
+
+We can open a secure or a standard connection.
+
+### Standard connection
+
+We can first establish a standard connection, where the data is sent and received in clear text (encoded in ASN.1 BER, but not encrypted). This example shows how it's done:
+
+ :::Java
+ LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
+
+Here we created an unsafe connection locally using the 389 port. Which is quite simple to do but not safe because data is not encrypted.
+
+### Secure connection
+
+Although the **LDAPS** (**LDAP** over **SSL**) is now considered as deprecated, many people still use it. The big advantage of not using **LDAPS** is that you don't need two different listening ports (one for **LDAP** -389- and another one for **LDAPS** -636- ).
+
+The only difference with the previous example is that we tell the connection to use **SSL**, by passing **_true_** as a third parameter (incidentally, passing **_false_** sets an unsafe connection).
+
+Here is an example
+
+ :::Java
+ LdapConnection connection = new LdapNetworkConnection( "localhost", 636, true );
+
+## Maintaining the connection opened
+
+We keep the connection open for a limited period of time, defaulting to 30 seconds. This might be not long enough, so one can change this delay by calling the _setTimeOut()_ method :
+
+ :::Java
+ LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
+ connection.setTimeOut( 0 );
+ ...
+ connection.close();
+
+>**Note:** Setting a value equal or below 0 will keep the connection open forever (assuming the connection is not explicitly closed by the client).
+
+## Closing the connection
+
+Once the connection is no longer needed (remember that holding a connection keeps the session open on the server and a socket is held open between the client and the server), then you must close it. This is done by calling the _close()_ method :
+
+ :::Java
+ LdapConnection connection = new LdapNetworkConnection( "localhost", 389 );
+ ...
+ connection.close();
+
+## Using a pool of connections
+
+Creating a connection is expensive. If that connection will be reused, or if your application needs multiple connections, you may want to consider using a _connection pool_.
+
+This process is slightly more complex given that there are many parameters that can be used to tune the pool. Here is an example:
+
+ :::Java
+ LdapConnectionConfig config = new LdapConnectionConfig();
+ config.setLdapHost( hostname );
+ config.setLdapPort( port );
+ config.setName( adminDn );
+ config.setCredentials( adminPassword );
+
+ DefaultLdapConnectionFactory factory = new DefaultLdapConnectionFactory( config );
+ factory.setTimeOut( connectionTimeout );
+
+ // optional, values below are defaults
+ GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
+ poolConfig.lifo = true;
+ poolConfig.maxActive = 8;
+ poolConfig.maxIdle = 8;
+ poolConfig.maxWait = -1L;
+ poolConfig.minEvictableIdleTimeMillis = 1000L * 60L * 30L;
+ poolConfig.minIdle = 0;
+ poolConfig.numTestsPerEvictionRun = 3;
+ poolConfig.softMinEvictableIdleTimeMillis = -1L;
+ poolConfig.testOnBorrow = false;
+ poolConfig.testOnReturn = false;
+ poolConfig.testWhileIdle = false;
+ poolConfig.timeBetweenEvictionRunsMillis = -1L;
+ poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_BLOCK;
+
+ LdapConnectionPool pool = new LdapConnectionPool(
+ new DefaultPoolableLdapConnectionFactory( factory ), poolConfig ) );
+
+This creates a pool of connections that are pre-authenticated. If you don't setName and setCredentials, then the pool will contain unauthenticated connections.
+
+The DefaultPoolableLdapConnectionFactory is sufficient for many cases. However some operations result in modifications to the connection itself. For example, when the pool is created, a bind operation will occur with the credentials supplied as part of the config. If you borrow a connection and perform a bind yourself, that would result in the connection being re-bound as a different user. The next time that connection gets borrowed, things are likely to break. If you perform any operation that results in a modification of the connection, you should instead use ValidatingPoolableLdapConnectionFactory:
+
+ :::Java
+ ...
+ LdapConnectionPool pool = new LdapConnectionPool(
+ new ValidatingPoolableLdapConnectionFactory( factory ), poolConfig ) );
+ ...
+
+A connection pool using this factory will unbind and rebind any connection that was modified while it was borrowed (_see the javadoc for more detail_). This will be slower due to the additional operations, but not significantly.
diff --git a/source/api/user-guide/2.10-ldap-connection-template.md b/source/api/user-guide/2.10-ldap-connection-template.md
new file mode 100644
index 0000000..32b0a22
--- /dev/null
+++ b/source/api/user-guide/2.10-ldap-connection-template.md
@@ -0,0 +1,255 @@
+---
+title: 2.10 - The LdapConnectionTemplate
+navPrev: 2.9-exception-management.html
+navPrevText: 2.9 - Exception management
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.11-filter-builder.html
+navNextText: 2.11 - The FilterBuilder
+---
+
+2.10 - Why use the LdapConnectionTemplate?
+==========================================
+
+The LdapConnectionTemplate provides simplified access to the API functions. It does so by
+
+* [Managing Connections](#managing-connections)
+* [Providing Factory Methods For Model Objects](#providing-factory-methods-for-model-objects)
+* [Providing CRUD Methods](#providing-crud-methods)
+* [Handling Search Result Iteration](#handling-search-result-iteration)
+* [Providing Simplified, Password Policy Aware, Authentication/Password Modification Methods](#providing-simplified-password-policy-aware-authenticationpassword-modification-methods)
+* [Other Useful Methods](#other-useful-methods)
+
+Conceptually it uses the Template Method design pattern to do all of the boiler plate work for you. It can give control back as needed for special cases.
+
+Managing Connections
+--------------------
+
+The connection template manages connections through a connection pool. The connection pool must be supplied to the constructor:
+
+ :::Java
+ LdapConnectionConfig config = new LdapConnectionConfig();
+ config.setLdapHost( hostname );
+ config.setLdapPort( port );
+ config.setName( adminDn );
+ config.setCredentials( adminPassword );
+
+ DefaultLdapConnectionFactory factory = new DefaultLdapConnectionFactory( config );
+ factory.setTimeOut( connectionTimeout );
+
+ // optional, values below are defaults
+ GenericObjectPool.Config poolConfig = new GenericObjectPool.Config();
+ poolConfig.lifo = true;
+ poolConfig.maxActive = 8;
+ poolConfig.maxIdle = 8;
+ poolConfig.maxWait = -1L;
+ poolConfig.minEvictableIdleTimeMillis = 1000L * 60L * 30L;
+ poolConfig.minIdle = 0;
+ poolConfig.numTestsPerEvictionRun = 3;
+ poolConfig.softMinEvictableIdleTimeMillis = -1L;
+ poolConfig.testOnBorrow = false;
+ poolConfig.testOnReturn = false;
+ poolConfig.testWhileIdle = false;
+ poolConfig.timeBetweenEvictionRunsMillis = -1L;
+ poolConfig.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_BLOCK;
+
+ // could use DefaultPoolableLdapConnectionFactory instead
+ // see javadoc for ValidatingPoolableLdapConnectionFactory
+ // for an explanation
+ LdapConnectionTemplate ldapConnectionTemplate =
+ new LdapConnectionTemplate( new LdapConnectionPool(
+ new ValidatingPoolableLdapConnectionFactory( factory ), poolConfig ) );
+
+This may look complicated, but most of the parameters are optional and it's an easy way for you to manage connections in a safe and efficient manner.
+
+Providing Factory Methods For Model Objects
+-------------------------------------------
+
+The connection template implements an interface called the ModelFactory. Any implementation of this factory can be injected into the template once it is constructed. By default, it uses ModelFactoryImpl which in turn constructs the standard Apache LDAP API model objects. This abstraction frees you from having to be concerned with implementation details while still giving you the power to override the default behavior as you see fit.
+
+ :::Java
+ ModelFactory modelFactory = new MyCustomModelFactory();
+ ldapConnectionTemplate.setModelFactory( modelFactory );
+
+Providing CRUD Methods
+----------------------
+
+The standard CRUD methods are provided (*though in this case Add, Lookup, Modify, Delete*) with a couple useful overloads. Add, Delete, and Modify all provide at least 2 approaches. The first is creating your own XxxRequest objects and supplying that to the method. These request objects can be created using the ModelFactory methods provided by LdapConnectionTemplate. The second, more elegant solution, is to use the DN and RequestBuilder approach. This approach will generate the request for you from the internal ModelFactory and provide it to a callback for you to fill in the details. This has the added benefit of translating any LdapException's that may occur (usually due to model implementation setter methods) to LdapRuntimeException, to remove the ***need*** for try/catch blocks. Now for some examples:
+
+Add provides the standard approaches of supplying your own AddRequest and using RequestBuilder, as well as a third shortcut approach where you supply all the attributes instead of a RequestBuilder:
+
+ :::Java
+ // using RequestBuilder
+ AddResponse response = ldapConnectionTemplate.add(
+ ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
+ new RequestBuilder<AddRequest>() {
+ @Override
+ public void buildRequest( AddRequest request ) throws LdapException {
+ request.getEntry()
+ .add( "objectClass", "top", "person", "organizationalPerson", "inetOrgPerson" )
+ .add( "cn", "Kermit The Frog" )
+ .add( "givenName", "Kermit" )
+ .add( "sn", "The Frog" )
+ .add( "mail", "kermitthefrog@muppets.org" )
+ .add( "uid", "kermitthefrog" );
+ }
+ } );
+
+ // using Attributes list
+ AddResponse response = ldapConnectionTemplate.add(
+ ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ),
+ ldapConnectionTemplate.newAttribute( "objectClass",
+ "top", "person", "organizationalPerson", "inetOrgPerson" ),
+ ldapConnectionTemplate.newAttribute( "cn", "Miss Piggy" ),
+ ldapConnectionTemplate.newAttribute( "givenName", "Miss" ),
+ ldapConnectionTemplate.newAttribute( "sn", "Piggy" ),
+ ldapConnectionTemplate.newAttribute( "mail", "misspiggy@muppets.org" ),
+ ldapConnectionTemplate.newAttribute( "uid", "misspiggy" ) );
+
+Modify simply supplies the 2 standard approaches:
+
+ :::Java
+ // using RequestBuilder
+ ModifyResponse response = ldapConnectionTemplate.modify(
+ ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ),
+ new RequestBuilder<ModifyRequest>() {
+ @Override
+ public void buildRequest( ModifyRequest request ) throws LdapException {
+ request.replace( "sn", "The Frog" )
+ .replace( "cn", "Miss The Frog" )
+ .replace( "mail", "missthefrog@muppets.org" );
+ }
+ } );
+
+Delete provides the 2 standard approaches plus an additional DN-only option as that is most likely enough:
+
+ :::Java
+ // using DN only
+ DeleteResponse response = ldapConnectionTemplate.delete(
+ ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ) );
+
+Lookup is a different story in that it is an accessor (instead of mutator) so its interface must provide a way of handling the expected response data. To that end, we supply an EntryMapper. EntryMapper defines how a returned ldap entry should be interpreted. This is typically used to construct a domain object:
+
+ :::Java
+ // using a previously defined EntryMapper
+ Muppet kermit = ldapConnectionTemplate.lookup(
+ ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
+ muppetEntryMapper );
+
+ // using an inline defined EntityMapper
+ String email = ldapConnectionTemplate.lookup(
+ ldapConnectionTemplate.newDn( "uid=kermitthefrog,ou=muppets,dc=muppets,dc=org" ),
+ new String[] { "mail" }, // attribute list
+ new EntryMapper<String>() {
+ @Override
+ public String map( Entry entry ) throws LdapException {
+ return entry.get( "mail" ).getString();
+ }
+ } );
+
+More information on EntryMapper can be found in the [Handling Search Result Iteration](#handling-search-result-iteration) section.
+
+
+Handling Search Result Iteration
+--------------------------------
+
+Searching usually contains a lot of boilerplate code for building requests and iterating through its responses. This template does the work for you. It iterates over the entire result set, feeds each entry through an EntryMapper, and assembles the results into a list tht is returned to the caller. All you have to do is provide the EntryMapper for mapping a single entry to a domain object. EntryMapper itself is a very simple interface with one method. As you saw before in the lookup documentation, they are typically defined as static members of your service classes:
+
+ :::Java
+ // typically mappers are reused, so define a static member
+ private static final EntryMapper<Muppet> muppetEntryMapper =
+ new EntryMapper<Muppet>() {
+ @Override
+ public Muppet map( Entry entry ) throws LdapException {
+ return new Muppet.Builder()
+ .setId( entry.getDn() )
+ .setFirstName( entry.get( "givenName" ).getString() )
+ .setLastName( entry.get( "sn" ).getString() )
+ .setEmailAddress( entry.get( "mail" ).getString() )
+ .build();
+ }
+ };
+
+And now your searches become much simpler:
+
+ :::Java
+ List<Muppet> allTheMuppets = ldapConnectionTemplate.search(
+ "ou=muppets,dc=muppets,dc=org",
+ "(objectClass=inetOrgPerson)",
+ SearchScope.ONELEVEL,
+ muppetEntryMapper );
+
+Now that is just plain ***SIMPLE***. The search method has many overloads to simplify usages for the most common LDAP operations. There is also a searchFirst method which provides all the same overloads and is designed to return the first matching result:
+
+ :::Java
+ Muppet kermit = ldapConnectionTemplate.searchFirst(
+ "ou=muppets,dc=muppets,dc=org",
+ "(mail=kermitthefrog@muppets.org)",
+ SearchScope.ONELEVEL,
+ muppetEntryMapper );
+
+It is also natural to pair the search function with the FilterBuilder:
+
+ :::Java
+ import static org.apache.directory.ldap.client.api.search.FilterBuilder.equal;
+ import static org.apache.directory.ldap.client.api.search.FilterBuilder.or;
+
+ ...
+
+ Muppet kermit = ldapConnectionTemplate.search(
+ "ou=muppets,dc=muppets,dc=org",
+ or(
+ equal( "mail", "kermitthefrog@muppets.org" ),
+ equal( "mail", "misspiggy@muppets.org" ) ),
+ SearchScope.ONELEVEL,
+ muppetEntryMapper );
+
+This has the added benefit of ensuring that your search filter has been property encoded per [RFC4515 section 3](https://tools.ietf.org/html/rfc4515.html#section-3). For more information, see [Filter Builder](/api/user-guide/2.11-filter-builder.html).
+
+
+Providing Simplified, Password Policy Aware, Authentication/Password Modification Methods
+-----------------------------------------------------------------------------------------
+
+One of the most common usages of LDAP is as an identity provider. As such, the most common operation is authentication, and password management. If your LDAP server supports the [password policy control](http://tools.ietf.org/html/draft-behera-ldap-password-policy-10) then the authenticate method is very handy:
+
+ :::Java
+ // throws PasswordException if authentication fails
+ PasswordWarning warning = ldapConnectionTemplate.authenticate(
+ ldapConnectionTemplate.newDn( "uid=" + uid + ", ou=people, dc=example, dc=com" ),
+ password );
+
+ // or if you authenticate using an attribute not in the dn
+ PasswordWarning warning = ldapConnectionTemplate.authenticate(
+ "ou=people,dc=example,dc=com",
+ "(mail=kermitthefrog@muppets.com)",
+ SearchScope.ONELEVEL,
+ "set4now".toCharArray() );
+
+In this case, if authentication failed, a PasswordException is thrown. If authentication was successful, any warnings will be returned in the PasswordWarning object, or null will be returned if there are no warnings.
+
+Modifying a password is simple as well:
+
+ :::Java
+ // using administrator account to modify a users password
+ ldapConnectionTemplate.modifyPassword( userDn, password );
+
+ // or user account modifying their own password
+ ldapConnectionTemplate.modifyPassword( userDn, oldPassword, newPassword );
+
+ // or if you want want more control
+ ldapConnectionTemplate.modifyPassword( userDn, oldPassword, newPassword, asAdmin );
+
+If you modify the password as an administrator, then the oldPassword is not required, and if your password policy is set to, the password reset flag will be set causing a PasswordWarning to be returned the next time authenticate was called for that user.
+
+
+Other Useful Methods
+--------------------
+
+The template provides a method that checks the response and throws an exception if the request was unsuccessful. It was designed to be chained:
+
+ :::Java
+ // using DN only
+ DeleteResponse response = ldapConnectionTemplate.responseOrException(
+ ldapConnectionTemplate.delete(
+ ldapConnectionTemplate.newDn( "uid=misspiggy,ou=muppets,dc=muppets,dc=org" ) ) );
+
diff --git a/source/api/user-guide/2.11-filter-builder.md b/source/api/user-guide/2.11-filter-builder.md
new file mode 100644
index 0000000..65b2381
--- /dev/null
+++ b/source/api/user-guide/2.11-filter-builder.md
@@ -0,0 +1,204 @@
+---
+title: 2.11 - The FilterBuilder
+navPrev: 2.10-ldap-connection-template.html
+navPrevText: 2.10 - The LdapConnectionTemplate
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 3-advanced-ldap-api-usage.html
+navNextText: 3 - Advanced LDAP API Usage
+---
+
+2.11 - The FilterBuilder(e)
+===========================
+
+This class is a builder for constructing well formed search filters according to [RFC 4515](https://tools.ietf.org/html/rfc4515.html). This builder is most convenient when using static imports. For example:
+
+ import static org.apache.directory.ldap.client.api.search.FilterBuilder.and;
+ import static org.apache.directory.ldap.client.api.search.FilterBuilder.equal;
+ import static org.apache.directory.ldap.client.api.search.FilterBuilder.or;
+
+ ...
+
+ String filter =
+ or(
+ and(
+ equal( "givenName", "kermit" ),
+ equal( "sn", "the frog" ) ),
+ and(
+ equal( "givenName", "miss" ),
+ equal( "sn", "piggy" ) ) )
+ .toString()
+
+
+## And filter
+
+
+Returns a new FilterBuilder that will combine all of the supplied filters with a **logical AND** (&). For example:
+
+ and( equal( "givenName", "kermit" ), equal( "sn", "the frog" ) ).toString()
+
+would result in the string: _(&(givenName=kermit)(sn=the frog))_
+
+Which would match all entries with a given name of kermit and a surname the frog.
+
+
+## Or filter
+
+Returns a new FilterBuilder that will combine all of the supplied filters with a **logical OR** (|). For example:
+
+ or( equal( "givenName", "kermit" ), equal( "givenName", "walter" ) ).toString()
+
+would result in the string: _(|(givenName=kermit)(givenName=walter))_
+
+Which would match any entry with the givenName of either kermit or walter.
+
+
+## Not filter
+
+Returns a new FilterBuilder for negating another filter (!). For example:
+
+ not( present( "givenName" ) ).toString();
+
+would result in the string: _(!(givenName=*))_
+
+
+## Present Filter
+
+Returns a new FilterBuilder for testing the presence of an attributes. For example:
+
+ present( "givenName" ).toString();
+
+would result in the string: _(givenName=*)_
+
+Which would match any entry that has a givenName attribute.
+
+
+## Equal Filter
+
+Returns a new FilterBuilder for testing equality of an attribute. For example:
+
+ equal( "cn", "Kermit The Frog" ).toString();
+
+would result in the string: _(cn=Kermit The Frog)_
+
+Which would match entries with the common name Kermit The Frog. Be careful when using the equal filter as it is an _EXACT MATCH_ filter. While it may seem natural to use \* as a wildcard, it will actually be escaped using this filter. If you meant to use a wildcard in your filter, you should use one of [startsWith](#startswith-filter), [endsWith](#endswith-filter), [contains](#contains-filter), or [substring](#substring-filter), .
+
+## Extensible Filter
+
+Returns a new FilterBuilder for testing equality using specified matching rules.
+For example:
+
+ extensible( "cn", "Kermit The Frog" ).toString();
+
+would result in the string: _(cn:=Kermit The Frog)_
+
+Which would match entries with the common name Kermit The Frog.
+
+ extensible( "cn", "Kermit The Frog" )
+ .useDnAttributes()
+ .toString();
+
+would result in the string: _(cn:dn:=Kermit The Frog)_
+
+Which would match entries with the common name Kermit The Frog even if the common name was only specified as part of the dn.
+
+ extensible( "cn", "Kermit The Frog" )
+ .setMatchingRule( "caseExactMatch" )
+ .toString();
+
+would result in the string: _(cn:caseExactMatch:=Kermit The Frog)_
+
+Which would match entries with the common name Kermit The Frog, using a case sensitive matcher.
+
+ extensible( "cn", "Kermit The Frog" )
+ .useDnAttributes()
+ .setMatchingRule( "caseExactMatch" )
+ .toString();
+
+would result in the string: _(cn:dn:caseExactMatch:=Kermit The Frog)_
+
+Which would match entries with the common name Kermit The Frog, using a case sensitive matcher even if the name was only specified as part of the dn.
+
+ extensible( "Kermit The Frog" )
+ .setMatchingRule( "1.2.3.4.5.6.7" )
+ .toString();
+
+would result in the string: _(:1.2.3.4.5.6.7:=Kermit The Frog)_
+
+Which would match entries with any attribute whose value is Kermit The Frog, using the _hypothetical_ matching rule indicated by the oid 1.2.3.4.5.6.7.
+
+## Less Or Equal Filter
+
+Returns a new FilterBuilder for testing lexicographical less than. For example:
+
+ lessThanOrEqual( "sn", "mzzzzzz" ).toString();
+
+would result in the string: _(sn<=mzzzzzz)_
+
+which would match results whose surname starts with the first half of the alphabet. Note, this is not perfect, but if you know anybody with a last name that starts with an _m_ followed by six _z's__...
+
+## Greater Or Equal Filter
+
+Returns a new FilterBuilder for testing lexicographical greater than. For example:
+
+ greaterThanOrEqual( "sn", "n" ).toString();
+
+would result in the string: _(sn>=n)_
+
+which would match results whose surname starts with the second half of the alphabet.
+
+## Approximate Filter
+
+Returns a new FilterBuilder for testing the approximate equality of an attribute. For example:
+
+ approximatelyEqual( "l", "san fransico" ).toString();
+
+would result in the string: _(l~=san fransico)_
+
+Which MIGHT match results whose locality is San Francisco. The matching rule used to apply this filter is dependent on the server implementation.
+
+## StartsWith Filter
+
+Returns a new FilterBuilder that constructs a SubString filter with an initial part, zero or more any parts, but no final part. For example:
+
+ startsWith( "sn", "Th", "Soft", "Foun" )).toString()
+
+would result in the string: _(sn=Th\*Soft\*Foun\*)_
+
+Which would match any entry with an sn starting with the string 'Th', followed by 'Soft', then 'Foun', like 'The Apache Software Foundation'.
+
+## EndsWith Filter
+
+Returns a new FilterBuilder that constructs a SubString filter with no initial part, zero or more any parts, and a final part. For instance:
+
+ endsWith( "sn", "Soft", "Foun", "ion" )).toString()
+
+would result in the string: _(sn=\*Soft\*Foun\*ion)_
+
+Which would match any entry with an sn containing the string 'Soft' followed by 'Foun' ending in 'ion', like 'The Apache Software Foundation'.
+
+## Contains Filter
+
+Returns a new FilterBuilder that constructs a SubString filter with no initial part, zero or more any parts, and no final part. For instance:
+
+ contains( "sn", "Soft", "Foun" )).toString()
+
+would result in the string: _(sn=\*Soft\*Foun\*)_
+
+Which would match any entry with an sn containing the string 'Soft' followed by 'Foun', like 'The Apache Software Foundation'.
+
+## Substring Filter
+
+Returns a new FilterBuilder that constructs a SubString filter with an initial part, zero or more any parts, and a final part. For instance:
+
+ substring( "sn", "The", "Soft", "Foun", "ion" )).toString()
+
+would result in the string: _(sn=The\*Soft\*Foun\*ion)_
+
+Which would match any entry with an sn starting with 'The', followed by 'Soft', then 'Foun', and ending with 'ion', like 'The Apache Software Foundation'.
+
+Note that if only two strings are supplied for parts, they will be the initial and the final:
+
+ substring( "sn", "The", "ion" )).toString()
+
+would result in the string: _(sn=The\*ion)_
diff --git a/source/api/user-guide/2.2-binding-unbinding.md b/source/api/user-guide/2.2-binding-unbinding.md
new file mode 100644
index 0000000..502ed02
--- /dev/null
+++ b/source/api/user-guide/2.2-binding-unbinding.md
@@ -0,0 +1,226 @@
+---
+title: 2.2 - Binding and unbinding
+navPrev: 2.1-connection-disconnection.html
+navPrevText: 2.1 - Connection and disconnection
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.3-searching.html
+navNextText: 2.3 Searching
+---
+
+# 2.2 - Binding and unbinding
+
+In **LDAP**, if one wants to access the data in the base, the common way to do it is to bind to the server. However, it's important to understand that binding is a different from connecting.
+
+Creating a connection to an **LDAP** server opens a socket between the client and the server. You must provide the address and the port in order to do this.
+
+The **bind** operation, on the other hand, creates a _Session_ which will hold user information for the duration of the session. This information is limited, but includes the user's credentials.
+
+But it's important to know that it's possible to bind anonymously, which doesn't require a user or password, and still be able to send requests to the server (although the server can forbid anonymous binds).
+
+Once the user has finished interacting with the server, they can unbind, destroying the session held on the server. This operation does not close the connection, because, again _bind != connection_!
+
+## Binding
+
+There are two possible types of binds in *LDAP*:
+
+* **Simple**
+* **SASL**
+
+The first one is based on a userid/password sent to the server, which verifies the credentials are valid. It's also possible to proceed with an anonymous bind explicitly.
+
+The second type is more complicated, and is used whenever authentication with a specific mechanism, like **DIGEST-MD5**, **Kerberos** or certificate based is required.
+
+### Simple Bind
+One can issue three kinds of simple binds:
+
+* _anonymous bind_
+* _name/password bind_
+* _unauthenticated authentication bind_
+
+The first one is the easiest, but depending on the server's configuration, will be accepted or rejected (not all servers allow anonymous binds)
+
+Most of the time, the _bind_ operation will not return anything. You either get bound, or will receive an _LdapException_ if an error occurs.
+
+Issuing an anonymous bind is simple, you neither provide a user nor a password:
+
+ :::Java
+ @Test
+ public void testAnonymousBindRequest() throws Exception
+ {
+ connection.bind();
+ }
+
+Issuing a user/password bind is slightly more complex, because those credentials must be included:
+
+ :::Java
+ @Test
+ public void testSimpleBindRequest() throws Exception
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+ }
+
+>**Note** It's important to note that the user's name is a *[Dn](6.9-dn.html)*, not a simple name like 'John Doe"
+
+Last, not least, there is a quite unknown feature in **LDAP** bind that allows you to issue a Bind request without providing a password. It's equivalent to an anonymous bind, except that the server can log the user's name, thus being able to trace what the user does. Servers might forbid such bind, and this will be the case if the server disallow anonymous binds.
+
+Note that this kind of bind will be supported only if the server allows anonymous binds. It's not supported by *ApacheDS*.
+
+ :::Java
+ @Test
+ public void testSimpleBindRequest() throws Exception
+ {
+
+ connection.bind( "uid=admin,ou=system" );
+ }
+
+### SASL Binding
+
+There are various **SASL** mechanisms that can be used to bind to a **LDAP** server. The **Apache LDAP API** support the following 5 mechanisms:
+
+#### PLAIN
+
+To be completed...
+
+#### CRAM-MD5
+
+To be completed...
+
+#### DIGEST-MD5
+
+To be completed...
+
+#### EXTERNAL
+
+To be completed...
+
+#### GSSAPI
+
+First, non-trivial **Kerberos** authentication requires configuration. Creating a **Kerberos** configuration is not well documented elsewhere, so we include here sample code. One approach is to create a **JAAS** configuration file. Here’s what such a file might contain:
+
+
+ myapp {
+ com.sun.security.auth.module.Krb5LoginModule required debug=true useKeyTab=true principal="host/ilab2.myorg.org@MYORG.ORG" refreshKrb5Config=true keyTab="/etc/krb5.keytab";
+ };
+
+See online documentation for _Krb5LoginModule_ for possible options. This example uses the host’s principal, stored in _/etc/krb5.keytab_. What goes after **@** is the **Kerberos** domain name.
+
+Note that if you specify a credential cache, the cache must be in a file. Many operating systems now put the user’s credentials in **KEYRING** or **KCM**. That worn’t work with Java.
+
+_“myapp”_ is the name supplied as the login context name. See the code below.
+
+When you run the program, you must tell java where the configuration file is. e.g. _“java -Djava.security.auth.login.config=jaas.config”_.
+
+Here is code to connect to ldap with this configuration. We assume that _ldapNetworkConnection_ has already been opened using connect.
+
+ :::Java
+ saslGssApiRequest = new SaslGssApiRequest();
+ saslGssApiRequest.setLoginModuleConfiguration(Configuration.getConfiguration());
+ saslGssApiRequest.setLoginContextName( "myapp");
+ saslGssApiRequest.setMutualAuthentication( true );
+
+ try {
+ BindResponse br = ldapNetworkConnection.bind( saslGssApiRequest );
+ ldapNetworkConnection.startTls();
+ } catch ( LdapException e ) {
+ e.printStackTrace();
+ }
+
+At this point you can do operations such as search. Note that the argument to _setLoginContextName_ must match the name in the configuration file. This sample uses mutual authentication. It is possible that some **LDAP** servers might not support that. If so you can set it to false. You may not need _startTls_ if the connection is already secure.
+
+Sometimes it is more convenient to supply the configuration information programmatically. Here is an example that sets the same options as the config file
+
+ :::Java
+ class KerberosConfiguration extends Configuration {
+
+ @Override
+ public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
+ Map<String, String> options = new HashMap<String, String>();
+ options.put("useKeyTab", "true");
+ try {
+ options.put("principal", "host/" + InetAddress.getLocalHost().getCanonicalHostName() + “@MYORG.ORG”);
+ } catch (Exception e){
+ System.out.println("Can't find our hostname " + e);
+ }
+ options.put("refreshKrb5Config", "true");
+ options.put("keyTab", "/etc/krb5.keytab");
+ options.put("debug", "true");
+
+ return new AppConfigurationEntry[]{
+ new AppConfigurationEntry("com.sun.security.auth.module.Krb5LoginModule",
+ AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
+ options),};
+ }
+ }
+
+Here is how it is used:
+
+ :::Java
+ saslGssApiRequest = new SaslGssApiRequest();
+ saslGssApiRequest.setLoginModuleConfiguration(new KerberosConfiguration());
+ saslGssApiRequest.setMutualAuthentication( true );
+
+ try {
+ BindResponse br = ldapNetworkConnection.bind( saslGssApiRequest );
+ ldapNetworkConnection.startTls();
+ } catch ( LdapException e ) {
+ e.printStackTrace();
+ }
+
+Note that it is not necessary to set the login context name, since it is only needed to process the configuration file.’
+
+Warnings:
+
+* **Apache Kerby** does not implement the option to prompt the user for a password, nor does it permit a password to be passed to **GSSAPI**. Thus authentication is limited to key tables and credential caches.
+
+* The ** Apache Kerby** code sets two system properties. In the default case, it clears **KRB5_CONF** and sets _javax.security.auth.useSubjectCredsOnly_ to true. If other code in your application uses **Kerberos**, be aware that there could be conflicts. Be particularly concerned about multi-threaded code that uses different values. Note that in Kirby you can explicitly set **KRB5_CONF**, with _setKrb5ConfFilePath_, or cause Kirby to set it with setRealmName, setKdcHost, and setKdcPort. If you use different settings for these options in different threads, there is a potential thread-safety issue.
+
+* The Java implementation of **Kerberos** has the ability to read standard **Kerberos** credential cache files, e.g. _/tmp/krb5cc_%{uid}_. However it can’t read credentials from **KEYRING** or **KCM**. If your code asks for authentication to come from an existing credential cache, make sure that it is in a file. If you write an application that expects to use existing credentials for logged in users, without prompting for a password, you may need to set _default_ccache_name_ in _/etc/krb5.conf_ to a file, e.g.
+ _default_ccache_name = /tmp/krb5cc_%{uid}_
+This is not an issue if your authentication comes from key tables or prompts the user.
+
+* The encryption types supported depends upon the Java version. E,g. _aes128-cts-hmac-sha256-128_ and _aes256-cts-hmac-sha384-192_ are supported only as of Java 11.
+
+
+## Rebinding
+
+It's possible to issue a **Bind** on an already bound connection and the existing LDAP session will be terminated, and replaced by a new LDAP session. In any case, the connection is not dropped when doing so. Note that if the connection was encrypted, it remains encrypted.
+
+ :::Java
+ @Test
+ public void testRebind() throws Exception
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ // Now, rebind
+ connection.bind( "cn=john doe,dc=example,dc=com", "secret" );
+
+ assertTrue( connection.isConnected() );
+ assertTrue( connection.isAuthenticated() );
+ }
+
+If you issue a _bind_ on the same connection with some different credentials, then the existing session will be terminated on the server, and a new one will be created. All the pending requests for the initial session will be lost.
+
+## Unbinding
+
+This is a trivial operation : you just send an **UnbindRequest** to the server, which will invalidate your session.
+
+It's important to know that when you issue an **Unbind**, the connection is dropped. It's done like this:
+
+ :::Java
+ @Test
+ public void testUnbind() throws Exception
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ // Now, unbind
+ connection.unBind();
+ assertFalse( connection.isConnected() );
+ assertFalse( connection.isAuthenticated() );
+
+ // And Bind again.
+ connection.bind( "uid=admin,ou=system", "secret" );
+ }
+
+Last, but not least, if you close the connection, the session also terminates.
+
diff --git a/source/api/user-guide/2.3-searching.md b/source/api/user-guide/2.3-searching.md
new file mode 100644
index 0000000..b6d69cc
--- /dev/null
+++ b/source/api/user-guide/2.3-searching.md
@@ -0,0 +1,156 @@
+---
+title: 2.3 - Searching
+navPrev: 2.2-binding-unbinding.html
+navPrevText: 2.2 - Binding and unbinding
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.4-adding.html
+navNextText: 2.4 - Adding entries
+---
+
+# 2.3 - Searching (...)
+
+Searching is the most important operation in **LDAP**. It has to be fast, very fast. On the other hand, as the server does the processing while looking for entries, the client must provide information to get accurate results.
+
+The idea is to define a search **API** which is easy to use in the simplest cases, but provides all the capability to send complex search requests.
+
+## Simple search
+
+Let's first look at a simple search. To process a search we need a starting point in the tree, a filter, and a scope. Here's an example:
+
+ :::java
+ @Test
+ public void testSearch() throws Exception
+ {
+ EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL );
+
+ for ( Entry entry : cursor )
+ {
+ assertNotNull( entry );
+ System.out.println( entry );
+ }
+
+ cursor.close();
+ }
+
+
+In this example, the _connection_ has been previously created. We search for all entries starting at *ou=system* along with its children, which have an _ObjectClass_ attribute (all the entries have such an attribute, so we should get back all the entries). The scope (_ONELEVEL_) searches one level under the starting base.
+
+A cursor of entries is returned, which can be iterated over. Every call to the _getEntry()_ method returns the next entry in the LDAP result set.
+
+That's pretty much it!
+
+But this is not really enough, there are many possible options.
+
+>**Note** Don't forget to close the cursor, otherwise the associated data remains in memory forever (causing a memory leak)! Best practice is to use try-with-resources statement.
+
+### Searching using a DN
+
+In the previous sample, we used a String to define the starting point of the search. Sometimes it's convenient to start a search with a DN (i.e. because you got the DN from another operation). In this case, no need to transform the DN into a String before doing your search, simply use the DN!
+
+ :::java
+ @Test
+ public void testSearchWithDn() throws Exception
+ {
+ Dn systemDn = new Dn( "ou=system" );
+
+ EntryCursor cursor = connection.search( systemDn, "(objectclass=*)", SearchScope.ONELEVEL );
+
+ for ( Entry entry : cursor )
+ {
+ assertNotNull( entry );
+ System.out.println( entry );
+ }
+
+ cursor.close();
+ }
+
+This is it!
+
+### Scope
+
+There are three different different scopes you can use to search for data:
+
+* SearchScope.OBJECT : return the entry for a given DN, if it exists. Note that you could use `LdapConnection.lookup` if the filter is irrelevent.
+* SearchScope.ONELEVEL : return all elements below the current DN, but not the element associated with the DN.
+* SearchScope.SUBLEVEL : return all the elements starting from the given DN, including the element associated with the DN, whatever the depth of the tree.
+
+### Filter
+
+The filter is used to define the elements that are targeted. There are various possibilities to construct a filter, using one or more connectors, and one or more expression nodes.
+
+Connectors use a prefix notation, followed by as many expression nodes as necessary, like in (& (node1) (node2) ... (nodeN))
+
+Expression nodes are always contained within parenthesis, with a left part - the attributeType, and a right part - the value -.
+
+Here is the list of possible connectors:
+
+* & : n-ary AND connector, all the nodes must evaluate to TRUE
+* | : n-ary OR connector, at least one of the node must evaluate to true
+* ! : 1-ary NOT connector, the node must evaluate to false
+
+And here is the list of possible expression nodes, assuming that an expression node:
+
+* `=` Equality expression node : the selected entry matches the right part
+* `=*` Presence expression node : the entry has the Attribute on the left side
+* `>=` Superior expression node : the entry should be superior to the right part
+* `<=` Inferior expression node : the entry should be superior to the right part
+* `=[start][*][middle][*][final]` Substring expression node : the entry should match a substring
+
+>**Note:** As of Apache DS 2.0, we don't support approx matches nor extensible matches.
+
+## More complex searches
+
+Sometimes, you want to have more control over the search operation, either with the parameters in use, or the results that are returned.
+
+A search can return other things than entries. In fact, you can get four different kinds of responses:
+
+* When it's a normal entry, you will receive a SearchResultEntry
+* When it's done, you will receive a SearchResultDone
+* When the response is a reference to another entry, you will get a SearchResultReference
+* In some cases, you may also receive an IntermediateResponse.
+
+You may also add a Control to the search request, or request some specific AttributeType to be returned. The parameters that may be injected into a SearchRequest are as follows:
+
+* The base DN
+* The filter
+* The scope (one of OBJECT, ONELEVEL or SUBTREE)
+* The size limit
+* The time limit
+* The list of attributes to return
+* The alias dereferencing mode (one of DEREF_ALWAYS, DEREF_FINDING_BASE_OBJ, DEREF_IN_SEARCHING or NEVER_DEREF_ALIASES)
+* The TypesOnly flag (to get the AttributeTypes but no values)
+* The controls
+
+In both cases, you should fill the _SearchRequest_ message and send it to the server:
+
+ :::Java
+ @Test
+ public void testSearchWithSearchRequest() throws Exception
+ {
+ // Create the SearchRequest object
+ SearchRequest req = new SearchRequestImpl();
+ req.setScope( SearchScope.SUBTREE );
+ req.addAttributes( "*" );
+ req.setTimeLimit( 0 );
+ req.setBase( new Dn( "ou=system" ) );
+ req.setFilter( "(cn=user1)" );
+
+ // Process the request
+ SearchCursor searchCursor = connection.search( req );
+
+ while ( searchCursor.next() )
+ {
+ Response response = searchCursor.get();
+
+ // process the SearchResultEntry
+ if ( response instanceof SearchResultEntry )
+ {
+ Entry resultEntry = ( ( SearchResultEntry ) response ).getEntry();
+ System.out.println( resultEntry );
+ }
+ }
+ }
+
+As we can see, the response is different, we are returned a _SearchCursor_ instance, and we must verify the response type before being able to process it.
+
diff --git a/source/api/user-guide/2.4-adding.md b/source/api/user-guide/2.4-adding.md
new file mode 100644
index 0000000..a97b23a
--- /dev/null
+++ b/source/api/user-guide/2.4-adding.md
@@ -0,0 +1,152 @@
+---
+title: 2.4 - Adding entries
+navPrev: 2.3-searching.html
+navPrevText: 2.3 Searching
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.5-deleting.html
+navNextText: 2.5 - Deleting entries
+---
+
+# 2.4 - Adding entries
+
+Adding entries is one of the base operations a user can do on an **LDAP** server. Nevertheless, it's an operation that implies many checks, and frequently the user receives strange error messages. We will see how to add an entry using the **LDAP API**, and analyze the various error cases that can occur.
+
+## Adding an entry
+Here is the simplest way to add an entry into the server, assuming that the entry is correct. In order to add an entry, you must provide the location where the entry is stored (its _Dn_) and the list of its _Attributes_ contained within it.
+
+Here are two examples where the entry is injected using **LDIF**:
+
+ :::Java
+ @Test
+ public void testAddLdif1() throws Exception
+ {
+ connection.add(
+ new DefaultEntry(
+ "cn=testadd,ou=system", // The Dn
+ "ObjectClass: top",
+ "ObjectClass: person",
+ "cn: testadd_cn",
+ "sn: testadd_sn" ) );
+
+ assertTrue( connection.exists( "cn=testadd,ou=system" ) );
+ }
+
+In this basic example, we are adding a new entry, created using some **LDIF** formatted parameters, the first one being the entry's _Dn_.
+
+Note that it is possible to use some variables in the **LDIF** instead of pure text. Here is the same example, resulting to the same entry being added:
+
+ :::Java
+ @Test
+ public void testAddLdif2() throws Exception
+ {
+ String cn = "testadd_cn";
+ String sn = "testadd_sn";
+
+ connection.add(
+ new DefaultEntry(
+ "cn=testadd,ou=system", // The Dn
+ "ObjectClass: top",
+ "ObjectClass: person",
+ "cn", cn, // Note : there is no ':' when using a variable
+ "sn", sn ) );
+
+ assertTrue( connection.exists( "cn=testadd,ou=system" ) );
+ }
+
+Down the line, what is important is that the _add()_ operation is taking a full **[Entry](6.12-entry.html)**.
+
+We can also create the **[Entry](6.12-entry.html)** in a different way, which is shown in the following paragraphs.
+
+## Sending an _AddRequest_
+
+When more control is needed we ask the server to add an entry by sending an **[AddRequest]()**, which allows a **[Control]()** to be included in the request.
+
+Here is an example (note that the control is just injected to demonstrate the feature, it doesn't really do anything special in this example):
+
+ :::java
+ @Test
+ public void testAddWithControl() throws Exception
+ {
+ assertFalse( connection.exists( "cn=testadd,ou=system" ) );
+
+ Entry entry = new DefaultEntry(
+ "cn=testadd,ou=system",
+ "ObjectClass : top",
+ "ObjectClass : person",
+ "cn: testadd_sn",
+ "sn: testadd_sn" );
+
+ AddRequest addRequest = new AddRequestImpl();
+ addRequest.setEntry( entry );
+ addRequest.addControl( new ManageDsaITImpl() );
+
+ AddResponse response = connection.add( addRequest );
+
+ assertNotNull( response );
+ assertEquals( ResultCodeEnum.SUCCESS, response.getLdapResult().getResultCode() );
+
+ assertTrue( connection.exists( "cn=testadd,ou=system" ) );
+ }
+
+### Asynchronous addition
+
+Sometimes we need to add an entry, but not check the result immediately. It's just a matter of calling the _addAsync()_ method, which returns a _Future_ that can be checked somewhere else in the code:
+
+ :::java
+ @Test
+ public void testAddAsyncLdif() throws Exception
+ {
+ assertFalse( connection.exists( "cn=testAsyncAdd,ou=system" ) );
+
+ Entry entry = new DefaultEntry(
+ "cn=testAsyncAdd,ou=system",
+ "ObjectClass: top",
+ "ObjectClass: person",
+ "cn: testAsyncAdd_cn",
+ "sn: testAsyncAdd_sn" );
+
+ AddRequest addRequest = new AddRequestImpl();
+ addRequest.setEntry( entry );
+
+ AddFuture addFuture = connection.addAsync( addRequest );
+
+ // Here, we can do something else before checking that the entry has been added
+
+ AddResponse addResponse = addFuture.get( 1000, TimeUnit.MILLISECONDS );
+
+ assertNotNull( addResponse );
+ assertEquals( ResultCodeEnum.SUCCESS, addResponse.getLdapResult().getResultCode() );
+
+ assertTrue( connection.exists( "cn=testAsyncAdd,ou=system" ) );
+ }
+
+## Do, Don't
+
+Successfully adding an entry assumes that the entry was correct, i.e. the attributes and values are compatible with the LDAP schema. There are many things checked by the server. Here is a list of constraints that you should respect in order to get your entry injected:
+
+* The entry must have at least one **Structural** _ObjectClass_
+* If the entry has more than one **Structural** _ObjectClass_, then they must be hierarchically related
+* The _ObjectClasses_ define the list of allowed **Structural** _AttributeTypes_ that can be used (**MAY** and **MUST**)
+* All the **MUST** **[AttributeTypes]()** must be present
+* Each added value must follow the _AttributeType_ _Syntax_
+* If the _AttributeType_ is single valued, then you can't add more than one value
+* The entry's _Dn_ must have a parent
+* You are not allowed as a user to inject operational attributes, unless they have the **USER-MODIFICATION** flag set to true.
+
+
+There are also some other constraints, depending on the server, if it implements _NameForms_, _DITStructureRules_ or _DITContentRules_.
+
+Another reason an entry can be rejected is that there aren't enough privilege to add it. You must ensure the LDAP server's configuration allows you to add an entry in the correct location.
+
+## Errors
+
+<DIV class="note" markdown="1">
+At first, you might expect to get an exception if the entry addition has failed. If the server is rejecting the addition, <b>you will get NO exception*</b>. Exceptions are only thrown client side if the entry is not built correctly, or if the connection is not opened.
+
+In any other case, the server will simply return a <b>[LdapResult]()</b> instance containing either <b>SUCCESS</b> or the cause of the rejection.
+</DIV>
+
+Usually, if you get an error while adding an entry, the message is hard to read. Most of the errors occur because the entry already exists, or because the entry has an LDAP schema violation.
+
+The _LdapResult_ in the response will provide helpful clues as to what the root cause is.
diff --git a/source/api/user-guide/2.5-deleting.md b/source/api/user-guide/2.5-deleting.md
new file mode 100644
index 0000000..f72759b
--- /dev/null
+++ b/source/api/user-guide/2.5-deleting.md
@@ -0,0 +1,129 @@
+---
+title: 2.5 - Deleting entries
+navPrev: 2.4-adding.html
+navPrevText: 2.4 - Adding entries
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.6-modifying.html
+navNextText: 2.6 - Modifying entries
+---
+
+# 2.5 - Deleting entries
+
+Deleting an entry is pretty easy, it just requires the entry's _DN_. There is one important thing to understand though, if the entry has children, the operation will fail.
+
+## Simple entry deletion
+
+We request a deletion by providing the entry's _DN_, as in the following example:
+
+ :::Java
+ @Test
+ public void testDeleteLeafNode() throws Exception
+ {
+ assertTrue( session.exists( "cn=child1,cn=parent,ou=system" ) );
+
+ try
+ {
+ connection.delete( "cn=child1,cn=parent,ou=system" );
+ }
+ catch ( LdapException le )
+ {
+ fail( le.getMessage() );
+ }
+
+ assertFalse( session.exists( "cn=child1,cn=parent,ou=system" ) );
+ }
+
+
+Trying to delete a parent node would result in an error (NOT_ALLOWED_ON_NON_LEAF) :
+
+ :::Java
+ @Test
+ public void testDeleteNonLeafFailure() throws Exception
+ {
+ assertTrue( session.exists( "cn=parent,ou=system" ) );
+
+ try
+ {
+ connection.delete( "cn=parent,ou=system" );
+ }
+ catch ( LdapException le )
+ {
+ fail( le.getMessage() );
+ }
+
+ assertTrue( session.exists( "cn=parent,ou=system" ) );
+ }
+
+
+## Recursive deletion of entries
+
+Usually, you can't delete an entry and all of its children in one operation. However, some servers accept such requests if you send a delete request and a TreeDelete control. This control is a [draft](http://tools.ietf.org/html/draft-armijo-ldap-treedelete-02), which has been implemented by **Microsoft**, **OpenDS**, **OpenDJ**. It will delete all the children and the entry itself. We don't use a normal _delete()_ method, there is a specific method, _deleteTree()_. Here is an example :
+
+ :::Java
+ @Test
+ public void testDeleteWithCascadeControl() throws Exception
+ {
+ assertTrue( session.exists( "cn=parent,ou=system" ) );
+
+
+ try
+ {
+ connection.deleteTree( "cn=parent,ou=system" );
+ }
+ catch ( LdapException le )
+ {
+ fail( le.getMessage() );
+ }
+
+ assertFalse( session.exists( "cn=parent,ou=system" ) );
+ }
+
+
+## Sending a DeleteRequest with a control
+
+It's also possible to associate a **[Control]** with the delete request. In order to do that, you have to create a _DelRequest_ instance. In the following example, we will add the Delete Tree control (this make this call equivalent to the _deleteTree()_ method).
+
+ :::Java
+ @Test
+ public void testDeleteWithControl() throws Exception
+ {
+ assertTrue( session.exists( "cn=parent,ou=system" ) );
+
+ if ( connection.isControlSupported( "1.2.840.113556.1.4.805" ) )
+ {
+ DeleteRequest deleteRequest = new DeleteRequestImpl();
+ deleteRequest.setName( new Dn( "cn=parent,ou=system" ) );
+ Control deleteTreeControl = new OpaqueControl( "1.2.840.113556.1.4.805" );
+ deleteRequest.addControl( deleteTreeControl );
+
+ DeleteResponse deleteResponse = connection.delete( deleteRequest );
+
+ assertNotNull( deleteResponse );
+ assertEquals( ResultCodeEnum.SUCCESS, deleteResponse.getLdapResult().getResultCode() );
+ assertFalse( session.exists( "cn=parent,ou=system" ) );
+ }
+ }
+
+
+## Asynchronous delete
+
+You can also decide to send an asynchronous delete request : the method will return a Future that you can check later. You have to construct a **[DeleteRequest]** instance. Here is an example :
+
+ :::Java
+ @Test
+ public void testDeleteAsync() throws Exception
+ {
+ assertTrue( session.exists( "cn=child,cn=parent,ou=system" ) );
+
+ DeleteRequest deleteRequest = new DeleteRequestImpl();
+ deleteRequest.setName( new Dn( "cn=child,cn=parent,ou=system" ) );
+
+ DeleteFuture deleteFuture = connection.deleteAsync( deleteRequest );
+
+ DeleteResponse deleteResponse = deleteFuture.get( 1000, TimeUnit.MILLISECONDS );
+
+ assertNotNull( deleteResponse );
+ assertEquals( ResultCodeEnum.SUCCESS, deleteResponse.getLdapResult().getResultCode() );
+ assertFalse( session.exists( "cn=child,cn=parent,ou=system" ) );
+ }
diff --git a/source/api/user-guide/2.6-modifying.md b/source/api/user-guide/2.6-modifying.md
new file mode 100644
index 0000000..6b20724
--- /dev/null
+++ b/source/api/user-guide/2.6-modifying.md
@@ -0,0 +1,388 @@
+---
+title: 2.6 - Modifying entries
+navPrev: 2.5-deleting.html
+navPrevText: 2.5 - Deleting entries
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.7-moving-renaming.html
+navNextText: 2.7 - Moving an renaming entries
+---
+
+# 2.6 - Modifying entries
+
+There are several ways an entry can be modified. Mainly, it's about adding or deleting an attribute, or modifying the values associated with an existing attribute.
+
+It's important to understand that many modifications can be applied on a single entry. All those modifications will be applied in an all or none fashion. i.e., if any of the modifications are invalid, none will occur. Also if the server crashes while applying the mods, it's guaranteed that the entry remains consistent.
+
+## How it works?
+
+Each modification to be applied on an entry is encapsulated into an intermediate class : a _Modification_ instance, which can be created as :
+
+ :::Java
+ Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName", "John", "Peter" );
+
+Here the modification instance represents addition of values "John" and "Peter" to the _giveName_ attribute (the _givenName_ attribute can have more than one value).
+
+There are four different kind of modifications:
+
+* ModificationOperation.ADD_ATTRIBUTE: add an attribute and values to an entry
+* ModificationOperation.REMOVE_ATTRIBUTE: remove an attribute and values from an entry
+* ModificationOperation.REPLACE_ATTRIBUTE: replace some existing values from an entry
+* ModificationOperation.INCREMENT_ATTRIBUTE: increment an Integer value of an attribute
+
+## Adding or removing full attributes
+
+The following two operations completely add or remove attributes.
+
+### Adding new attributes
+
+First of all, let's learn how to add an attribute. First you must know which entry to modify, which means you must know its Dn. Next, you must create the _Modification_ instance which is applied to the entry. Here is the code that is used to add a _givenName_ attribute to an existing entry :
+
+ :::Java
+ ...
+ Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
+ "John", "Peter" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName );
+ ...
+
+#### Adding more than one attribute
+
+What if you want to apply more than one modification to the entry ?
+
+Easy : create more than one _Modification_ instance, and add them before calling the _modify_ method :
+
+ :::Java
+ ...
+ Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
+ "John", "Peter" );
+ Modification addedInitials = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "initials",
+ "JD" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName, addedInitials );
+ ...
+
+You can add as many _Modification_ instances as needed.
+
+#### Errors
+
+If you try to add an attribute that already exists, you will get an error, like this one :
+
+ :::Java
+ ...
+ Modification addedGivenName = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName",
+ "John", "Peter" );
+ Modification addedUid = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "uid",
+ "Ted" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenName, addedUid );
+ ...
+
+results in :
+
+ :::Java
+ org.apache.directory.api.ldap.model.exception.LdapAttributeInUseException: ATTRIBUTE_OR_VALUE_EXISTS: failed for MessageType : MODIFY_REQUEST
+ Message ID : 3
+ Modify Request
+ Object : 'uid=Doe,dc=acme,dc=com'
+ Modification[0]
+ Operation : add
+ Modification
+ givenName: John
+ givenName: Peter
+ Modification[1]
+ Operation : add
+ Modification
+ uid: Ted
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@13532916: ERR_54 Cannot add a value which is already present : admin
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2064)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ ...
+
+Here, we've tried to add the _uid_ attribute that already exists, and the error trace tells us as much.
+
+Another potential error occurs when adding an attribute type that isn't allowed on that entry. This occurs because the Entry's ObjectClass does not allow such an attribute (per the schema), or because the server forbids modification of that entry, due to the ACIs applied on this entry.
+
+Last, but not least, and hopefully this is obvious, the entry *must* exist prior to modification!
+
+### Removing an attribute
+
+Removing an attribute is actually a bit simpler than adding one, because the values for the attribute don't need to be specified. Here's an example where the _givenName_ attribute is removed from an entry:
+
+
+ :::Java
+ ...
+ Modification deletedGivenName = new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, "givenName" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", adeletedivenName );
+ ...
+
+Here, we've created a modification, specifying the _givenName_ attribute must be removed, and we apply the modification request to the entry.
+
+Again, more than one attribute may be deleted from an entry. It's a matter of creating more than one _Modification_ instances and applying them to the entry.
+
+#### Errors
+
+If you try to delete an attribute that does not exist in the entry, you will get this error:
+
+ :::Java
+ org.apache.directory.api.ldap.model.exception.LdapNoSuchAttributeException: NO_SUCH_ATTRIBUTE: failed for MessageType : MODIFY_REQUEST
+ Message ID : 3
+ Modify Request
+ Object : 'uid=admin,ou=system'
+ Modification[0]
+ Operation : delete
+ Modification
+ givenName: (null)
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@fbe6f598: ERR_55 Trying to remove an non-existant attribute:
+ attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
+ DESC 'RFC2256: first name(s) for which the entity is known by'
+ SUP name
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+ USAGE userApplications
+ )
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2057)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:302)
+
+
+Here, the entry does not contain the _givenName_ attribute.
+
+Another potential error is when you trying to remove a mandatory attribute, per the entry's ObjectClass constraints.
+
+Otherwise, the server might forbid modification of entry due to the ACIs that are applicable to it.
+
+Again the entry *must* exist prior to performing the modification!
+
+## Adding, removing or replacing attribute values
+
+You can now update an attribute's values themselves, atomically, instead of removing the full attribute, and add it back but with updated values. We use the exact same _Modification_ instance, with the same three _ModificationOperation_, except that the semantics slightly differ.
+
+Typically, this is what happens when using one of the three _ModificationOperation_ on an attribute:
+
+* ModificationOperation.ADD_ATTRIBUTE : add values to an attribute. If the Attribute does not exist, it will be added
+* ModificationOperation.REMOVE_ATTRIBUTE : remove values from an attribute.
+* ModificationOperation.REPLACE_ATTRIBUTE : replace all the values from an attribute by the provided new values
+
+### Add values
+
+Let's see with the addition of values. Here, we will assume we have an entry like:
+
+ dn: uid=jDoe,dc=acme,dc=com
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ uid: jDoe
+ userPassword: secret
+ sn: John Tom Doe
+ cn: Doe
+ givenName: John
+
+We will add the 'Tom' given name to the _givenName_ attribute in this entry :
+
+ :::Java
+ ...
+ Modification addedGivenNameValue = new DefaultModification( ModificationOperation.ADD_ATTRIBUTE, "givenName", "Tom" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", addedGivenNameValue );
+ ...
+
+The entry now has two values for the _giveName_ attribute :
+
+ dn: uid=jDoe,dc=acme,dc=com
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ uid: jDoe
+ userPassword: secret
+ sn: John Tom Doe
+ cn: Doe
+ givenName: John
+ givenName: Tom
+
+
+#### Errors
+
+Again, such an operation might fail for many reasons. Let's see what are the possible errors:
+
+First, if the attribute's value already exists. You will get an error like this:
+
+ org.apache.directory.api.ldap.model.exception.LdapAttributeInUseException: ATTRIBUTE_OR_VALUE_EXISTS: failed for MessageType :
+ MODIFY_REQUEST
+ Message ID : 5
+ Modify Request
+ Object : 'uid=admin,ou=system'
+ Modification[0]
+ Operation : add
+ Modification
+ givenName: John
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@867e79fe: ERR_54 Cannot add a value which is already present : John
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2064)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:303)
+
+Note that depending on the attribute's syntax, you may get this type of error because you entered a value with different casing when the syntax is case-insensitive. Typically, if the attribute contains the value 'John' and you try to add the value 'JOHN', you will get this error message. Be sure you know what the attribute syntax allows you to do...
+
+Second, if the attribute is single valued, it will not be possible to add another value to it. When this happens you'll get the following error message:
+
+ org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException: CONSTRAINT_VIOLATION: failed for MessageType : MODIFY_REQUEST
+ Message ID : 3
+ Modify Request
+ Object : 'c=FR,ou=users,ou=system'
+ Modification[0]
+ Operation : add
+ Modification
+ c: US
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@cdf2ed2f: ERR_278 More than one value has been provided for the single-valued attribute: c
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2127)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttribute(ClientModifyRequestTest.java:297)
+
+Third, the ACIs set on the server may not allow updating an entry or its attribute.
+
+### Removing values
+
+Removing values follow the same pattern. First select the entry, choose its attribute, and list the values to be removed from it. Here is an exemple:
+
+ :::Java
+ ...
+ Modification removedGivenNameValue = new DefaultModification( ModificationOperation.REMOVE_ATTRIBUTE, "givenName", "Tom" );
+
+ connection.modify( "uid=Doe,dc=acme,dc=com", removedGivenNameValue );
+ ...
+
+The value 'Tom' just added should now be removed from the _givenName_ attribute, but the value 'John' should still be present.
+
+How do we remove the last value of an attribute? It's quite simple. The attribute itself must be removed from the entry, if this is allowed (see below).
+
+#### Errors
+
+There are more potential erros with this operation. Let's list them all.
+
+First, the value you want to remove does not exist. You will get such an error:
+
+ org.apache.directory.api.ldap.model.exception.LdapNoSuchAttributeException: NO_SUCH_ATTRIBUTE: failed for MessageType :
+ MODIFY_REQUEST
+ Message ID : 5
+ Modify Request
+ Object : 'uid=admin,ou=system'
+ Modification[0]
+ Operation : delete
+ Modification
+ givenName: Pete
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@39800276: ERR_56 Cannot remove an absent value from attribute : attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
+ DESC 'RFC2256: first name(s) for which the entity is known by'
+ SUP name
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+ USAGE userApplications
+ )
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2057)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:327)
+
+Second, if you try to remove the last value of an attribute which was declared mandatory (in the schema) the following error will occur:
+
+ org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException: OBJECT_CLASS_VIOLATION: failed for MessageType :
+ MODIFY_REQUEST
+ Message ID : 3
+ Modify Request
+ Object : 'uid=billyd,ou=users,ou=system'
+ Modification[0]
+ Operation : delete
+ Modification
+ sn: billyd
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@5e80ddb2: ERR_279 Required attributes [sn(2.5.4.4)] not found within entry uid=billyd,ou=users,ou=system
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2081)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:314)
+
+Here, we tried to remove the _sn_ attribute's last value from an entry where it's a required attribute.
+
+Third, if you try to remove a value which was used as part of the entry's _RDN_ : which is never allowed. Typically, for the 'uid=billyd,ou=users,ou=system' entry, you can't remove the 'billyd' value from the 'uid' attribute. This is the error that occurs when such a modification is attempted:
+
+ org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException: NOT_ALLOWED_ON_RDN: failed for MessageType :
+ MODIFY_REQUEST
+ Message ID : 3
+ Modify Request
+ Object : 'uid=billyd,ou=users,ou=system'
+ Modification[0]
+ Operation : delete
+ Modification
+ uid: billyd
+ org.apache.directory.api.ldap.model.message.ModifyRequestImpl@4d149d78: ERR_62 Entry uid=billyd,ou=users,ou=system does not have the uid attributeType, which is part of the RDN";
+ at org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2081)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2300)
+ at org.apache.directory.ldap.client.api.LdapNetworkConnection.modify(LdapNetworkConnection.java:2309)
+ at org.apache.directory.shared.client.api.operations.ClientModifyRequestTest.testModifyRemoveAttributeValue(ClientModifyRequestTest.java:314)
+
+There are also classical errors, when ACLs forbid the removal of a value, or the entry doesn't exist.
+
+### Replace values
+
+Here, what we want to do is to replaces all the values from an attribute with some new values. All in all, this is equivalent to first remove the values, then inject the new values, using modifications, except that in some cases, doing so will not work.
+
+An example where such an operation is mandatory is when replacing the values of a mandatory attribute with something different: with two successive operations, that would fail. A replace will work.
+
+What is important here is that the operation simply replace *all* the existing values* with new ones, removing the previous ones.
+
+Let's see how it works with a simple example, with an entry containing:
+
+ dn: uid=jDoe,dc=acme,dc=com
+ objectClass: person
+ objectClass: organizationalPerson
+ objectClass: inetOrgPerson
+ uid: jDoe
+ userPassword: secret
+ sn: John Tom Doe
+ cn: Doe
+ givenName: John
+ givenName: Peter
+
+We will try to replace the _givenName_:
+
+ Modification replaceGn = new DefaultModification( ModificationOperation.REPLACE_ATTRIBUTE, "givenName",
+ "Jack" );
+
+ connection.modify( "uid=jDoe,dc=acme,dc=com", replaceGn );
+
+The modified entry will have its _givenName_ value replaced by 'Jack', the two previous values will have been removed.
+
+There is one corner case with this operation: creating a _Modification_ instance where the attribute has no value, then the attribute will be removed from the entry.
+
+#### Errors
+
+You will get the same errors seen in the two previous operation (ADD and REMOVE) for the very same use cases. Here are some more things to watch out for:
+
+* never inject more than one value in a SINGLE_VALUE attribute
+* never remove a value which is used by the RDN
+* never delete all the values of a mandatory attribute
+* always have the right to modify the entry
+* never try to update a non-existent entry
+
+### Increment attribute
+
+This feature will only work with servers supporting the feature. It can be checked by reading the _rootDSE_ _supportedFeatures_ attribute, which should contain the **1.3.6.1.1.14** value.
+
+The idea is to make it possible to increment an integer attribute in one single operation, instead of reading the entry first, and modify the value in a second operation. That makes the increment operation atomic, and faster as only one operation will be necessary.
+
+Four methods are available in the _ModifyRequest_ operation:
+
+* ModifyRequest increment( String attribute ): Increment by 1 the attribute value
+* ModifyRequest increment( Striung attribute, int ): Increment by N the attribute value
+* ModifyRequest increment( Attribute attribute ): Increment by 1 the attribute value
+* ModifyRequest increment( Attribute attribute, int ): Increment by N the attribute value
+
+As you can see, it's possible to increment the value by more than 1 (which is the default).
+
+Note that if the increment attribute is muklti-valued, then all the values will be incremented.
+
diff --git a/source/api/user-guide/2.7-moving-renaming.md b/source/api/user-guide/2.7-moving-renaming.md
new file mode 100644
index 0000000..cafb65c
--- /dev/null
+++ b/source/api/user-guide/2.7-moving-renaming.md
@@ -0,0 +1,34 @@
+---
+title: 2.7 - Moving an renaming entries
+navPrev: 2.6-modifying.html
+navPrevText: 2.6 - Modifying entries
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.8-comparing.html
+navNextText: 2.8 - Comparing entries
+---
+
+# 2.7 - Moving an renaming entries
+
+LDAP allows you to do more than adding, deleting or modifying entries : you can also move them, or rename them. Here, you are not changing the content of an entry, but its position in the **DIT**, or its name.
+
+Actually, changing an entry's name **may* have an impact on the entry's content, as the *DN* always contains elements that are part of the entry.
+
+Both operation can be applied at the same time.
+
+Actually the LDAP protocol reunite those two function into one call (**MODDN**, also called **MODRDN**), but for clarity, we defined three different methods, beside a fith one that mimic the LDAP protocol **MODDN** function :
+
+* _move( current DN, new superior DN )_
+* _rename ( old DN, new DN[, keep the old RDN] )_
+* _moveAndRename( current DN, new DN[, keep the old RDN])_
+* _modifyDn_( ModifyDnRequest )
+
+## Move operation
+
+## Rename operation
+
+## Move and Rename operation
+
+## ModifyDn operation
+
+## Asynchornous ModifyDn operation
\ No newline at end of file
diff --git a/source/api/user-guide/2.8-comparing.md b/source/api/user-guide/2.8-comparing.md
new file mode 100644
index 0000000..9498df7
--- /dev/null
+++ b/source/api/user-guide/2.8-comparing.md
@@ -0,0 +1,11 @@
+---
+title: 2.8 - Comparing entries
+navPrev: 2.7-moving-renaming.html
+navPrevText: 2.7 - Moving an renaming entries
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.9-exception-management.html
+navNextText: 2.9 - Exception management
+---
+
+# 2.8 - Comparing entries (e)
\ No newline at end of file
diff --git a/source/api/user-guide/2.9-exception-management.md b/source/api/user-guide/2.9-exception-management.md
new file mode 100644
index 0000000..fd05361
--- /dev/null
+++ b/source/api/user-guide/2.9-exception-management.md
@@ -0,0 +1,11 @@
+---
+title: 2.9 - Exception management
+navPrev: 2.8-comparing.html
+navPrevText: 2.8 - Comparing entries
+navUp: 2-basic-ldap-api-usage.html
+navUpText: 2 - Basic LDAP API usage
+navNext: 2.10-ldap-connection-template.html
+navNextText: 2.10 - The LdapConnectionTemplate
+---
+
+# 2.9 - Exception management (...)
diff --git a/source/api/user-guide/3-advanced-ldap-api-usage.md b/source/api/user-guide/3-advanced-ldap-api-usage.md
new file mode 100644
index 0000000..dde9ca8
--- /dev/null
+++ b/source/api/user-guide/3-advanced-ldap-api-usage.md
@@ -0,0 +1,21 @@
+---
+title: 3 - Advanced LDAP API Usage
+navPrev: 2-basic-ldap-api-usage.html
+navPrevText: 2 - Basic LDAP API Usage
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 4-schema-management.html
+navNextText: 4 - Schema Management
+---
+
+# 3 - Advanced LDAP API Usage (...)
+
+## Contents
+
+* [Controls](3.1-controls.html)
+* [Extended operations (e)](3.2-extended-operations.html)
+* [Referrals (e)](3.3-referrals.html)
+* [Aliases (e)](3.4-aliases.html)
+* [LDIF, DSML (...)](3.5-ldif-dsml.html)
+* [Abandonning an operation (e)](3.6-abandonning.html)
+* [Server informations (e)](3.7-server-informations.html)
diff --git a/source/api/user-guide/3.1-controls.md b/source/api/user-guide/3.1-controls.md
new file mode 100644
index 0000000..32bd584
--- /dev/null
+++ b/source/api/user-guide/3.1-controls.md
@@ -0,0 +1,25 @@
+---
+title: 3.1 - Controls
+navPrev: 3-advanced-ldap-api-usage.html
+navPrevText: 3 - Advanced LDAP API Usage
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.2-extended-operations.html
+navNextText: 3.2 - Extended Operations
+---
+
+# 3.1 - Controls
+
+A LDAP Control is an extension to an operation. It tells the server to do something aside the standard operation, or it let the server send back some information to the client. A Control contains three different parts :
+
+* An identifier, the control OID
+* A flag telling the server what to do if it does not know about the control or if it results in an error (either return an error or ignore the control)
+* A value which is generally BER encoded
+
+There are many controls available, some being standardized, other being server specific.
+
+One or more control can be added to any operation.
+
+Note that either the client or the server might not know about the controls being used, and if the criticality flag is set to FALSE, the server will ignore the control in this case.
+
+Please check [this page](6.7-control.html) for a detailed description on controls usage.
\ No newline at end of file
diff --git a/source/api/user-guide/3.2-extended-operations.md b/source/api/user-guide/3.2-extended-operations.md
new file mode 100644
index 0000000..7143a08
--- /dev/null
+++ b/source/api/user-guide/3.2-extended-operations.md
@@ -0,0 +1,12 @@
+---
+title: 3.2 - Extended Operations
+navPrev: 3.1-controls.html
+navPrevText: 3.1 - Controls
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.3-referrals.html
+navNextText: 3.3 - Referrals
+---
+
+# 3.2 - Extended Operations
+
diff --git a/source/api/user-guide/3.3-referrals.md b/source/api/user-guide/3.3-referrals.md
new file mode 100644
index 0000000..fc4ef88
--- /dev/null
+++ b/source/api/user-guide/3.3-referrals.md
@@ -0,0 +1,12 @@
+---
+title: 3.3 - Referrals
+navPrev: 3.2-extended-operations.html
+navPrevText: 3.2 - Extended Operations
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.4-aliases.html
+navNextText: 3.4 - Aliases
+---
+
+# 3.3 - Referrals
+
diff --git a/source/api/user-guide/3.4-aliases.md b/source/api/user-guide/3.4-aliases.md
new file mode 100644
index 0000000..649aabe
--- /dev/null
+++ b/source/api/user-guide/3.4-aliases.md
@@ -0,0 +1,12 @@
+---
+title: 3.4 - Aliases
+navPrev: 3.3-referrals.html
+navPrevText: 3.3 - Referrals
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.5-ldif-dsml.html
+navNextText: 3.5 - LDIF and DSML
+---
+
+# 3.4 - Aliases
+
diff --git a/source/api/user-guide/3.5-ldif-dsml.md b/source/api/user-guide/3.5-ldif-dsml.md
new file mode 100644
index 0000000..c876fc8
--- /dev/null
+++ b/source/api/user-guide/3.5-ldif-dsml.md
@@ -0,0 +1,12 @@
+---
+title: 3.5 - LDIF and DSML
+navPrev: 3.4-aliases.html
+navPrevText: 3.4 - Aliases
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.6-abandonning.html
+navNextText: 3.6 - Abandonning an operation
+---
+
+# 3.5 - LDIF and DSML
+
diff --git a/source/api/user-guide/3.6-abandonning.md b/source/api/user-guide/3.6-abandonning.md
new file mode 100644
index 0000000..3e7286e
--- /dev/null
+++ b/source/api/user-guide/3.6-abandonning.md
@@ -0,0 +1,12 @@
+---
+title: 3.6 - Abandonning an operation
+navPrev: 3.5-ldif-dsml.html
+navPrevText: 3.5 - LDIF and DSML
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 3.7-server-informations.html
+navNextText: 3.7 - Server Informations
+---
+
+# 3.6 - Abandonning an operation
+
diff --git a/source/api/user-guide/3.7-server-informations.md b/source/api/user-guide/3.7-server-informations.md
new file mode 100644
index 0000000..87ba561
--- /dev/null
+++ b/source/api/user-guide/3.7-server-informations.md
@@ -0,0 +1,12 @@
+---
+title: 3.7 - Server informations
+navPrev: 3.6-abandonning.html
+navPrevText: 3.6 - Abandonning an operation
+navUp: 3-advanced-ldap-api-usage.html
+navUpText: 3 - Advanced LDAP API Usage
+navNext: 4-schema-management.html
+navNextText: 4 - Schema Management
+---
+
+# 3.7 - Server informations
+
diff --git a/source/api/user-guide/4-schema-management.md b/source/api/user-guide/4-schema-management.md
new file mode 100644
index 0000000..33ad7a2
--- /dev/null
+++ b/source/api/user-guide/4-schema-management.md
@@ -0,0 +1,32 @@
+---
+title: 4 - Schema Management
+navPrev: 3-advanced-ldap-api-usage.html
+navPrevText: 3 - Advanced LDAP API Usage
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 5-ldap-security.html
+navNextText: 5 - LDAP Security
+---
+
+# 4 - Schema Management
+
+Every LDAP server necessarily has a schema that's used to define its accepted data elements along with their rules for usage (syntax).
+
+An LDAP Schema is a complex combination of many schema elements. Here's we'll define those schema elements and how to organize them. Last, but not least, we'll explain how to leverage the schema on the client side.
+
+## Contents
+
+* [Schema](4.1-schema.html)
+* [SchemaManager](4.2-schema-manager.html)
+ * [SchemaObjects](4.2.1-schema-objects.html)
+ * [AttributeTypes](4.2.1.1-attribute-types.html)
+ * [ObjectClasses](4.2.1.2-object-classes.html)
+ * [Syntaxes](4.2.1.3-syntaxes.html)
+ * [MatchingRules](4.2.1.4-matching-rules.html)
+ * [DITContentRules](4.2.1.5-dit-content-rules.html)
+ * [DITStructureRules](4.2.1.6-dit-structure-rules.html)
+ * [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
+ * [NameForms](4.2.1.8-name-forms.html)
+ * [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
+ * [Registries](4.2.2-registries.html)
+ * [SchemaLoader](4.2.3-schema-loader.html)
diff --git a/source/api/user-guide/4.1-schema.md b/source/api/user-guide/4.1-schema.md
new file mode 100644
index 0000000..47d0d91
--- /dev/null
+++ b/source/api/user-guide/4.1-schema.md
@@ -0,0 +1,33 @@
+---
+title: 4.1 - Schema
+navPrev: 4-schema-management.html
+navPrevText: 4 - Schema Management
+navUp: 4-schema-management.html
+navUpText: 4 - Schema Management
+navNext: 4.2-schema-manager.html
+navNextText: 4.2 - Schema manager
+---
+
+# 4.1 - Schema
+
+A **Schema** is a set of elements that are used by the **LDAP Server** to describe the data that are stored. The top two elements are **ObjectClass** and **AttributeType**. An **ObjectClass** is a container, describing what an **LDAP** entry can contain, while an **AttributeType** describe each singe element stored in this container.
+
+The key here is that an **LDAP** entry uses **ObjectClasses** to list all the possible **AttributeTypes** that an entry can contain, some of them being mandatory, some other optional.
+
+Now, there is more. We have many other **Schema Objects** that are colateral:
+
+* **LdapComparator** (_ApacheDS_ specific)
+* **DitContentRule**
+* **DitStructureRule**
+* **MatchingRule**
+* **MatchingRuleUse**
+* **NameForm**
+* **Normalizer** (_ApacheDS_ specific)
+* **Syntax**
+* **SyntaxChecker** (_ApacheDS_ specific)
+
+Most of those elements are defined in [RFC 4512](https://tools.ietf.org/html/rfc4512), we have added three others (**LDdapComparator**, **Normalizer** and **SyntaxChecker**) in order to make the server easy to extend by adding some new ones.
+
+Those **SchemaObjects** are used to refine the relation between elements, or define their syntax, or some other constraints. The most important ones are **LdapComparator**, **MatchingRule**, **Normalizer**, **Syntax** and **SyntaxChecker**. All of them have dependencies, exposed in this picture:
+
+![SchemaObjects relationship](images/SchemaObjects.png)
diff --git a/source/api/user-guide/4.2-schema-manager.md b/source/api/user-guide/4.2-schema-manager.md
new file mode 100644
index 0000000..4e90893
--- /dev/null
+++ b/source/api/user-guide/4.2-schema-manager.md
@@ -0,0 +1,67 @@
+---
+title: 4.2 - Schema Manager
+navPrev: 4.1-schema.html
+navPrevText: 4.1 - Schema
+navUp: 4-schema-management.html
+navUpText: 4 - Schema Management
+navNext: 5-ldap-security.html
+navNextText: 5 - LDAP Security
+---
+
+# 4.2 - Schema Manager
+
+The API and the ApacheDS server components must to keep schema elements available to interrogate and use. This is done through what we call a **SchemaManager**. It hides the internal structure of the schema objects from the users.
+
+
+## Contents
+
+* [SchemaObjects](4.2.1-schema-objects.html)
+ * [AttributeTypes](4.2.1.1-attribute-types.html)
+ * [ObjectClasses](4.2.1.2-object-classes.html)
+ * [Syntaxes](4.2.1.3-syntaxes.html)
+ * [MatchingRules](4.2.1.4-matching-rules.html)
+ * [DITContentRules](4.2.1.5-dit-content-rules.html)
+ * [DITStructureRules](4.2.1.6-dit-structure-rules.html)
+ * [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
+ * [NameForms](4.2.1.8-name-forms.html)
+ * [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
+* [Registries](4.2.2-registries.html)
+* [SchemaLoader](4.2.43-schema-loader.html)
+
+## Introduction
+
+The **SchemaManager** stores all the Schema elements (**[AttributeTypes (e)]()**, **[ObjectClasses (e)]()**, ... Internally, we store these elements into what is call a **Registries**. Registries are hives where each Schema Object is stored. Each schema element has a dedicated **Registry** associated with it. Think of it as a Map which returns a reference to a specific Schema Element according to its name or OID.
+
+ Note :
+ Each Schema Element is properly defined by one of its names or <b>OID</b>. The <b>OID</b> must be unique across all schema elements,
+ when the name can be used in different schema element (for instance, the <b>audio</b> <b>AttributeType</b> or <b>ObjectClass</b>)
+
+From the user point of view, the **SchemaManager** is seen as a representation of the available LDAP schema elements. It can of course be extended, or modified, by adding or removing schema elements. For historic reasons, the schema elements are gathered into what we call a **schema**. Usually, this is what you load into a **schemaManager**
+
+The server has one instance of a **SchemaManager**, which is used internally, and a users aren't allowed to control it. On the client side, we can load a **SchemaManager** either from the server (which will be a duplicated instance), or from existing schema files. We can even create a brand new **SchemaManager** and fill it with anything needed.
+
+## The various pieces of the puzzle...
+
+Creating a **SchemaManager** results in a complex structure being created, and involves a lot of other helper class. We will separate the description into three groups:
+
+* The elements stored in the **SchemaManager**
+* The containers in which those **SchemaObject** instances are stored, called **Registries**
+* The classes used to initialize the **SchemaManager**, called the **SchemaLoader** (whch comes in various flavors)
+
+## Getting a SchemaManager
+
+The very first thing we do to access the schema elements is to gain access to the **SchemaManager**. This can be done in many ways:
+
+* you can create one from scratch, and load it with the elements you want
+* you can use a default **SchemaManager**, with some default schema elements
+* you can create a **SchemaManager**, and load the schema elements from a destination
+* last, not least - and probably the most interesting possibility -, you can connect to a LDAP server and load the schema from it.
+
+We will show how to proceed in each of these four use cases.
+
+
+## Using a SchemaManager
+
+Let's first assume you have an instance of a **SchemaManager** (we will see later how to get such an instance).
+
+
diff --git a/source/api/user-guide/4.2.1-schema-objects.md b/source/api/user-guide/4.2.1-schema-objects.md
new file mode 100644
index 0000000..f8dc062
--- /dev/null
+++ b/source/api/user-guide/4.2.1-schema-objects.md
@@ -0,0 +1,81 @@
+---
+title: 4.2.1 - Schema Objects
+navPrev: 4.2-schema-manager.html
+navPrevText: 4.2 - Schema Manager
+navUp: 4.2-schema-manager.html
+navUpText: 4.2 - Schema Manager
+navNext: 4.2.2-registries.html
+navNextText: 4.2.2 - Registries
+---
+
+# 4.2.1 - Schema Objects
+
+## Content
+
+* [AttributeTypes](4.2.1.1-attribute-types.html)
+* [ObjectClasses](4.2.1.2-object-classes.html)
+* [Syntaxes](4.2.1.3-syntaxes.html)
+* [MatchingRules](4.2.1.4-matching-rules.html)
+* [DITContentRules](4.2.1.5-dit-content-rules.html)
+* [DITStructureRules](4.2.1.6-dit-structure-rules.html)
+* [MatchingRuleUses](4.2.1.7-matching-rule-uses.html)
+* [NameForms](4.2.1.8-name-forms.html)
+* [ApacheDS Schema Elements](4.2.1.9-apacheds-schema-elements.html)
+
+# Introduction
+
+LDAP defines 8 different Schema Objects, that are used to define what we can store in a LDAP server, how what we store is organized, and which constraints are applied on those elements.
+
+In the API, we also define 3 other **SchemaObjects**, which are necessary to control the values and to compare them. They are hard coded, and can be extended if needed.
+
+## The Schema Object list
+
+Here are the 8 LDAP **SchemaObject**s and the 3 additional ones :
+
+| Name | Description |
+|---|---|
+| **[ObjectClasses (e)](4.8-object-classes.html)** | Defines the permitted **AttributeType**s of an entry |
+| **[AttributeTypes (...)](4.2-attribute-types.html)** | Defines the type of attributes we can store in an entry |
+| **[Syntaxes (e)](4.9-syntaxes.html)** | Defines the syntax that is applied to the **AttributeType** values |
+| **[MatchingRules (e)](4.5-matching-rules.html)** | The rules that are used to match **AttributeType**'s values |
+| **[DITContentRules (e)](4.3-dit-content-rules.html)** | Defines the allowed or forbidden **AttributeType**s and **ObjectClasse**s |
+| **[DITStructureRules (e)](4.4-dit-structure-rules.html)** | Defines the hierarchical relationships between entries |
+| **[NameForms (e)](4.7-name-forms.html)** | Defines the **AttributeType**s that may be use in a **RDN** |
+| **[MatchingRuleUses (e)](4.6-matching-rule-uses.html)** | Defines the **AttributeType**s that can be used for a **MatchingRule** |
+| _**[SyntaxChecker (e)]()**_ | The function that do the check on values |
+| _**[Normalizer (e)]()**_ | The function that normalize the values |
+| _**[LdapComparator (e)]()**_ | The function that compare two values |
+
+The last three elements are ApacheDS specific.
+
+All those elements have some tight relationships. The following schema expose all the relations between all those elements :
+
+![](images/SchemaObjects.png)
+
+## Java Class hierarchy
+
+Here is the relation between the various Java classes that are implementing the various **SchemaObject**s elements :
+
+![](images/SchemaObjectHier.png)
+
+As we can see, the 3 specific **SchemaObject**s are derived from a **LoadableSchemaObject** abstract class, which allows the developper to inject a new instance of one of those 3 **SchemaObject**s.
+
+From teh developper point of view, the interesting methods are the following :
+
+* equals() : checks that two **SchemaObject** instances are equals
+* getDescription() : gets the DESC part of the **SchemaObject**
+* getExtension(String) : gets the given extension (X-abc)
+* getExtensions() : gets all the extensions for this **SchemaObject**
+* getName() : gets the first name fo this **SchemaObject**
+* getNames() : gets all the nales for this **SchemaObject**
+* getObjectType() : gets the **SchemaObject** type
+* getOid() : gets the **SchemaObject** OID
+* getSchemaName() : gets the associated shcema name, if any
+* getSpecification() : gets the OpenLDAP synatx specification for this **SchemaObject**
+* hasExtension(String) : tells if this **SchemaObject** has some extensions
+* isDisabled() : tells if this **SchemaObject** is disabled
+* isEnabled() : tells if this **SchemaObject** is enabled
+* isObsolete() : tells if this **SchemaObject** is obsolete and should not been used
+* isReadOnly() : tells if this **SchemaObject** can't be modified
+
+All those methods are available for all the **SchemaObject**. There are specific methods available for each specific **SchemaObject**, taht will be exposed in the dedicated pages.
diff --git a/source/api/user-guide/4.2.1.1-attribute-types.md b/source/api/user-guide/4.2.1.1-attribute-types.md
new file mode 100644
index 0000000..0021b66
--- /dev/null
+++ b/source/api/user-guide/4.2.1.1-attribute-types.md
@@ -0,0 +1,67 @@
+---
+title: 4.2.1.1 - AttributeTypes
+navPrev: 4.2.1-schema-objects.html
+navPrevText: 4.2.1 - Schema Objects
+navUp: 4.2.1-schema-object.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.2-object-classes.html
+navNextText: 4.2.1.2 - ObjectClasses
+---
+
+# 4.2.1.1 - AttributeTypes
+
+The **AttributeType** **SchemaObject** exposes extra parameters. Here is the description as found in RFC 4512 :
+
+ 4.1.2. Attribute Types
+
+ Attribute Type definitions are written according to the ABNF:
+
+ AttributeTypeDescription = LPAREN WSP
+ numericoid ; object identifier
+ [ SP "NAME" SP qdescrs ] ; short names (descriptors)
+ [ SP "DESC" SP qdstring ] ; description
+ [ SP "OBSOLETE" ] ; not active
+ [ SP "SUP" SP oid ] ; supertype
+ [ SP "EQUALITY" SP oid ] ; equality matching rule
+ [ SP "ORDERING" SP oid ] ; ordering matching rule
+ [ SP "SUBSTR" SP oid ] ; substrings matching rule
+ [ SP "SYNTAX" SP noidlen ] ; value syntax
+ [ SP "SINGLE-VALUE" ] ; single-value
+ [ SP "COLLECTIVE" ] ; collective
+ [ SP "NO-USER-MODIFICATION" ] ; not user modifiable
+ [ SP "USAGE" SP usage ] ; usage
+ extensions WSP RPAREN ; extensions
+
+ usage = "userApplications" / ; user
+ "directoryOperation" / ; directory operational
+ "distributedOperation" / ; DSA-shared operational
+ "dSAOperation" ; DSA-specific operational
+
+The follwing methods have been added to cover ones not already present within the **SchemaObject** interface :
+
+* getEquality() : returns the **MatchingRule** instance used to control the equality of the **AttributeType**
+* getEqualityName() : returns the name of the EQUALITY **MatchingRule**.
+* getEqualityOid() : returns the OID of the EQUALITY **MatchingRule**.
+* getOrdering() : returns the **MatchingRule** instance used to control the ordering of the *AttributeType**
+* getOrderingName() : returns the name of the ORDERING **MatchingRule**.
+* getOrderingOid() : returns the OID of the ORDERING **MatchingRule**.
+* getSubstring() : returns the **MatchingRule** instance used to match a substring from the **AttributeType**
+* getSubstringName() : returns the name of the SUBSTR **MatchingRule**.
+* getSubstringOid() : returns the OID of the SUBSTR **MatchingRule**.
+* getSuperior() : returns the **AttributeType** instance that this instance inherits from
+* getSuperiorName() : returns the superior **AttributeType**'s name
+* getSuperiorOid() : returns the superior **AttributeType**'s OID
+* getSyntax() : returns the associated **LdapSyntax** instance (or the parent's **AttributeType**'s one)
+* getSyntaxLength() : returns the maximum length for the **AttributeType** value
+* getSyntaxName() : returns the associated **LdapSyntax** instance's name
+* getSyntaxOid() : returns the associated **LdapSyntax** instance's OID
+* getUsage() : returns the usage (one of (USER_APPLICATIONS, DIRECTORY_OPERATION, DISTRIBUTED_OPERATION and DSA_OPERATION)
+* isAncestorOf(AttributeType) : tells if the **AttributeType** is the superior of another one
+* isCollective() : tells if the **AttributeType** is a collective attribute
+* isDescendantOf(AttributeType)
+* isOperational() : tells if the **AttributeType** is an operational attribute (one of DIRECTORY_OPERATION, DISTRIBUTED_OPERATION and DSA_OPERATION)
+* isSingleValued() : tells if the **AttributeType** only accept single values
+* isUser() : tells if the **AttributeType** is a USER_APPLICATIONS attribute
+* isUserModifiable() : tells if the **AttributeType** is modifiable or not
+
+What is important to know is that an **AttributeType** may inherit some characteristics from a **SUP** **AttributeType**. For example, the **Syntax**, **MatchingRules**, etc. In any case, if you don't define the specific characteristics for a given **AttributeType**, they'll be inherited from its parent -- if there is one.
diff --git a/source/api/user-guide/4.2.1.2-object-classes.md b/source/api/user-guide/4.2.1.2-object-classes.md
new file mode 100644
index 0000000..cbcad00
--- /dev/null
+++ b/source/api/user-guide/4.2.1.2-object-classes.md
@@ -0,0 +1,45 @@
+---
+title: 4.2.1.2 - ObjectClasses
+navPrev: 4.2.1.1-attribute-types.html
+navPrevText: 4.2.1.1 - AttributeTypes
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.3-syntaxes.html
+navNextText: 4.2.1.3 - Syntaxes
+---
+
+# 4.2.1.2 - ObjectClasses
+
+The **ObjectClass** represents the list of mandatory and optional **AttributeType**s
+
+Here is the description as found in RFC 4512 :
+
+ ObjectClassDescription = LPAREN WSP
+ numericoid ; object identifier
+ [ SP "NAME" SP qdescrs ] ; short names (descriptors)
+ [ SP "DESC" SP qdstring ] ; description
+ [ SP "OBSOLETE" ] ; not active
+ [ SP "SUP" SP oids ] ; superior object classes
+ [ SP kind ] ; kind of class
+ [ SP "MUST" SP oids ] ; attribute types
+ [ SP "MAY" SP oids ] ; attribute types
+ extensions WSP RPAREN
+
+ kind = "ABSTRACT" / "STRUCTURAL" / "AUXILIARY"
+
+Each **ObjectClass** as a type (ABSTRACT, STRUCTURAL or AUXILIARY) and may inherit from another **ObjectClass**
+
+The important part of the **ObjectClass** is the **AttributeType** definition : not only does it list all of the **AttributeTypes** defined in the list itself, but it also contains the inherited attribute types. Note that you may have an optional **AttributeType** defined in a parent, which is made mandatory.
+
+The available methods are :
+
+* getMayAttributeTypeOids() : gets the list of optional **AttributeType**s (proper and inherited)
+* getMayAttributeTypes() : gets the list of optional **AttributeType**s' OID(proper and inherited)
+* getMustAttributeTypeOids() : gets the list of mandatory **AttributeType**s' OID (proper and inherited)
+* getMustAttributeTypes() : gets the list of mandatory **AttributeType**s (proper and inherited)
+* getSuperiorOids() : gets the list of inherited **ObjectClass**es' OIDs (the full hierarchy)
+* getSuperiors() : gets the list of inherited **ObjectClass**es (the full hierarchy)
+* getType() : returns the **ObjectClass** type (one of ABSTRACT, AUXILIARY or STRUCTURAL)
+* isAbstract() : tells if the **ObjectClass* is ABSTRACT.
+* isAuxiliary() : tells if the **ObjectClass* is AUXILIARY.
+* isStructural() : tells if the **ObjectClass* is STRUCTURAL.
diff --git a/source/api/user-guide/4.2.1.3-syntaxes.md b/source/api/user-guide/4.2.1.3-syntaxes.md
new file mode 100644
index 0000000..a1d648b
--- /dev/null
+++ b/source/api/user-guide/4.2.1.3-syntaxes.md
@@ -0,0 +1,29 @@
+---
+title: 4.2.1.3 - Syntaxes
+navPrev: 4.2.1.2-object-classes.html
+navPrevText: 4.2.1.2 - ObjectClasses
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.4-matching-rules.html
+navNextText: 4.2.1.4 - MatchingRules
+---
+
+# 4.2.1.3 - Syntaxes
+
+The **LdapSyntax** class implements the LDAP **Syntax**s schema objects. A **Syntax** defines constraints applied to the **AttributeType** value. Here is the RFC description of a **Syntax** :
+
+ SyntaxDescription = LPAREN WSP
+ numericoid ; object identifier
+ [ SP "DESC" SP qdstring ] ; description
+ extensions WSP RPAREN ; extensions
+
+The important part of the **Syntax** is its **OID** which is used in the **AttributeType** and **MatchingRule**.
+
+In order to enforce a **Syntax**, the **LDAP API** is associated with a **SyntaxChecker**, which is a Java class (see the chapter about ApacheDS Schema Elements).
+
+## Methods
+
+The are the two most important methods that you might need:
+
+* getSyntaxChecker() : retreive the associated class that is used to check a syntax
+* isHumanReadable() : tells if the AttributeType is a String or a byte[]
diff --git a/source/api/user-guide/4.2.1.4-matching-rules.md b/source/api/user-guide/4.2.1.4-matching-rules.md
new file mode 100644
index 0000000..7a48691
--- /dev/null
+++ b/source/api/user-guide/4.2.1.4-matching-rules.md
@@ -0,0 +1,31 @@
+---
+title: 4.2.1.4 - MatchingRules
+navPrev: 4.2.1.3-syntaxes.html
+navPrevText: 4.2.1.3 - Syntaxes
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.5-dit-content-rules.html
+navNextText: 4.2.1.5 - DITContentRules
+---
+
+# 4.2.1.4 - MatchingRules
+
+A **MatchingRule** is used when processing search requests using **Filter**s, or a **Compare** or during **Modify** operations. An **AttributeType** defines up to 3 types of **MatchingRule**s:
+
+* EQUALITY : for comparisons for equality
+* ORDERING : for comparisons involving the <= or >= operators
+* SUBSTR : for comparisons involving substrings, like '*xyz' or 'x*z'
+
+There are a few extra parameters that are defined in the **MatchingRule** class:
+
+* getSyntax() : gets the **Syntax** instance associated with the **MatchingRule**
+* getSyntaxOid() : gets the **Syntax** OID associated with the **MatchingRule**
+
+We also have 2 specific methods that are used to compare or normalize a value:
+
+* getLdapComparator() : gets the **LdapComparator** to use to compare 2 values
+* getNormalizer() : gets the **Normalizer** used to normalize a value
+
+Those are convenient methods, specifically when you need to compare two values.
+
+A **MatchingRule** instance is associated with a **LdapSyntax** and a **Normalizer** because it may need to get information about the attribute value check and normalization. It also contains a reference to the associated **LdapComparator**.
diff --git a/source/api/user-guide/4.2.1.5-dit-content-rules.md b/source/api/user-guide/4.2.1.5-dit-content-rules.md
new file mode 100644
index 0000000..f2fce7d
--- /dev/null
+++ b/source/api/user-guide/4.2.1.5-dit-content-rules.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.1.5 - DitContentRules
+navPrev: 4.2.1.4-matching-rules.html
+navPrevText: 4.2.1.4 - MatchingRules
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - SchemaObjects
+navNext: 4.2.1.6-dit-structure-rules.html
+navNextText: 4.2.1.6 - DitStructureRules
+---
+
+# 4.2.1.5 - DitContentRules
+
+Not yet supported...
diff --git a/source/api/user-guide/4.2.1.6-dit-structure-rules.md b/source/api/user-guide/4.2.1.6-dit-structure-rules.md
new file mode 100644
index 0000000..0ccf62b
--- /dev/null
+++ b/source/api/user-guide/4.2.1.6-dit-structure-rules.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.1.6 - DitStructureRules
+navPrev: 4.2.1.5-dit-content-rules.html
+navPrevText: 4.2.1.5 - DitContentRules
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.7-matching-rule-uses.html
+navNextText: 4.2.1.7 - MatchingRuleUses
+---
+
+# 4.2.1.6 - DitStructureRules
+
+Not yet supported...
diff --git a/source/api/user-guide/4.2.1.7-matching-rule-uses.md b/source/api/user-guide/4.2.1.7-matching-rule-uses.md
new file mode 100644
index 0000000..f1548eb
--- /dev/null
+++ b/source/api/user-guide/4.2.1.7-matching-rule-uses.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.1.7 - MatchingRuleUses
+navPrev: 4.2.1.6-dit-structure-rules.html
+navPrevText: 4.2.1.6 - DitStructureRules
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.8-name-forms.html
+navNextText: 4.2.1.8 - NameForms
+---
+
+# 4.2.1.7 - MatchingRuleUses
+
+Not yet supported...
diff --git a/source/api/user-guide/4.2.1.8-name-forms.md b/source/api/user-guide/4.2.1.8-name-forms.md
new file mode 100644
index 0000000..e5989d7
--- /dev/null
+++ b/source/api/user-guide/4.2.1.8-name-forms.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.1.8 - NameForms
+navPrev: 4.2.1.7-matching-rule-use.html
+navPrevText: 4.2.1.7 - Matching Rule Uses
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.1.9-apacheds-schema-elements.html
+navNextText: 4.2.1.9 - ApacheDS Schema Elements
+---
+
+# 4.2.1.8 - NameForms
+
+Not yet supported...
diff --git a/source/api/user-guide/4.2.1.9-apacheds-schema-elements.md b/source/api/user-guide/4.2.1.9-apacheds-schema-elements.md
new file mode 100644
index 0000000..a278625
--- /dev/null
+++ b/source/api/user-guide/4.2.1.9-apacheds-schema-elements.md
@@ -0,0 +1,50 @@
+---
+title: 4.2.1.9 - ApacheDS Schema Element
+navPrev: 4.2.1.8-name-forms.html
+navPrevText: 4.2.1.8 - Name Forms
+navUp: 4.2.1-schema-objects.html
+navUpText: 4.2.1 - Schema Objects
+navNext: 4.2.2-registries.html
+navNextText: 4.2.2 - Registries
+---
+
+# 4.2.1.9 - ApacheDS Schema Element
+
+We have defined 3 more schema elements that are needed to use the **SchemaManager**:
+* SyntaxChecker : used to check a value's syntax
+* Normalizer : used to normalize a value before a comparison
+* LdapComparator : used to compare two values for a given syntax
+
+## SyntaxChecker
+
+This class exposes this method:
+
+* isValidSyntax(Object): tells if the value is correct
+
+## Normalizer
+
+This class is used to normalize values into a canonical form. This is a process exposed in [RFC4518|https://tools.ietf.org/html/rfc4518]. Basically, each String is passed trhough a 6-step process:
+
+* Transcode
+* Map
+* Normalize
+* Prohibit
+* Check Bidi (Bidirectional)
+* Insignificant Character Handling
+
+This can be done using one of these two methods:
+
+* normalize(String) : normalize a String
+* normalize(Value<?>) : normalize a Value, which can be a String or a byte[]
+
+This class is used internally when comparing two values, but you should not need it.
+
+## LdapComparator
+
+This class is used to compare two values whenever their syntax are the same. Here is the method that does it:
+
+* equals(Object) : says if a value is equal to another one.
+
+Note because the **LdapComparator** class implements the **Comparator** interface, one can compare two values using the following method:
+
+* compare( v1, v2 ): compares two values
diff --git a/source/api/user-guide/4.2.2-registries.md b/source/api/user-guide/4.2.2-registries.md
new file mode 100644
index 0000000..bb4c51a
--- /dev/null
+++ b/source/api/user-guide/4.2.2-registries.md
@@ -0,0 +1,17 @@
+---
+title: 4.2.2 - Registries
+navPrev: 4.2.1-schema-objects.html
+navPrevText: 4.2.1 Schema Objects
+navUp: 4.2-schema-manager.html
+navUpText: 4.2 - Schema Manager
+navNext: 4.2.3-schema-loader.html
+navNextText: 4.2.3 - Schema Loader
+---
+
+# 4.2.2 - Registries
+
+The **Registries** are the place where all **SchemaObject**s are stored and retrieved from. It contains a registry per **SchemaObject**, plus a global registry which is used to retreive a **SchemaObject** from its OID (the OID is unique), and a list of the loaded schemas.
+
+Basically, it's the data center of the **SchemaManager**. When you call **SchemaManager.getAttributeType( String )**, the **SchemaManager** will look into the **AttributeTypeRegistry** for the **AttributeType** instance associated with the name or OID.
+
+You usually won't need to manipulate this class at all.
diff --git a/source/api/user-guide/4.2.3-schema-loader.md b/source/api/user-guide/4.2.3-schema-loader.md
new file mode 100644
index 0000000..4506dcc
--- /dev/null
+++ b/source/api/user-guide/4.2.3-schema-loader.md
@@ -0,0 +1,13 @@
+---
+title: 4.2.3 - SchemaLoader
+navPrev: 4.2.2-registries.html
+navPrevText: 4.2.2 - Registries
+navUp: 4.2-schema-manager.html
+navUpText: 4.2 - Schema Manager
+navNext: 5-ldap-security.html
+navNextText: 5 - LDAP Security
+---
+
+# 4.2.3 - SchemaLoader
+
+The **SchemaLoader** is a utility class that loads a **Schema** into the **SchemaManager**. It comes in many flavors, depending on the source containing the **Schema**.
diff --git a/source/api/user-guide/5-ldap-security.md b/source/api/user-guide/5-ldap-security.md
new file mode 100644
index 0000000..710b67c
--- /dev/null
+++ b/source/api/user-guide/5-ldap-security.md
@@ -0,0 +1,32 @@
+---
+title: 5 - LDAP Security
+navPrev: 4-schema-management.html
+navPrevText: 4 - Schema Management
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 6-ldap-data-structures.html
+navNextText: 6 - LDAP Data Structures
+---
+
+# 5 - LDAP Security
+
+**LDAP** databases store critical information that must be kept secure. The **Apache LDAP API** can access the data securely while in flight but can't protect it while at rest -- that's for the database system itself to do.
+
+Generally speaking when it comes to securing a system, we are addressing the three **A**s: Authentication, Authorization and Auditing.
+
+The only aspect we will focus on is the **Authentication** part, because the **LDAP** protocol does not address the other two, when it comes to an **API**. We will talk about authorization a little bit in the last chapter.
+
+Another aspect of security is encryption:
+- securing the communication between the client and the server
+- password hash
+
+Last, but not least, we have seen how to perform a simple bind to an **LDAP** server using a name and a password. There are other ways to bind, using **SASL**. We will also explain how to use certificates in **SSL/StartTLS**.
+
+## Contents
+
+* [5.1 - LDAPS](5.1-ldaps.html)
+* [5.2 - StartTLS (e)](5.2-start-tls.html)
+* [5.3 - SASL Bind](5.3-sasl-bind.html)
+* [5.4 - Password handling](5.4-password-handling.html)
+* [5.5 - Certificates](5.5-certificates.html)
+* [5.6 - ACI and ACLs (e)](5.6-aci-and-acls.html)
diff --git a/source/api/user-guide/5.1-ldaps.md b/source/api/user-guide/5.1-ldaps.md
new file mode 100644
index 0000000..62228ac
--- /dev/null
+++ b/source/api/user-guide/5.1-ldaps.md
@@ -0,0 +1,107 @@
+---
+title: 5.1 - LDAPS
+navPrev: 5-ldap-security.html
+navPrevText: 5 - LDAP Security
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 5.2-start-tls.html
+navNextText: 5.2 - StartTLS
+---
+
+# 5.1 - LDAPS
+
+**LDAP** supports **SSL**, it's called **LDAPS**, and it uses a dedicated port. As of today, and since 2000, **LDAPS** is deprecated and **StartTLS** should be used.
+
+That being said, many servers accept **LDAPS**, and the **Apache LDAP API** supports it.
+
+## How does it work ?
+
+The **SSL** protocol ensures that data is transmitted encrypted, and guarantees that the data received is valid. Noone can capture this data and read it, assuming the ciphers used are of sufficient strength.
+
+With **SSL**, a dialog between the client and the server occurs, and when both agree on the particular cipher to use, then all subsequent data is encrypted. This dialog may include a mutual validation of their X.509 certificates.
+
+## Protocols
+
+There are many version that can be used, but the idea is to use the most recent one, if the server supports it. In any case, as we depend on **Java**, we are also limited by the supported version on the client side. Here are all of the existing versions, and their statuses:
+
+| SSLversion | Java 7 Client | Java 7 Server | Java 8 Client | Java 8 Server |
+|---|---|---|---|---|
+| 2.0 | N/A | N/A | N/A | N/A |
+| 3.0 | Disabled | Disabled | N/A | N/A |
+| 3.1 (aka TLSv1) | **Enabled** | **Enabled** | **Enabled** | **Enabled** |
+| 3.2 (aka TLSv1.1 | Disabled | **Enabled** | **Enabled** | **Enabled** |
+| 3.3 (aka TLSv1.2) | Disabled | **Enabled** | **Enabled** | **Enabled** |
+
+(_Disabled_ means it's not active by default, and so must be activated explicitly).
+
+The default is Java will choose the best fit, assuming that it always starts with the newest version (**TLSv1.2**).
+
+Still, you can enforce the version used -- if needed.
+
+## A quick primer
+
+Here is all that is needed to get **LDAPS** connections established with a server :
+
+ try ( LdapConnection connection = new LdapNetworkConnection( "server-name", 636, true ) )
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ assertTrue( connection.isAuthenticated() );
+ }
+
+It's as simple as that! The **636** port is the default **LDAPS** port for standard **LDAP** servers, when running as **root**, and for **ApacheDS** you must pick **10636**. The **true** flag is set to secure the connection. You don't need to close the connection, it will be done automatically upon exiting the try{...} block.
+
+By default, the selected protocol is **TLS**, and the server's certificate is not verified.
+
+## A more sophisticated sample
+
+It's possible to have more control on the **SSL** configuration, and specifically to provide a specific **TrustManager** :
+
+ try ( LdapConnection connection = new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPortSSL(),
+ new NoVerificationTrustManager() ) )
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ assertTrue( ((LdapNetworkConnection)connection).getConfig().isUseSsl() );
+ assertTrue( connection.isAuthenticated() );
+ }
+
+Here, we use the _NoVerificationTrustManager_ class, but you may define your own implementation of it. The **Fortress** project uses [this class](https://github.com/apache/directory-fortress-core/blob/master/src/main/java/org/apache/directory/fortress/core/ldap/LdapClientTrustStoreManager.java).
+
+## Using a configuration
+
+One step further : you can define a dedicated configuration that is passed to the constructor. Many parameters can be defined:
+
+* the enabled cipher suites: a list of ciphers that may be used (like "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", etc)
+* the enabled protocols: a list of protocals that may be used ( "SSLv3", "TLS", "TLSv1", "TLSv1.1", "TLSv1.2")
+* the KeyManager instances
+* the SecureRandom instance
+* the SSL protocol to use: one of the enabled protocols
+* the TrustManager instances
+
+All these parameters are configured using the _LdapConnectionConfig_ class :
+
+ LdapConnectionConfig sslConfig = new LdapConnectionConfig();
+ sslConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
+ sslConfig.setUseSsl( true );
+ sslConfig.setLdapPort( getLdapServer().getPortSSL() );
+ sslConfig.setTrustManagers( new NoVerificationTrustManager() );
+
+ try ( LdapConnection connection = new LdapNetworkConnection( sslConfig ) )
+ {
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ assertTrue( ((LdapNetworkConnection)connection).getConfig().isUseSsl() );
+ assertTrue( connection.isAuthenticated() );
+ }
+
+## LDAPS or startTLS ?
+
+The important point to understand with **LDAPS** is that every request being exchanged between the client and the server is encrypted, because its underlying transport is encrypted. That means you can't start communicating with the LDAP server before the connection is secured.
+
+It has a few drawbacks:
+- first of all, it has an added CPU cost, as everything has to be encrypted and decrypted.
+- second, it requires a dedicated port, thus some specific routing rules (firewall, load balancers, etc)
+- third, it's a all of nothing choice. If you want to return to a non-encrypted communication, you must use another connection.
+
+This is the why the **startTLS** extended operation should be used instead.
diff --git a/source/api/user-guide/5.2-start-tls.md b/source/api/user-guide/5.2-start-tls.md
new file mode 100644
index 0000000..ba3ff32
--- /dev/null
+++ b/source/api/user-guide/5.2-start-tls.md
@@ -0,0 +1,77 @@
+---
+title: 5.2 - StartTLS
+navPrev: 5.1-ldaps.html
+navPrevText: 5.1 - LDAPS
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 5.3-sasl-bind.html
+navNextText: 5.3 - SASL Bind
+---
+
+# 5.2 - StartTLS
+
+As we have seen in the previous chapter, **LDAPS** has some drawbacks. There is a better alternative for securing communications between the client and server -- **startTLS**.
+
+The idea is to use an existing connection to send a message to the server and request it to be encrypted. We keep going with the current connection, on the same port, but the exchanged data will continue as encrypted.
+
+The **startTLS** extended operation is used for this. It's a pure LDAP request that blocks other requests on the connection until it becomes secured. Of course, if some operations are pending, the operation will not be executed until the pending operations are completed.
+
+## How to use it
+
+It's quite simple. You just have to inform an opened connection to send the **startTLS** extended operation. It can be done at any time. Here is a quick example:
+
+ try ( LdapNetworkConnection connection =
+ new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() ) )
+ {
+ connection.connect();
+
+ Entry admin = connection.lookup( "uid=admin,ou=system" );
+
+ // startTLS
+ connection.startTls();
+ ...
+
+As you can see, we'll used the _startTLS()_ method, and it occurred in the middle of an LDAP session. (There previously was data transmission with the server in clear text).
+
+You can also send the _startTLS_ request prior to a bind, protecting the entire session:
+
+ try ( LdapNetworkConnection connection =
+ new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() ) )
+ {
+ // startTLS
+ connection.startTls();
+
+ Entry admin = connection.lookup( "uid=admin,ou=system" );
+ ...
+
+That's about it...
+
+## Advanced usage
+
+We just saw basic usage of the **startTLS** extended operation. Keep in mind that behind the scene, a **TLS** session will be established, which requires some negotiation between the client and the server. It's not different from the establishement of an **LDAPS** connection, except that we're doing it on top of an existing **LDAP** connection. Still, the client and the server must exchange ciphers, certificates, and agree on which protocol version to use. You probably need more control.
+
+The **startTLS()** method uses an **LdapConnectionConfig** instance for parameters in order to define things like -- **TrustManagers**, allowed ciphers, enabled protocol versions, **KeyManager** instances, etc. You simply need an **LdapConnectionConfig** instance, and load it with instructions. for example, if you want to use a specific **TrustManager** that doesn't verify the server's certificate:
+
+ LdapConnectionConfig tlsConfig = new LdapConnectionConfig();
+ tlsConfig.setLdapHost( Network.LOOPBACK_HOSTNAME );
+ tlsConfig.setLdapPort( getLdapServer().getPort() );
+ tlsConfig.setTrustManagers( new NoVerificationTrustManager() );
+
+ try ( LdapNetworkConnection connection =
+ new LdapNetworkConnection( tlsConfig ) )
+ {
+ // Connect
+ connection.connect();
+
+ // At this point, we are not oo a secured connection
+ connection.bind( "uid=admin,ou=system", "secret" );
+
+ // At this point, we are not oo a secured connection. Let's secure it
+ connection.startTls();
+ ...
+
+In this example, the **startTls** call uses the parameter that was loaded into the _tlsConfig_ instance.
+
+## Here's what isn't supported
+
+The [LDAP StartTLS RFC](https://tools.ietf.org/html/rfc2830) requires more than securing connections. Typically, it's possible to stop securing a connection, using a **Graceful Closure** operation. That feature isn't currently supported.
diff --git a/source/api/user-guide/5.3-sasl-bind.md b/source/api/user-guide/5.3-sasl-bind.md
new file mode 100644
index 0000000..f8e4a3a
--- /dev/null
+++ b/source/api/user-guide/5.3-sasl-bind.md
@@ -0,0 +1,100 @@
+---
+title: 5.3 - SASL Bind
+navPrev: 5.2-start-tls.html
+navPrevText: 5.2 - StartTLS
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 5.4-password-handling.html
+navNextText: 5.4 - Password Handling
+---
+
+>**Note:** Work in progress...
+
+# 5.3 - SASL Bind
+
+*SASL* is defined by [RFC 4422](https://tools.ietf.org/html/rfc4422) which obsoletes [RFC2222](https://tools.ietf.org/html/rfc2222). There are also a few RFCs that are related to *SASL*, they are listed in the next paragraph.
+
+In any case, as *ApacheDS* and the *Apache LDAP API* are based on *Java*, we depend on the *Java* *SASL* impementation. Typically, this is handled by the *SunSASL* provider, which only support the following mechanisms, as of Java 8 :
+
+* PLAIN (Client)
+* CRAM-MD5 (Client/Server)
+* DIGEST-MD5 (Client/Server)
+* GSSAPI (Client/Server)
+* EXTERNAL (Client)
+
+Note that in *Java 9*, those mechanisms are spread in two different providers, the *GSSAPI* mechanism being handled by the *JdkSASL* provider.
+
+We currently don't support any other provider.
+
+## SASL Bind handling
+
+The *SASL* framework may require more than one *BindRequest*/*BindResponse* to be exchanched, as ther server may need more information from the client. The client must be ready to deal with such situation, by controling the resturned result : *SASL_BIND_IN_PROGRESS* means more is required.
+
+In any case, the client must send a first *BindRequest* with the proper information. We have dedicated methods to do so, based on the *SASL* mechanism to use :
+
+* bindSaslPlain() : *PLAIN* mechanism
+* bindSaslCramMd5() : *CRAM-MD5* mechanism
+* bindSaslDigestMd5() : *DIGEST-MD5* mechanism
+* bindSaslGssApi() : *GSSAPI* mechanism
+* bindSaslExternal() : *EXTERNAL* mechaism
+
+We don't support the *SASL* *ANONYMOUS* mechanism.
+
+There is also a more generic method that anyone can use with any mechanism, assuming we have a class implementing it :
+
+* bindSasl( Saslrequest )
+
+It's just about using an instance of a class extending the *SaslRequest* interface.
+
+
+Here is an example of a *SASL* bind, where we assume we have an entry which *uid* is "hnelson", and a *userPassword* which is "secret" (note that the password must be in clear text in the server) :
+
+ :::java
+ LdapNetworkConnection connection = new LdapNetworkConnection( Network.LOOPBACK_HOSTNAME, getLdapServer().getPort() );
+
+ BindResponse resp = connection.bindSaslCramMd5( "hnelson", "secret" );
+ assertEquals( ResultCodeEnum.SUCCESS, resp.getLdapResult().getResultCode() );
+
+
+
+## RFCs
+
+Here are the list of RFCs related to *SASL*:
+
+![](../../images/icons/information.gif) : Informational
+
+![](../../images/icons/lightbulb.gif) : Historic
+
+![](../../images/icons/lightbulb_on.gif) : Proposed Standard
+
+![](../../images/icons/warning.gif) : Experimental
+
+![](../../images/icons/thumbs_up.gif) : Best current practice
+
+
+### Obsolete RFCs
+
+| RFC | Description | Obsoleted by | Status |
+|---|---|---|---|
+| [RFC 2222](https://tools.ietf.org/html/rfc2222) | Simple Authentication and Security Layer (SASL) | [RFC 4422](https://tools.ietf.org/html/rfc4422), [RFC 4752](https://tools.ietf.org/html/rfc4752) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 2245](https://tools.ietf.org/html/rfc2245) | Anonymous SASL Mechanism | [RFC 4505](https://tools.ietf.org/html/rfc4505) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 2831](https://tools.ietf.org/html/rfc2831) | Using Digest Authentication as a SASL Mechanism | [RFC 4505](https://tools.ietf.org/html/rfc4505) | ![](../../images/icons/lightbulb.gif) |
+| [RFC 4013](https://tools.ietf.org/html/rfc4013) | SASLprep: Stringprep Profile for User Names and Passwords | [RFC 7613](https://tools.ietf.org/html/rfc7613)| ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 7613](https://tools.ietf.org/html/rfc7613) | Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords | [RFC 8265](https://tools.ietf.org/html/rfc8265) | ![](../../images/icons/lightbulb_on.gif) |
+
+### Active RFCs
+
+| RFC | Description | Status |
+|---|---|---|---|
+| [RFC 2444](https://tools.ietf.org/html/rfc2444) | The One-Time-Password SASL Mechanism | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 2808](https://tools.ietf.org/html/rfc2808) | The SecurID(r) SASL Mechanism | ![](../../images/icons/information.gif) |
+| [RFC 4422](https://tools.ietf.org/html/rfc4422) | Simple Authentication and Security Layer (SASL) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 4505](https://tools.ietf.org/html/rfc4505) | Anonymous Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 4616](https://tools.ietf.org/html/rfc4616) | The PLAIN Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 4752](https://tools.ietf.org/html/rfc4752) | The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer (SASL) Mechanism | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 5801](https://tools.ietf.org/html/rfc58à&) | Using Generic Security Service Application Program Interface (GSS-API) Mechanisms in Simple Authentication and Security Layer (SASL): The GS2 Mechanism Family | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 5802](https://tools.ietf.org/html/rfc5802) | Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 6331](https://tools.ietf.org/html/rfc6331) | Moving DIGEST-MD5 to Historic | ![](../../images/icons/information.gif)|
+| [RFC 7677](https://tools.ietf.org/html/rfc7677) | SCRAM-SHA-256 and SCRAM-SHA-256-PLUS Simple Authentication and Security Layer (SASL) Mechanisms | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC 8265](https://tools.ietf.org/html/rfc8265) | Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords | ![](../../images/icons/lightbulb_on.gif) |
+
diff --git a/source/api/user-guide/5.4-password-handling.md b/source/api/user-guide/5.4-password-handling.md
new file mode 100644
index 0000000..4259087
--- /dev/null
+++ b/source/api/user-guide/5.4-password-handling.md
@@ -0,0 +1,13 @@
+---
+title: 5.4 - Password Handling
+navPrev: 5.3-sasl-bind.html
+navPrevText: 5.3 - SASL Bind
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 5.5-certificates.html
+navNextText: 5.5 - Certificates
+---
+
+# 5.4 - Password Handling
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/5.5-certificates.md b/source/api/user-guide/5.5-certificates.md
new file mode 100644
index 0000000..f7f6ebc
--- /dev/null
+++ b/source/api/user-guide/5.5-certificates.md
@@ -0,0 +1,13 @@
+---
+title: 5.5 - Certificates
+navPrev: 5.4-password-handling.html
+navPrevText: 5.4 - Password Handling
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 5.6-aci-and-acls.html
+navNextText: 5.6 - ACI and ACLs
+---
+
+# 5.5 - Certificates
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/5.6-aci-and-acls.md b/source/api/user-guide/5.6-aci-and-acls.md
new file mode 100644
index 0000000..3da8bb0
--- /dev/null
+++ b/source/api/user-guide/5.6-aci-and-acls.md
@@ -0,0 +1,13 @@
+---
+title: 5.6 - ACI and ACLs
+navPrev: 5.5-certificates.html
+navPrevText: 5.5 - Certificates
+navUp: 5-ldap-security.html
+navUpText: 5 - LDAP Security
+navNext: 6-ldap-data-structures.html
+navNextText: 6 - LDAP Data Structures
+---
+
+# 5.6 - ACI and ACLs
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6-ldap-data-structures.md b/source/api/user-guide/6-ldap-data-structures.md
new file mode 100644
index 0000000..f9c7d22
--- /dev/null
+++ b/source/api/user-guide/6-ldap-data-structures.md
@@ -0,0 +1,49 @@
+---
+title: 6 - LDAP Data Structures
+navPrev: 5-ldap-security.html
+navPrevText: 5 - LDAP Security
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 7-requests-responses.html
+navNextText: 7 - Requests and Responses
+---
+
+# 6 - LDAP Data Structures (...)
+
+## Contents
+
+* [6.1 - AdministrativePoint](6.1-administrative-point.html)
+* [6.2 - AdministrativeRole](6.2-administrative-role.html)
+* [6.3 - Attribute](6.3-attribute.html)
+* [6.4 - AttributeType](6.4-attribute-type.html)
+* [6.5 - Ava](6.5-ava.html)
+* [6.6 - Csn](6.6-csn.html)
+* [6.7 - Control](6.7-control.html)
+* [6.8 - Cursor](6.8-cursor.html)
+* [6.9 - Dn](6.9-dn.html)
+* [6.10 - DITContentRule](6.10-dit-content-rule.html)
+* [6.11 - DITStructureRule](6.11-dit-structure-rule.html)
+* [6.12 - Entry](6.12-entry.html)
+* [6.13 - ExprNode](6.13-expr-node.html)
+* [6.14 - LdapComparator](6.14-ldap-comparator.html)
+* [6.15 - LdapResult](6.15-ldap-result.html)
+* [6.16 - LdapSyntax](6.16-ldap-syntax.html)
+* [6.17 - LdapUrl](6.17-ldap-url.html)
+* [6.18 - LdifControl](6.18-ldif-control.html)
+* [6.19 - LdifEntry](6.19-ldif-entry.html)
+* [6.20 - MatchingRule](6.20-matching-rule.html)
+* [6.21 - MatchingRuleUse](6.21-matching-rule-use.html)
+* [6.22 - Message](6.22-message.html)
+* [6.23 - Modification](6.23-modification.html)
+* [6.24 - NameForm](6.24-name-form.html)
+* [6.25 - Normalizer](6.25-normalizer.html)
+* [6.26 - ObjectClass](6.26-object-class.html)
+* [6.27 - Oid](6.27-oid.html)
+* [6.28 - Rdn](6.28-rdn.html)
+* [6.29 - Referral](6.29-referral.html)
+* [6.30 - Refinment](6.30-refinment.html)
+* [6.31 - SchemaManager](6.31-schema-manager.html)
+* [6.32 - Subentry](6.32-subentry.html)
+* [6.33 - SubtreeSpecification](6.33-subtree-specification.html)
+* [6.34 - SyntaxChecker](6.34-syntax-checker.html)
+* [6.35 - Value](6.35-value.html)
diff --git a/source/api/user-guide/6.1-administrative-point.md b/source/api/user-guide/6.1-administrative-point.md
new file mode 100644
index 0000000..807ed6f
--- /dev/null
+++ b/source/api/user-guide/6.1-administrative-point.md
@@ -0,0 +1,55 @@
+---
+title: 6.1 - AdministrativePoint
+navPrev: 6-ldap-data-structures.html
+navPrevText: 6 - LDAP data structures
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.2-administrative-role.html
+navNextText: 6.2 - AdministrativeRole
+---
+
+# 6.1 - AdministrativePoint
+
+<DIV class="note" markdown="1">
+These classes are currently only used by the server. It will be available on the client side later on.
+</DIV>
+
+An _AdministrativePoint_ is an _entry_ in the _DIT_ which is associated with some _AdministrativeArea_. In **ApacheDS** we support 4 different kind of roles:
+
+* ACI
+* Collective Attributes
+* SubSchema
+* Triggers
+
+We also have three different types of _AdministrativePoint_s:
+
+* Autonomous AdministrativePoint (AAP)
+* Specific AdministrativePoint (SAP)
+* Inner AdministrativePoint (IAP)
+
+Each of the roles comes in one of 3 'flavors' (except the SubSchema whch has only 2 flavors). So we have the following classes:
+
+* AccessControl
+ * AccessControlAAP
+ * AccessControlSAP
+ * AccessControlIAP
+* CollectiveAttribute
+ * CollectiveAttributeAAP
+ * CollectiveAttributeSAP
+ * CollectiveAttributeIAP
+* Subschema
+ * SubschemaAAP
+ * SubschemaSAP
+* Triggers
+ * TriggerExecutionAAP
+ * TriggerExecutionSAP
+ * TriggerExecutionIAP
+
+These classes stores the following information:
+
+* dn : The DN of the root entry for this administration point.
+* uuid : The associated entryUUID
+* role : The Administrative role
+* parent : The parent (if any) AdministrativePoint
+* children : All the descendant of this AdministrativePoint
+
diff --git a/source/api/user-guide/6.10-dit-content-rule.md b/source/api/user-guide/6.10-dit-content-rule.md
new file mode 100644
index 0000000..2d03ac1
--- /dev/null
+++ b/source/api/user-guide/6.10-dit-content-rule.md
@@ -0,0 +1,13 @@
+---
+title: 6.10 - DITContentRule
+navPrev: 6.9-dn.html
+navPrevText: 6.9 - Dn
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.11-dit-structure-rule.html
+navNextText: 6.11 - DITStructureRule
+---
+
+# 6.10 - DITContentRule
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.11-dit-structure-rule.md b/source/api/user-guide/6.11-dit-structure-rule.md
new file mode 100644
index 0000000..dac04b8
--- /dev/null
+++ b/source/api/user-guide/6.11-dit-structure-rule.md
@@ -0,0 +1,13 @@
+---
+title: 6.11 - DITStructureRule
+navPrev: 6.10-dit-content-rule.html
+navPrevText: 6.10 - DITContentRule
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.12-entry.html
+navNextText: 6.12 - Entry
+---
+
+# 6.11 - DITStructureRule
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.12-entry.md b/source/api/user-guide/6.12-entry.md
new file mode 100644
index 0000000..b373db3
--- /dev/null
+++ b/source/api/user-guide/6.12-entry.md
@@ -0,0 +1,452 @@
+---
+title: 6.12 - Entry
+navPrev: 6.11-dit-structure-rule.html
+navPrevText: 6.11 - DITStructureRule
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.13-expr-node.html
+navNextText: 6.13 - ExprNode
+---
+
+# 6.12 - Entry
+
+The _Entry_ class is one of the most important ones in the _API_. It describes the base element stored into a *LDAP* server, and it associates a _Dn_ and some _Attributes_.
+
+We have two kinds of _Entry_ in the _API_, depending on the presence of a _SchemaManager_ in the _Entry_, or not.
+
+We also provide a few extended classes, like the _ImmutableEntry_, an immutable version of the _Entry_.
+
+## What an entry?
+
+An entry is an object containing a _Dn_ and some _Attributes_. The following schema shows what's inside an _entry_:
+
+![](images/entry.png)
+
+## Creating an Entry
+
+We have many ways to create an _Entry_. Basically, an _Entry_ has a _Dn_ and some _Attributes_. It can be schema aware, or not. We provide constructors to allow a user to create the kind of _Entry_ wanted.
+
+The simplest way to create an _Entry_ is to call the default constructor. The created entry will have no attributes, and no _Dn_. We can also make it schema aware by passing a _SchemaManager_. Here is an example:
+
+ :::Java
+ Entry entry = new DefaultEntry();
+
+ // Now set the DN and some attributes
+ Entry entry = new DefaultEntry();
+
+ entry.setDn( "dc=example, dc=com" );
+ entry.add( "objectClass", "top", "domain" );
+ entry.add( "dc", "example" );
+
+ // Schema aware entry
+ Entry entry2 = new DefaultEntry( schemaManager);
+
+ entry2.add( "objectClass", "top", "domain" );
+ entry2.add( "dc", "example" );
+
+
+You can also create an _Entry_ passing a _Dn_, but no attribute. We can create schema aware entries this way too, passing a _SchemaManager_.
+
+ :::Java
+ Dn dn = new Dn( schemaManager, "DomainComponent=example, dc=COM" );
+ Entry entry = new DefaultEntry( "dc=example, dc=com" );
+
+ entry.add( "objectClass", "top", "domain" );
+ entry.add( "dc", "example" );
+
+ Entry entry2 = new DefaultEntry( schemaManager, "dc=example, dc=com" );
+
+ entry2.add( "objectClass", "top", "domain" );
+ entry2.add( "dc", "example" );
+ ...
+
+We can also create an entry by copying an existing entry. The created _Entry_ must be schema aware. Here is an example:
+
+ :::Java
+ Entry entry = new DefaultEntry( schemaManager, "dc=example, dc=com" );
+
+ entry2.add( "objectClass", "top", "domain" );
+ entry2.add( "dc", "example" );
+
+ Entry entry2 = new DefaultEntry( schemaManager, entry );
+
+ assertEquals( entry.getDn(), entry2.getDn() );
+
+ entry.clear();
+
+Last, but not least, it's possible to create an _Entry_ using a list of LDIF formated attributes. An example worth ten lines of documentation, so let's see what it means.
+
+First, we will create a schema agnostic entry:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: domain",
+ "dc: example"
+ );
+
+We can also provide a complete LDIF file (except that we can't add the _dn_):
+
+ :::Java
+ String ldif =
+ "objectClass: top\n" + // The \n is mandatory.
+ "objectClass: domain\n" +
+ "dc: example";
+
+ Entry entry = new DefaultEntry( "dc=example, dc=com", ldif );
+
+
+One can also combine LDIF and variables like in this example (note that if you use a variable, the attribute must not be followed by the *':'* char):
+
+ :::Java
+ String domain = "example";
+
+ Entry entry = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: domain",
+ "cc", domain // No ':'
+ );
+
+All in all, the following constructors are available :
+
+* DefaultEntry() : Default constructor
+* DefaultEntry(SchemaManager) : Default constructor for a schema aware entry
+* DefaultEntry(String) : Creates an entry with a DN as a String
+* DefaultEntry(SchemaManager, String) : Creates a schema aware entry with a DN as a String
+* DefaultEntry(Dn) : Creates an entry with a DN
+* DefaultEntry(SchemaManager, Dn) : Creates a schema aware entry with a DN as a String
+* DefaultEntry(Dn, Object...) : Creates an entry with a DN and some attributes
+* DefaultEntry(SchemaManager, String, Object...) : Creates a schema aware entry with a DN as a String, and some attributes
+* DefaultEntry(SchemaManager, Dn, Object...) : Creates a schema aware entry with a DN and some attributes
+* DefaultEntry(SchemaManager, Entry) : Creates an entry using a copy of another entry
+
+## Modifying an Entry
+
+We have six methods available that modify the _Entry_ content : _add_, _clear_, _put_, _remove_, _removeAttribute_ and _setDn_. We will review six four methods in the following paragraphs.
+
+### Adding Attributes
+
+Two methods can be used to add attribute into an _Entry_. The first one will add a completed _Attribute_, the second one will add some values into an existing _Attribute_.
+
+In any case, we can add either an empty attribute, or an attribute with some values. Those values can be _Strings_, _byte[]_ or _Values_. The added attributes can be schema aware, and we can also provide a user provided name for the attribute type.
+
+##### add() methods
+
+The first method makes it possible to add some existing _Attribute_ to an _Entry_. Let's see how it works:
+
+ :::Java
+ Attribute cn = new DefaultAttribute( "cn", "test" );
+ Attribute cn2 = new DefaultAttribute( "cn", "test2" );
+
+ Entry entry = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test" );
+
+ // Add the new attribute
+ entry.add( cn );
+
+ // Try to add a second value
+ entry.add( cn2 );
+
+
+Otherwise, we can add a new attribute and values into the _Entry_ by passing both parameters. We can also pass an _AttributeType_ to the _add()_ method, making the added attribute schema aware. Note that if the _Entry_ itself is already schema aware, this is not necessary.
+
+Here are some examples, the first one with a schema aware _Entry_, the second one with a schema agnostic _Entry_:
+
+For a schema aware entry :
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test" );
+
+ // Add the new attribute
+ entry.add( "cn", "test" );
+
+ // Try to add a second value
+ entry.add( "cn", "A second test " );
+
+ // We can also add a value to an existing Attribute
+ entry.add( "sn", "Another SN" );
+
+ // And even add many values in one shot
+ entry.add( "cn", "value1", "value2" );
+
+
+
+For a schema agnostic entry :
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test" );
+
+ // Add the new attribute
+ entry.add( "cn", "test" );
+
+ // Try to add a second value
+ entry.add( "cn", "A second test" );
+
+
+As you can see, there is no real difference between those two methods, except that we pass the _schemaManager_ into the first one.
+
+
+##### put() methods
+
+The big difference with the _add_ method is that the attribute is not added, it will replace an existing one. let's see with an example :
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test" );
+
+ // Add the new attribute
+ entry.put( "cn", "test" );
+
+ // Try to add a second value : the 'cn' attribute will now contain only 'test2'
+ entry.put( "cn", "test2" );
+
+### Removing Attributes
+
+We can remove either an attribute having a specific value, or an entire attribute. In order to remove a complete attribute, you just have to provide the attribute's name, and use the _removeAttributes_ method.
+
+Here are examples for both usages :
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ // Remove the "test2" value
+ entry.remove( "cn", "test2" );
+
+ // Try to remove the full attribute
+ entry.removeAttributes( "cn" );
+
+### Storing a Dn
+
+It's also possible to store a new _Dn_ into the Entry, using the _setDn() method. It will replace an existing _Dn_ This method takes either a _Dn_ instance, or a _String_ representing a valid _Dn_.
+
+
+### Clearing the Entry
+
+You can remove all the _Attribute_s from the entry, using the _clear()_ method :
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ // Remove all the attributes
+ entry.clear();
+
+The _Dn_ will still be around though.
+
+## Attribute data access methods
+
+The *API* provides convenient methods to access the _Entry_ content, and to check if it contains some attributes or some values. We will show these methods in the paragraphs that follow.
+
+### Contains method
+
+The _contains_ and _containsAttributes_ methods check that the _Entry_ contains _Attributes_ and _values_.
+
+One can check for the existence of a specific value for a given attribute, or even for multiple values for a specific attribute. Let's see the _contains_ method in action:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ // Check that the entry contains the 'cn' and 'sn' Attributes
+ boolean contains = entry.containsAttribute( "cn", "sn" );
+
+ // Check that the entry contains 3 given values of the 'cn' Attribute
+ contains = entry.contains( "cn", "test1", "test2", "test3" );
+
+Note that if one value does not exist, the _contains() method will return false.
+
+### getAttributes() and get() methods
+
+Returns the _Attribute_ having the given name if it exists. The following test demonstrates its usage:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ // Get the 'cn' Attribute
+ Attribute cn = entry.get( "cn" );
+
+ // Get all the Attributes
+ Collection<Attribute> attributes = entry.getAttributes();
+
+
+### getDn()
+
+This method returns the _Entry_'s _Dn_.
+
+### hasObjectClass methods
+
+The _hasObjectClass()_ methods are used to discover if an _Entry_ has a specific _ObjectClass_. This is a convenient method, as it's possible to do the same thing with a _contains()_ call, but with one less parameter (you don't have to provide the _"ObjectClass"_ as a first parameter).
+
+Here is an example using the two existing methods:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "cn=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "cn: example",
+ "sn: test"
+ );
+
+ // Test the presence
+ boolean isPresent = entry.hasObjectClass( "person", " TOP " );
+
+As for the _contains()_ method, it will return true if and only if all the ObjectClasses are present in the _entry_.
+
+Obviously, dealing with a schema agnostic _Entry_, those methods are more strict. You have to use the exact ObjectClasses case sensitive trimmed names (in the previous example, we can use upper cased names, even with spaces around the names).
+
+Also note that the _hasObjectClass_ method used with _AttributeType_ does not work on a schema agnostic entry.
+
+## Miscellaneous methods
+
+We also have some other methods which can be used on an _Entry_. Here is a list of those methods.
+
+#### clone()
+
+Creates a copy of the current _Entry_. All the _Attributes_ are also cloned.
+
+#### iterator()
+
+Allows an iteration over all the _Attributes_. The following examples shows how this can be used:
+
+ :::Java
+ @Test
+ Entry entry = new DefaultEntry(
+ "cn=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "cn: example",
+ "sn: test"
+ );
+
+ for ( Attribute attribute : entry )
+ {
+ System.out.println( "Attribute : \n" + attribute.toString() );
+ }
+
+This produces the following output:
+
+ :::Java
+ Attribute :
+ sn: test
+
+ Attribute :
+ cn: example
+
+ Attribute :
+ objectclass: top
+ objectclass: person
+
+Note that the _Attribute_ order is not guaranteed.
+
+#### isSchemaAware()
+
+Tells if the ¨_Entry_ has an associated _SchemaManager_.
+
+#### size()
+
+Returns the number of _Attribute_ stored in the _Entry_.
+
+#### equals(Object)
+
+Check if two *Entries* are equal or not. It's important to understand that depending on whether the entry is schema aware or not, the comparison will be processed differently. Typically, the attribute's name must be equivilent after being trimmed and set to lowercase. If the entry is not schema aware, and we can't compare an attribute named 'cn' with another one named '2.5.4.3' in this case (the _Entry_ must be schema aware to allow such comparison). More important, the values *must* be identical (same casing, same spaces) in this case.
+The attribute's values order is irrelevant.
+
+Here are one example with a schema agnostic _Entry_:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ Entry entry2 = new DefaultEntry(
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test2",
+ "CN: test1",
+ "cn: test3" );
+
+ // Will return true
+ boolean result = entry.equals( entry2 );
+
+and another example with a schema aware _Entry_:
+
+ :::Java
+ Entry entry = new DefaultEntry(
+ schemaManager,
+ "dc=example, dc=com",
+ "objectClass: top",
+ "objectClass: person",
+ "sn: test",
+ "cn: test1",
+ "cn: test2",
+ "cn: test3" );
+
+ Entry entry2 = new DefaultEntry(
+ schemaManager,
+ "dc=example,dc=com",
+ "objectClass: TOP",
+ "objectClass: person",
+ "sn: Test",
+ "cn: Test2",
+ "2.5.4.3: test1",
+ "CommonName: test3" );
+
+ // Will return true
+ boolean result = entry.equals( entry2 );
diff --git a/source/api/user-guide/6.13-expr-node.md b/source/api/user-guide/6.13-expr-node.md
new file mode 100644
index 0000000..cb6b769
--- /dev/null
+++ b/source/api/user-guide/6.13-expr-node.md
@@ -0,0 +1,13 @@
+---
+title: 6.13 - ExprNode
+navPrev: 6.12-entry.html
+navPrevText: 6.12 - Entry
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.14-ldap-comparator.html
+navNextText: 6.14 - LdapComparator
+---
+
+# 6.13 - ExprNode
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.14-ldap-comparator.md b/source/api/user-guide/6.14-ldap-comparator.md
new file mode 100644
index 0000000..1341935
--- /dev/null
+++ b/source/api/user-guide/6.14-ldap-comparator.md
@@ -0,0 +1,13 @@
+---
+title: 6.14 - LdapComparator
+navPrev: 6.13-expr-node.html
+navPrevText: 6.13 - ExprNode
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.15-ldap-result.html
+navNextText: 6.15 - LdapResult
+---
+
+# 6.14 - LdapComparator
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.15-ldap-result.md b/source/api/user-guide/6.15-ldap-result.md
new file mode 100644
index 0000000..3b62501
--- /dev/null
+++ b/source/api/user-guide/6.15-ldap-result.md
@@ -0,0 +1,13 @@
+---
+title: 6.15 - LdapResult
+navPrev: 6.14-ldap-comparator.html
+navPrevText: 6.14 - LdapComparator
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.16-ldap-syntax.html
+navNextText: 6.16 - LdapSyntax
+---
+
+# 6.15 - LdapResult
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.16-ldap-syntax.md b/source/api/user-guide/6.16-ldap-syntax.md
new file mode 100644
index 0000000..92472b6
--- /dev/null
+++ b/source/api/user-guide/6.16-ldap-syntax.md
@@ -0,0 +1,13 @@
+---
+title: 6.16 - LdapSyntax
+navPrev: 6.15-ldap-result.html
+navPrevText: 6.15 - LdapResult
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.17-ldap-url.html
+navNextText: 6.17 - LdapUrl
+---
+
+# 6.16 - LdapSyntax
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.17-ldap-url.md b/source/api/user-guide/6.17-ldap-url.md
new file mode 100644
index 0000000..68d8fbe
--- /dev/null
+++ b/source/api/user-guide/6.17-ldap-url.md
@@ -0,0 +1,13 @@
+---
+title: 6.17 - LdapUrl
+navPrev: 6.16-ldap-syntax.html
+navPrevText: 6.16 - LdapSyntax
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.18-ldif-control.html
+navNextText: 6.18 - LdifControl
+---
+
+# 6.17 - LdapUrl
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.18-ldif-control.md b/source/api/user-guide/6.18-ldif-control.md
new file mode 100644
index 0000000..c4a7f38
--- /dev/null
+++ b/source/api/user-guide/6.18-ldif-control.md
@@ -0,0 +1,13 @@
+---
+title: 6.18 - LdifControl
+navPrev: 6.17-ldap-url.html
+navPrevText: 6.17 - LdapUrl
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.19-ldif-entry.html
+navNextText: 6.19 - LdifEntry
+---
+
+# 6.18 - LdifControl
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.19-ldif-entry.md b/source/api/user-guide/6.19-ldif-entry.md
new file mode 100644
index 0000000..6afda7d
--- /dev/null
+++ b/source/api/user-guide/6.19-ldif-entry.md
@@ -0,0 +1,13 @@
+---
+title: 6.19 - LdifEntry
+navPrev: 6.18-ldif-control.html
+navPrevText: 6.18 - LdifControl
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.20-matching-rule.html
+navNextText: 6.20 - MatchingRule
+---
+
+# 6.19 - LdifEntry
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.2-administrative-role.md b/source/api/user-guide/6.2-administrative-role.md
new file mode 100644
index 0000000..a7d6954
--- /dev/null
+++ b/source/api/user-guide/6.2-administrative-role.md
@@ -0,0 +1,33 @@
+---
+title: 6.2 - AdministrativeRole
+navPrev: 6.1-administrative-point.html
+navPrevText: 6.1 - AdministrativePoint
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.3-attribute.html
+navNextText: 6.3 - Attribute
+---
+
+# 6.2 - AdministrativeRole
+
+<DIV class="note" markdown="1">
+These classes are currently only used by the server. It will be available on the client side later on.
+</DIV>
+
+The _AdministrativeRole_ structure is a **enum** listing the possible roles we can select for an _AdministrativePoint_. We currently support 4 different roles:
+
+* Access Control
+* Collective Attributes
+* SubSchema
+* Triggers
+
+And each of those roles can be combine with their scope:
+
+* AutonomousArea
+* AccessControlSpecificArea
+* AccessControlInnerArea
+* CollectiveAttributeSpecificArea
+* CollectiveAttributeInnerArea
+* SubSchemaSpecificArea
+* TriggerExecutionSpecificArea
+* TriggerExecutionInnerArea
diff --git a/source/api/user-guide/6.20-matching-rule.md b/source/api/user-guide/6.20-matching-rule.md
new file mode 100644
index 0000000..9ea5b25
--- /dev/null
+++ b/source/api/user-guide/6.20-matching-rule.md
@@ -0,0 +1,13 @@
+---
+title: 6.20 - MatchingRule
+navPrev: 6.19-ldif-entry.html
+navPrevText: 6.19 - LdifEntry
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.21-matching-rule-use.html
+navNextText: 6.21 - MatchingRuleUse
+---
+
+# 6.20 - MatchingRule
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.21-matching-rule-use.md b/source/api/user-guide/6.21-matching-rule-use.md
new file mode 100644
index 0000000..1ed4466
--- /dev/null
+++ b/source/api/user-guide/6.21-matching-rule-use.md
@@ -0,0 +1,13 @@
+---
+title: 6.21 - MatchingRuleUse
+navPrev: 6.20-matching-rule.html
+navPrevText: 6.20 - MatchingRule
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.22-message.html
+navNextText: 6.22 - Message
+---
+
+# 6.21 - MatchingRuleUse
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.22-message.md b/source/api/user-guide/6.22-message.md
new file mode 100644
index 0000000..923e08e
--- /dev/null
+++ b/source/api/user-guide/6.22-message.md
@@ -0,0 +1,13 @@
+---
+title: 6.22 - Message
+navPrev: 6.21-matching-rule-use.html
+navPrevText: 6.21 - MatchingRuleUse
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.23-modification.html
+navNextText: 6.23 - Modification
+---
+
+# 6.22 - Message
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.23-modification.md b/source/api/user-guide/6.23-modification.md
new file mode 100644
index 0000000..bbc4cd7
--- /dev/null
+++ b/source/api/user-guide/6.23-modification.md
@@ -0,0 +1,13 @@
+---
+title: 6.23 - Modification
+navPrev: 6.22-message.html
+navPrevText: 6.22 - Message
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.24-name-form.html
+navNextText: 6.24 - NameForm
+---
+
+# 6.23 - Modification
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.24-name-form.md b/source/api/user-guide/6.24-name-form.md
new file mode 100644
index 0000000..9e6b339
--- /dev/null
+++ b/source/api/user-guide/6.24-name-form.md
@@ -0,0 +1,13 @@
+---
+title: 6.24 - NameForm
+navPrev: 6.23-modification.html
+navPrevText: 6.23 - Modification
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.25-normalizer.html
+navNextText: 6.25 - Normalizer
+---
+
+# 6.24 - NameForm
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.25-normalizer.md b/source/api/user-guide/6.25-normalizer.md
new file mode 100644
index 0000000..03381d9
--- /dev/null
+++ b/source/api/user-guide/6.25-normalizer.md
@@ -0,0 +1,13 @@
+---
+title: 6.25 - Normalizer
+navPrev: 6.24-name-form.html
+navPrevText: 6.24 - NameForm
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.26-object-class.html
+navNextText: 6.26 - ObjectClass
+---
+
+# 6.25 - Normalizer
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.26-object-class.md b/source/api/user-guide/6.26-object-class.md
new file mode 100644
index 0000000..51820d2
--- /dev/null
+++ b/source/api/user-guide/6.26-object-class.md
@@ -0,0 +1,13 @@
+---
+title: 6.26 - ObjectClass
+navPrev: 6.25-normalizer.html
+navPrevText: 6.25 - Normalizer
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.27-oid.html
+navNextText: 6.27 - Oid
+---
+
+# 6.26 - ObjectClass
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.27-oid.md b/source/api/user-guide/6.27-oid.md
new file mode 100644
index 0000000..326094a
--- /dev/null
+++ b/source/api/user-guide/6.27-oid.md
@@ -0,0 +1,67 @@
+---
+title: 6.27 - Oid
+navPrev: 6.26-object-class.html
+navPrevText: 6.26 - ObjectClass
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.28-rdn.html
+navNextText: 6.28 - Rdn
+---
+
+# 6.27 - Oid
+
+## Introduction
+
+An *OID* stands for *Object* *ID*entifier. It's part of the *ASN/1* standard. Basically, it's a hierarchy, named a 'registration tree'. It's a list of 'arcs', which values start at '0', and each arc is separated with a dot ( '.' ).
+
+There are three defined root arcs :
+
+ * itu-t (0)
+ * iso (1)
+ * joint-iso-itu-t (2)
+
+There are some places on the internet where one can look at the existing OIDs. Here is one: [OID repository](http://www.oid-info.com/cgi-bin/display?tree=&see=all).
+
+## Syntax
+
+The OID syntax is pretty simple. Numbers are separated with periods between them, e.g. 0.1.245
+
+There are a few extra rules:
+
+ * The first number must be 0, 1 or 2
+ * If it's 0 or 1, then the second number must be between 0 and 39
+ * A period must be preceded and followed by a number
+ * A 0 at first position is never followed by another digit
+ * There is no limit for the number of digits. For example, 2.25.81407072025111374527560065493494091452, is a legitimate OID value.
+
+## API
+
+The *Apache LDAP API* offers a few functions that can be used to manipulate an OID. In any case, there is not a constructor for an OID.
+
+The class to use is *org.apache.directory.api.asn1.util.Oid*. It creates immutable instances.
+
+### static Oid fromBytes( byte[] )
+
+Returns an *Oid* instance constructed using a *byte[]* representing an encoded OID.
+
+### static Oid fromString( String )
+
+Returns an *Oid* instance constructed from a *String* representing an OID.
+
+### static boolean isOid( String )
+
+Tells if a *String* is a valid OID.
+
+### String toString()
+
+Return the *String* representation of an *Oid* instance.
+
+### byte[] toBytes()
+
+Return the *byte[]* representation of an *Oid* instance.
+
+## OID parsing
+
+We use a *FSA* (Finite State Automaton) to parse a String to get an internal representation of an OID. Here is a picture showing the *FSA* we are using:
+
+![OID FSA](images/OID-state-automaton.png)
diff --git a/source/api/user-guide/6.28-rdn.md b/source/api/user-guide/6.28-rdn.md
new file mode 100644
index 0000000..c436374
--- /dev/null
+++ b/source/api/user-guide/6.28-rdn.md
@@ -0,0 +1,13 @@
+---
+title: 6.28 - Rdn
+navPrev: 6.27-oid.html
+navPrevText: 6.27 - Oid
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.29-referral.html
+navNextText: 6.29 - Referral
+---
+
+# 6.28 - Rdn
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.29-referral.md b/source/api/user-guide/6.29-referral.md
new file mode 100644
index 0000000..66ce2eb
--- /dev/null
+++ b/source/api/user-guide/6.29-referral.md
@@ -0,0 +1,13 @@
+---
+title: 6.29 - Referral
+navPrev: 6.28-rdn.html
+navPrevText: 6.28 - Rdn
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.30-refinment.html
+navNextText: 6.30 - Refinment
+---
+
+# 6.29 - Referral
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.3-attribute.md b/source/api/user-guide/6.3-attribute.md
new file mode 100644
index 0000000..419d767
--- /dev/null
+++ b/source/api/user-guide/6.3-attribute.md
@@ -0,0 +1,330 @@
+---
+title: 6.3 - Attribute
+navPrev: 6.2-administrative-role.html
+navPrevText: 6.2 - AdministrativeRole
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.4-attribute-type.html
+navNextText: 6.4 - AttributeType
+---
+
+# 6.3 - Attribute
+
+The _Attribute_ class is used to store values associated with an _AttributeType_. An _Entry_ can contain many _Attribute{s_, but only one of them is mandatory: the _ObjectClass_ _Attribute_.
+
+An _Attribute_ can store zero, one or N values, accordingly to its associated _AttributeType_, which may allow null values, and which also can forbid muli-values.
+
+The _Attribute_ has a internal _AttributeType_ which is usually defined using its name. This name is case insensitive, and we can also use the _AttributeType_ _OID_.
+
+## Creating an Attribute
+
+Creating an _Attribute_ is not complex. Again, we split the API into two categories:
+
+* the schema agnostic _Attributes_
+* the schema aware _Attributes_
+
+### Schema agnostic Attribute
+
+If we don't inject a _SchemaManager_ into the constructor, then the _Attribute_ will have no way to control whether its _AttributeType_ exists, nor that its _Values_ are valid.
+
+Let's see how we can create _Attributes_. Basically, all what that needed is to provide the _AttributeType_ as a String, and some _Values_ (that are optional). Here is an example:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( " CN " );
+
+Here, we created an empty _Attribute_. Note that _cn_ does not allow empty values, but it's not enforced. Also note that the _AttributeType_ is lowercase and trimmed internally.
+
+Let's see another example, with some values:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( " CN ", "test", "Test", " test ", "test" );
+
+Here, we create an _Attribute_ with 3 values. We can see that the values are not duplicated (the _"test"_ value is only inserted once) and that values are case sensitive (the _"test"_ and _"Test"_ values are both stored in the _Attribute_). The values aren't trimmed either, so we can have a _"test"_ and a _" test "_ values stored.
+
+This is why having a schema aware _Attribute_ is really handy.
+
+It's possible to store binary values into an _Attribute_ too:
+
+ :::Java
+ byte[] bytes1 = new byte[]{0x01, 0x02};
+ byte[] bytes2 = new byte[]{0x03, 0x04};
+ byte[] bytes3 = new byte[]{0x01, 0x02};
+
+ Attribute attribute = new DefaultAttribute( " JpegPhoto ", bytes1, bytes2, bytes3 );
+
+Same here: values are not duplicated.
+
+Note that it's not allowed to store a mix of binary and String values into an _Attribute_:
+
+ :::Java
+ byte[] bytes1 = new byte[]{0x01, 0x02};
+
+ Attribute attribute = new DefaultAttribute( " JpegPhoto ", "test", bytes1 ); // Does not compile
+
+### Schema aware Attribute
+
+We can inject a _SchemaManager_ into the _Attribute_ which will allow more control over the values stored within the _Attribute_. Let's see an example of how this works:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn );
+
+Here, we created an _Attribute_ with a specific _AttributeType_ ('atCn') and no value. Let's create a new _Attribute_ with some values:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn, "test", "Test", " test " );
+
+The important point here is that the values are all considered equal. The _contains_ method also uses the schema to compare its given value with the interned values. Here, with the _cn_ _AttributeType_, the value is not case sensitive, so _"TEST"_ is considered as an existing value, even if we injected _"test"_.
+
+## Modifying an Attribute
+
+Now that we created an _Attribute_ we would like to add or remove values from it. This is quite easy. We have a set of methods to add or remove values, and depending on whether the _Attribute_ is schema aware or not, the added values will be checked.
+
+### Adding some value
+
+Here is an example of a value addition into a schema agnostic _Attribute_, then the same operation into a schema aware _Attribute_:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( " CN " );
+ Attribute attributeSA = new DefaultAttribute( atCn );
+
+ // Add two values
+ attribute.add( "test1", "" );
+
+ // add two values
+ attributeSA.add( "test1", "" );
+
+
+We can see that the schema aware _Attribute_ just contains only one value after the operation, as the _cn_ attribute type does not allow empty strings.
+
+There is one important point to understand -- whenever a schema agnostic _Attribute_ is created, it knows nothing about the type of values it will store. Once the first value is added, the _Attribute_ will be typed accordingly to the first value added. Then we can no longer add values that are not of the same type.
+
+If the _Attribute_ is schema aware, it's quite obvious. You won't be able to add a binary value into a Human Readable _Attribute_.
+The following test shows that:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( " CN " );
+ Attribute attributeSA = new DefaultAttribute( atCn );
+
+ byte[] bytes = new byte[]{0x01, 0x02};
+
+
+ // Add two values
+ attribute.add( "test1" );
+ attribute.add( bytes );
+
+ // add two values
+ attributeSA.add( "test1" );
+ attributeSA.add( bytes );
+
+### Removing some values
+
+Removing a value from an _Attribute_ is a trivial operation. Of course, if the _Attribute_ is schema aware, we will use the _AttributeType_ comparator to check if the value is present in the _Attribute_ or not (the comparator is associated with the attribute equality _MatchingRule_.
+
+Here is an example:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( " CN " );
+
+ // Add three values
+ attribute.add( "test1", "test2", "test3" );
+
+ // Remove 2 of them
+ attribute.remove( "test2", "test3" );
+
+ // Try to remove the last one, using wrong casing
+ attribute.remove( "Test1" );
+
+And the same example, on a schema aware _Attribute_. It demonstrates how convenient it is to manipulate such schema aware objects:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn );
+
+ // Add three values
+ attribute.add( "test 1", "test 2", "test 3" );
+
+ // Remove 2 of them
+ attribute.remove( "TEST 2", "test 3" );
+
+ // Try to remove the last one, using wrong casing
+ attribute.remove( "Test 1" );
+
+## Attribute data access methods
+
+We have a set of methods used to get some information about the _Attribute_. They are described in this chapter.
+
+### contains()
+
+Checks if the given values are present in the _Attribute_. We can check for more than one value, but in this case, the method returns _true_ only if **all** the values are present.
+
+If the _Attribute_ is schema aware, then the check uses the _AttributeType_ to compare the given values with the interned values, otherwise, we do a strict comparison.
+
+Here is an example:
+
+ :::Java
+ Attribute attribute1 = new DefaultAttribute( atCn );
+
+ // Add three values
+ attribute1.add( "test 1", "test 2", "test 3" );
+
+ Attribute attribute2 = new DefaultAttribute( "cn" );
+
+ // Add three values
+ attribute2.add( "test 1", "test 2", "test 3" );
+
+### get()
+
+Returns the first value from the _Attribute_. The first value is the one which has been added first. Note that it returns a _Value_ instance.
+
+### getAttributeType()
+
+Returns the internal _AttributeType_, if the _Attribute_ is schema aware.
+
+### getBytes()
+
+Returns the first value as a _byte[]_, if the _Attribute_ is not human readable. The user **must** know that the _Attribute_ contains binary values, otherwise they will get an _LdapInvalidAttributeValueException_.
+
+### getString()
+
+Returns the first value as a _String_, if the _Attribute_ is human readable. The user **must** know that the _Attribute_ contains String values, otherwise they will get an _LdapInvalidAttributeValueException_.
+
+### getId()
+
+Returns the _AttributeType_ normalized ID. If the _Attribute_ is schema agnostic, it will be the trimmed and lower cased user provided ID, otherwise it will be the _AttributeType_ OID (not the name).
+
+### getUpId()
+
+Returns the attribute type user provided ID, if the user provided one. Typically, if the _Attribute_ is schema aware, the user might not provide an ID, and in this case, this method will return the _AttributeType_ name, or default to the OID.
+
+### isHumanReadable()
+
+Tells if the _Attribute_ contains String values or binary values.
+
+## Miscellaneous methods
+
+We also have a set of miscellaneous methods, which are not frequently used. Here they are:
+
+### apply( AttributeType )
+Inject an _AttributeType_ into the _Attribute_, making it schema aware. It will check that the associated values are valid at the same time, and normalize the values.
+
+Here is an example of the impact of such a method on an existing attribute :
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( "CN", " A test" );
+
+ attribute.apply( atCn );
+
+It shows that we can now check that a value is not literately compared, the modified attribute uses the Equality _MatchingRule_ to compare the values.
+
+Here is another example, where we try to apply an attribute type to some attribute containing an invalid value : it generates an exception, as expected.
+
+ :::Java
+ byte[] bytes = new byte[]{0x01, 0x02};
+ Attribute attribute = new DefaultAttribute( "CN", bytes );
+
+ attribute.apply( atCn );
+
+
+### clear()
+
+This method removes all the values from the attribute. The attribute type is not removed. Here is an example demonstrating how it works:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn, "test1", "test2" );
+
+ attribute.clear();
+
+### clone()
+
+This method creates a new instance of an existing attribute. All of the attribute values along with its attribute type are cloned and distinct from the original attribute.
+
+### equals( Object )
+
+Compares two _Attributes_. All of its values are compared and should be present in both attributes. If you compare a schema aware _Attribute_ with a schema agnostic _Attribute_, they won't be equal.
+
+Here is a snippet of code demonstrating the _equals_ method:
+
+ :::Java
+ Attribute attribute1 = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
+ Attribute attribute2 = new DefaultAttribute( atCn, "Test 3", "Test 2 ", "Test 1" );
+ Attribute attribute3 = new DefaultAttribute( "cn", "test 1", "test 3", "test 2" );
+ Attribute attribute4 = new DefaultAttribute( "cn", "test 1", "test 3", "test 2" );
+
+ // Should be true
+ boolean equals = attribute1.equals( attribute2 );
+ equals = attribute3.equals( attribute4 );
+
+ // Should be false
+ equals = attribute1.equals( attribute3 );
+ equals = attribute1.equals( attribute4 );
+ equals = attribute2.equals( attribute4 );
+
+ // Now, inject an AttrbuteType in one attribute
+ attribute4.apply( atCn );
+
+ // The previously not equals attributes are now equal :
+ equals = attribute1.equals( attribute4 );
+ equals = attribute2.equals( attribute4 );
+
+
+### isInstanceOf( AttributeType )
+
+Tells if an _Attribute_ derives from a given _AttributeType_. It can be useful if you have a schema aware _Attribute_ and want to know if its attribute type inherits from another one. Here is an example of usage:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
+
+ // Should be true
+ boolean value = attribute.isInstanceOf( atCn );
+
+### isValid( AttributeType )
+
+Checks if the _Attribute_ contains valid data. It's useful if one wants to apply an _AttributeType_ to the _Attribute_, as the _isValid_ method will tell if it's possible to do so without throwing an exception.
+
+Here is some code that test the different use cases:
+
+ :::Java
+ Attribute attribute1 = new DefaultAttribute( "cn", "\uFFFDtest" );
+
+ // Should be false
+ boolean isValid = attribute1.isValid( atCn ) );
+
+ Attribute attribute2 = new DefaultAttribute( "cn" );
+
+ // Should be false, 'cn' requires a value
+ isValid = attribute2.isValid( atCn );
+
+ Attribute attribute3 = new DefaultAttribute( "cn", "test" );
+
+ // Should be true
+ value = attribute3.isValid( atCn );
+
+ Attribute attribute4 = new DefaultAttribute( "dc", "test", "test2" );
+
+ // Should be false, we can't put more than one value in 'dc'
+ value = attribute4.isValid( atDc );
+
+### iterator()
+
+A convenient way to iterate over all of the _Attribute_ values. It enables the _for ( Value<?> value : attribute )_ construct. Here is an example using the iterator:
+
+ :::Java
+ Attribute attribute = new DefaultAttribute( atCn, "test 1", "test 2", "test 3" );
+
+ for ( Value<?> value : attribute )
+ {
+ System.out.println( "Value : " + value );
+ }
+
+This code produces the following output:
+
+ :::Java
+ Value : test 1
+ Value : test 2
+ Value : test 3
+
+### setUpId()
+
+Sets the user provided identifier for the attribute type. If the _Attribute_ is schema agnostic, then the normalized ID will be the given user provided ID lower cased and trimmed. If it's schema aware, it will be used instead of the _AttributeType_ ID.
+
+### size()
+Returns the number of values stored in this _Attribute_
diff --git a/source/api/user-guide/6.30-refinment.md b/source/api/user-guide/6.30-refinment.md
new file mode 100644
index 0000000..044c9b7
--- /dev/null
+++ b/source/api/user-guide/6.30-refinment.md
@@ -0,0 +1,13 @@
+---
+title: 6.30 - Refinment
+navPrev: 6.29-referral.html
+navPrevText: 6.29 - Referral
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.31-schema-manager.html
+navNextText: 6.31 - SchemaManager
+---
+
+# 6.30 - Refinment
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.31-schema-manager.md b/source/api/user-guide/6.31-schema-manager.md
new file mode 100644
index 0000000..c0d6660
--- /dev/null
+++ b/source/api/user-guide/6.31-schema-manager.md
@@ -0,0 +1,13 @@
+---
+title: 6.31 - SchemaManager
+navPrev: 6.30-refinment.html
+navPrevText: 6.30 - Refinment
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.32-subentry.html
+navNextText: 6.32 - Subentry
+---
+
+# 6.31 - SchemaManager
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.32-subentry.md b/source/api/user-guide/6.32-subentry.md
new file mode 100644
index 0000000..4bf3ebf
--- /dev/null
+++ b/source/api/user-guide/6.32-subentry.md
@@ -0,0 +1,13 @@
+---
+title: 6.32 - Subentry
+navPrev: 6.31-schema-manager.html
+navPrevText: 6.31 - SchemaManager
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.33-subtree-specification.html
+navNextText: 6.33 - SubtreeSpecification
+---
+
+# 6.32 - Subentry
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.33-subtree-specification.md b/source/api/user-guide/6.33-subtree-specification.md
new file mode 100644
index 0000000..2b680ee
--- /dev/null
+++ b/source/api/user-guide/6.33-subtree-specification.md
@@ -0,0 +1,13 @@
+---
+title: 6.33 - SubtreeSpecification
+navPrev: 6.32-subentry.html
+navPrevText: 6.32 - Subentry
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.34-syntax-checker.html
+navNextText: 6.34 - SyntaxChecker
+---
+
+# 6.33 - SubtreeSpecification
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.34-syntax-checker.md b/source/api/user-guide/6.34-syntax-checker.md
new file mode 100644
index 0000000..8d38537
--- /dev/null
+++ b/source/api/user-guide/6.34-syntax-checker.md
@@ -0,0 +1,13 @@
+---
+title: 6.34 - SyntaxChecker
+navPrev: 6.33-subtree-specification.html
+navPrevText: 6.33 - SubtreeSpecification
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.35-value.html
+navNextText: 6.35 - Value
+---
+
+# 6.34 - SyntaxChecker
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/6.35-value.md b/source/api/user-guide/6.35-value.md
new file mode 100644
index 0000000..806c0a8
--- /dev/null
+++ b/source/api/user-guide/6.35-value.md
@@ -0,0 +1,69 @@
+---
+title: 6.35 - Value
+navPrev: 6.34-syntax-checker.html
+navPrevText: 6.34 - SyntaxChecker
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 7-requests-responses.html
+navNextText: 7 - Requests and Responses
+---
+
+# 6.35 - Value
+
+The _Value_ class is used to store an attribute's value. Such a value can be either a String or a byte[], depending on the nature of the AttributeType (the default is that the _Value_ is a String). Each value is associated to an AttributeType, and is used in an Entry or a DN.
+
+We can create a schema aware _Value_, or just a plain _Value_. Having a schema aware _Value_ allows further controls to be made on the value injected : its syntax will be checked against the _AttributeType_ syntax.
+
+_Value_ is also a _Externalizable_ class.
+
+_Value_ instances are immutable.
+
+## Creating a value
+
+There are two ways to create a value:
+- using a constructor
+- using a static factory (useful for deserialization)
+
+You can create the value passing it an *AttributeType*, or without it. Here are the possible constructors:
+
+<CENTER>
+| With an AttributeType | Without an attributeType | Description |
+|:-:|:-:|:-:|
+| Value( AttributeType, byte[] upValue ) | Value( byte[] upValue ) | Creates a Value with a binary content |
+| Value( AttributeType, String upValue ) | Value( String upValue ) | Creates a Value with a String content |
+| Value( AttributeType, Value ) | - | Create a new Value from an existing one, applying the SchemaManager on it |
+</CENTER>
+
+The third constructor is quite specific, as _Value_ is immutable, and it allows you to associate a SchemaManager to a _Value_ instance (creating a new _Value_ in the process). The new _Value_ instance will be schema aware.
+
+## Operations on a Value
+
+There are ways to consult the content of the _Value_, and its status. Here is the list of common operations:
+
+<CENTER>
+| Operation | Description |
+|:-:|:-:|
+| clone() | Clone the current Value, creating a new instance |
+| compareTo( byte[] ) | Compare the content of the current value to the given byte[] |
+| compareTo( String ) | Compare the content of the current value to the given String |
+| compareTo( Value ) | Compare the content of the current value to the given Value |
+| deserialize( byte[], int ) | Create a Value deserializing it from the byte[], starting at a given position |
+| equals( Object ) | Tells if the current Value is equal to the provided object |
+| getAttributeType() | Get back the AttributeType associated with this value, if any |
+| getBytes() | Get the byte[] representation of this Value |
+| getValue() | Get the Value as a String, if the Value is Human Readable |
+| hashCode() | Compute the Value hashcode |
+| isHumanReadable() | Tells if the Value is Humane Readable (ie, a String) |
+| isInstanceOf( AttributeType ) | Tells if the Value is an instance of a given AttributeType, or of one of its parent |
+| isNull() | Tells if the contained value is null |
+| isSchemaAware() | Tells if teh Value is schema aware |
+| isValid( SyntaxChecker ) | Check the contained value |
+| length() | Returns the contained value's length (number of chars for a String, number of bytes for a byte[]) |
+| readExternal( ObjectInput ) | Read a new Value from a stream of bytes |
+| serialize( byte[], int ) | Write the Value into a stream of bytes |
+| toString() | Returns a String representation of the Value instance |
+| writeExternal( ObjectOutput ) | Write the Value into a stream |
+|
+</CENTER>
+
+
diff --git a/source/api/user-guide/6.4-attribute-type.md b/source/api/user-guide/6.4-attribute-type.md
new file mode 100644
index 0000000..53ef11c
--- /dev/null
+++ b/source/api/user-guide/6.4-attribute-type.md
@@ -0,0 +1,50 @@
+---
+title: 6.4 - AttributeType
+navPrev: 6.3-attribute.html
+navPrevText: 6.3 - Attribute
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.5-ava.html
+navNextText: 6.5 - Ava
+---
+
+# 6.4 - AttributeType
+
+The _AttributeType_ is one of the most important schema elements. It describes what can be stored into an _Entry_, its syntax, and the various rules that are to be followed whenever searching for an associated value.
+
+_AttributeType_ are immutable objects, created from the schema, and never changed. One can add a new _AttributeType_, or delete itfrom the schema, but once it's added to the schema, it can't be modified.
+
+Usually, we just use them.
+
+## Description
+
+An _AttributeType_ contains the following informations:
+
+| Value | Description | optional |
+|---|---|---|
+| OID | An unique _Oid_ for the _AttributeType_ | no |
+| NAME | some names, the fist one being considered as the _short name_. | yes |
+| DESCR | A textual description describing the _AttributeType_ role. | yes |
+| OBSOLETE | A flag indicating if the _AttributeType_ is deprecated | yes|
+| SUP | The _AttributeType_ it inherit from | yes (If SYNTAX is null, can't be null) |
+| EQUALITY | The EQUALITY _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
+| ORDERING | The ORDERING _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
+| SUBSTR | The SUBSTR _MatchingRule_ | yes (if null, and if SUP is not null, takes its SUP's value) |
+| SYNTAX | The Syntax to follow | yes (If SUP is null, can't be null) |
+| SINGLE-VALUE| Tells that the _AttributeType_ does not allow more than one value | yes |
+| COLLECTIVE | Define a collective attribute. The _AttributeType_ USAGE must be _userApplications_ | yes |
+| NO-USER-MODIFICATION | Tells that the values can't be modified by the user. The _AttributeType_ USAGE must be operational | yes |
+| USAGE | The kind of _AttributeType_ : one of {_userApplications_, _directoryOperation_, _directoryOperation_, _directoryOperation_}| yes |
+| extensions | Server specific parameters | yes |
+
+An _AttributeType_ has some default elements : it's not OBSOLETE, has no SUP, is not SINGLE-VALUE, is not COLLECTIVE, can be modified by the user, and has an _userApplications_ USAGE.
+
+You can check some of those elements using the following methods:
+
+* isAncestorOf( AttrbuteType ) : tells if the current _AttributeType_ is the ancestor of another one
+* isCollective() : tells if the current _AttributeType_ is a collective attribute
+* isDescendantOf( AttributeType ) : tells if the current _AttributeType_ inherits from another one
+* isOperational() : tells if the current _AttributeType_ is an Operational Attribute
+* isSingleValued() : tells if the current _AttributeType_ does not allow more than one value
+* isUser() : tells if the current _AttributeType_ is a User Application _AttributeType_
+* isUserModifiable() : tells if the _Attributes_ usng this _AttributeType_ can be modified on the server
diff --git a/source/api/user-guide/6.5-ava.md b/source/api/user-guide/6.5-ava.md
new file mode 100644
index 0000000..012f4ec
--- /dev/null
+++ b/source/api/user-guide/6.5-ava.md
@@ -0,0 +1,68 @@
+---
+title: 6.5 - Ava
+navPrev: 6.4-attribute-type.html
+navPrevText: 6.4 - AttributeType
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.6-csn.html
+navNextText: 6.6 - Csn
+---
+
+# 6.5 - Ava
+
+An _Ava_ is used to store an _Attribute_ value associated to an _AttributeType_.
+
+It describes a container holding an _AttributeType_ associated with a _Value_ in a _Rdn_. An example would be:
+
+ :::Java
+ dc=example
+
+where 'dc' is the _AttributeType_ and 'example' its associated value.
+
+The value can be a binary or a String value, depending on the _AttributeType_.
+
+We can create a schema aware _Ava_, or just a plain _Ava_. Having a schema aware _Ava_ allows further controls to be made on the value we inject. Is syntax will be checked against the _AttributeType_ syntax.
+
+Most of the time, one will not need to create or manipulate an _Ava_, as it's an internal element of a _Rdn_.
+
+_Ava_ is also a _Externalizable_ class.
+
+_Ava_ instances are immutable.
+
+
+## Usage
+
+As for the _Dn_ and _Rdn_ classes, we have to hold two representations of its internal _AttributeType_ and _Value_. The User Provided form, and the escaped form (which are used inside filters). If the _AVA_ is schema aware, the escaped form will be computed, otherwise we store the user provided form. Let's see some examples.
+
+
+### Schema Aware Ava
+
+Here we will create an _AVA_ and check that the user provided values are preserved. The _getName()_ and _getString()_ methods will give back this user provided form, in a form that allows it to be used in a Filter.
+
+ :::Java
+ Ava atav = new Ava( schemaManager, " CommonName ", " This is a TEST " );
+ System.out.println( "toString : '" + atav.toString() + "'" );
+ System.out.println( "Escaped : '" + atav.getEscaped() + "'" );
+ System.out.println( "UserProvided : '" + atav.getName() + "'" );
+
+will produce :
+
+ :::Java
+ toString : ' CommonName =\ This is a TEST\ '
+ Escaped : ' CommonName =\ This is a TEST\ '
+ UserProvided : ' CommonName =\ This is a TEST\ '
+
+
+*{+}Not Schema Aware{+}*
+
+The biggest difference in this case is that the _AttributeType_ will not be replaced by its _Oid_, but instead by a lowercase form of the provided ID. We also escape the leading and trailing spaces in the value.
+
+{code}
+public void testAvaSimpleNorm() throws LdapException
+{
+ Ava atav = new Ava( null, " CommonName ", " This is a TEST " );
+ assertEquals( " CommonName = This is a TEST ", atav.toString() );
+ assertEquals( "commonname=\\ This is a TEST\\ ", atav.getNormName() );
+ assertEquals( " CommonName = This is a TEST ", atav.getUpName() );
+}
+{code}
diff --git a/source/api/user-guide/6.6-csn.md b/source/api/user-guide/6.6-csn.md
new file mode 100644
index 0000000..b91db35
--- /dev/null
+++ b/source/api/user-guide/6.6-csn.md
@@ -0,0 +1,13 @@
+---
+title: 6.6 - Csn
+navPrev: 6.5-ava.html
+navPrevText: 6.5 - Ava
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.7-control.html
+navNextText: 6.7 - Control
+---
+
+# 6.6 - Csn
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.7-control.md b/source/api/user-guide/6.7-control.md
new file mode 100644
index 0000000..096c296
--- /dev/null
+++ b/source/api/user-guide/6.7-control.md
@@ -0,0 +1,323 @@
+---
+title: 6.7 - Control
+navPrev: 6.6-csn.html
+navPrevText: 6.6 - Csn
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.8-cursor.html
+navNextText: 6.8 - Cursor
+---
+
+# 6.7 - Control (...)
+
+A *LDAP* *Control* is an extension to an operation. It tells the server to do something aside the standard operation, or it let the server send back some information to the client. A *Control* contains three different parts :
+
+* An identifier, the control *OID*
+* A flag telling the server what to do if it does not know about the control or if it results in an error (either return an error or ignore the control)
+* A value which is generally *BER* encoded
+
+There are many controls available, some being standardized, other being server specific.
+
+One or more control can be added to any operation.
+
+Note that either the client or the server might not know about the controls being used, and if the _criticality_ flag is set to *FALSE*, the server will ignore the control in this case.
+
+
+## Managed controls
+
+Here is the list of *control*s the LDAP API currently know about. The following short names are used to name the LDAP Servers that support each control.
+
+* AP : ApacheDS
+* OL : OpenLDAP
+* AD : Active Directory
+* OS : OpenDS
+* OJ : OpenDJ
+* UI : UnboundID
+* ID : IMB DS
+* All : all the servers
+
+The C/S column indicate if the control is sent to the server (S), or back to the client (C) or can be used both ways (C/S).
+
+| Name | OID | Description | C/S | RFC | LDAP Servers |
+|---|---|---|---|---|---|
+| [AdDirSync](#addirsync) | 1.2.840.113556.1.4.841 | Microsoft LDAP Control for Directory Synchronization | C/S | [DIRSync draft](http://tools.ietf.org/html/draft-armijo-ldap-dirsync-01) | AD |
+| [AdPolicyHints](#adpolicyhints) | 1.2.840.113556.1.4.223 | Enforces the password history length constraint during password set | S | [LDAP_SERVER_POLICY_HINTS_OID](https://msdn.microsoft.com/en-us/library/hh128228.aspx) | AD |
+| [AdShowDeleted](#adshowdeleted) | 1.2.840.113556.1.4.417 | DirSync search returns deleted entries | C | [LDAP_SERVER_SHOW_DELETED_OID](https://msdn.microsoft.com/en-us/library/cc223326.aspx) | AD |
+| [Cascade](#cascade) | 1.3.6.1.4.1.18060.0.0.1 | Used to ask the server to delete an entry and all its descendants | S | None | AP |
+| [ChangeNotifications](#changenotifications) | 1.2.840.113556.1.4.528 | Registers the client to be notified when changes are made to an object in Active Directory. | S | [LDAP_SERVER_NOTIFICATION_OID](https://msdn.microsoft.com/en-us/library/cc223353.aspx) | AD |
+| [EntryChange](#entrychange) | 2.16.840.1.113730.3.4.7 | Provides a simple mechanism by which an LDAP client can receive notification of changes that occur in an LDAP server | C | [Persistent Search: A Simple LDAP Change Notification Mechanism](https://www.ietf.org/proceedings/51/I-D/draft-ietf-ldapext-psearch-03.txt) | AP |
+| [ManageDSAIT](#managedsait) | 2.16.840.1.113730.3.4.2 | Allows access to management objects as standard objects | S | [RFC 3296](https://www.ietf.org/rfc/rfc3296.txt) | AP/OL |
+| [PagedResults](#pagedresults) | 1.2.840.113556.1.4.319 | A request/response control used to implement a simple paging of search results | C/S | [RFC 2696](http://www.faqs.org/rfcs/rfc2696.html) | All |
+| [PasswordPolicy](#passwordpolicy) | 1.3.6.1.4.1.42.2.27.8.5.1 | The password policy control | C/S | [PasswordPolicy draft](https://tools.ietf.org/html/draft-behera-ldap-password-policy-10) | AP/OL |
+| [PermissiveModify](#permissivemodify) | 1.2.840.113556.1.4.1413 | Allows an LDAP modify to work under less restrictive conditions | S | [LDAP_SERVER_PERMISSIVE_MODIFY_OID](https://msdn.microsoft.com/en-us/library/cc223352.aspx) | AD |
+| [PersistentSearch](#persistentsearch) | 2.16.840.1.113730.3.4.3 | Provides a simple mechanism by which an LDAP client can receive notification of changes that occur in an LDAP server | S | [Persistent Search](https://tools.ietf.org/html/draft-ietf-ldapext-psearch-03) | AP/OL |
+| [ProxiedAuthz](#proxiedauthz) | 2.16.840.1.113730.3.4.18 | Defines the Proxy Authorization request | S | [RFC 4370](ttps://tools.ietf.org/html/rfc4370) | AP/OL |
+| [SortRequest](#sortrequest) | 1.2.840.113556.1.4.473 | Server Side Sort request control | S | [RFC 2891](http://tools.ietf.org/html/rfc2891) | AP/OL |
+| [SortResponse](#sortresponse) | 1.2.840.113556.1.4.474 | Server Side Sort request control | C | [RFC 2891](http://tools.ietf.org/html/rfc2891) | AP/OL |
+| [Subentries](#subentries) | 1.3.6.1.4.1.4203.1.10.1 | Controls the visibility of entries and subentries | S | [RFC 3672](http://tools.ietf.org/html/rfc3672) | AP/OL |
+| [SyncDoneValue](#syncdonevalue) | 1.3.6.1.4.1.4203.1.9.1.3 | Control sent when replication has been completed. It contains a cookie. | C | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
+| [SyncRequestValue](#syncrequestvalue) | 1.3.6.1.4.1.4203.1.9.1.1 | Controls the syncrepl process | S | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
+| [SyncStateValue](#syncstatevalue) | 1.3.6.1.4.1.4203.1.9.1.2 | Gives the syncrepl state | C | [RFC 4533](https://tools.ietf.org/html/rfc4533) | AP/OL |
+| [VirtualListViewRequest](#virtuallistviewrequest) | 2.16.840.1.113730.3.4.9 | Sent to the server to request a subset of results | S | [Scrolling View Browsing of Search Results](https://tools.ietf.org/html/draft-ietf-ldapext-ldapv3-vlv-09) | AP |
+| [VirtualListViewResponse](#virtuallistviewresponse) | 2.16.840.1.113730.3.4.10 | Sent back to the client to give the search current status | C | [Scrolling View Browsing of Search Results](https://tools.ietf.org/html/draft-ietf-ldapext-ldapv3-vlv-09) | AP |
+
+## How to use controls
+
+It's quite simple. You just have to instanciate the control you want to use, set its value, and add it to the request you will send to the server. Here is an example with the *ManageDsaIT* control :
+
+ :::Java
+ AddRequest addRequest = new AddRequestImpl(); // Create the request
+ ManageDsaIT manageDSAIT = new ManageDsaITImpl(); // Instanciate the control
+ manageDSAIT.setCritical( true ); // Set a value
+ addRequest.addControl( manageDSAIT ); // Add the control to the request
+ ...
+
+
+and that's it !
+
+Note that you have to create an instance of teh operation you want to send to the server, if yu want to add a control to it.
+
+On the client side, you may want to check if there is a control and read it if so. This is a bit more complex, because you need to know which kind of control you are expecting. We will see with a more complex control, the *Paged Search* control (which allows the user to get a specific number of enries at each call). Here, we will fetch 4 entries in one go, until all the entries have been read, and as we have 10 entries to read, we will send 3 *SearchRequest*, teh first two will return 4 entries and the last one only 2.
+
+
+ :::Java
+ try ( LdapConnection connection = new LdapNetworkConnection( "MyServer", 389 ) )
+ {
+ connection.bind( "cn=user,ou=system", "secret" );
+
+ // Create the control, and tell it we want 4 entries for every call
+ PagedResults pagedControl = new PagedResultsImpl();
+ pagedControl.setSize( 4 );
+
+ // Read all the elements
+ List<Entry> results = new ArrayList<>();
+
+ // Create the SearchRequest
+ SearchRequest searchRequest = new SearchRequestImpl();
+ searchRequest.setBase( new Dn( "dc=users,ou=system" ) );
+ searchRequest.setFilter( "(cn=*)" );
+ searchRequest.setScope( SearchScope.SUBTREE );
+
+ while ( true )
+ {
+ // Add the PagedSearch control to the SearchRequest
+ searchRequest.addControl( pagedControl );
+
+ // Do the search now
+ try ( SearchCursor cursor = connection.search( searchRequest ) )
+ {
+ // Loop on all the entries we got back (Should be 4, or less)
+ while ( cursor.next() )
+ {
+ Entry result = cursor.getEntry();
+ results.add( result );
+ }
+
+ // Check if we have reached the size limit
+ if ( cursor.getSearchResultDone().getLdapResult().getResultCode() == ResultCodeEnum.SIZE_LIMIT_EXCEEDED )
+ {
+ break;
+ }
+
+ // Now check the returned controls
+ Map<String, Control> controls = cursor.getSearchResultDone().getControls();
+
+ // We should get a PagedResult response
+ PagedResults responseControl = ( PagedResults ) controls.get( PagedResults.OID );
+
+ if ( responseControl != null )
+ {
+ // check if this is over, ie the cookie is empty
+ byte[] cookie = responseControl.getCookie();
+
+ if ( Strings.isEmpty( cookie ) )
+ {
+ // Ok, we are done
+ break;
+ }
+
+ // Prepare the next iteration, sending a bad cookie
+ pagedControl.setCookie( cookie );
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ // At this point, we should have read 10 entries
+ }
+
+This sounds like a bit complex, but actually, this control is complex. What we are interested in is the way we get the control returned by the server. In this case, the control we are interested in is attached to the *SearchResultDone* response, which is the last result we have when reading the cursor. As we may have more than one control, the response conains a _Map_ of controls, ot of which we should be able to retreive the *PagedSearch* control from its *OID*. This is what does this piece of code :
+
+ :::Java
+ ...
+ // We should get a PagedResult response
+ PagedResults responseControl = ( PagedResults ) controls.get( PagedResults.OID );
+ ...
+
+If it's not null, we can proceed with the control.
+
+Side note : in this piece of code, we don't close the connection nor the cursor, because they are *Closeable* : They will be close when we exit the _try_ scope. This is a feature added in *Java 7*, called *try with resources*
+
+## Managed Controls detail
+
+### AdDirSync
+
+A control used to initiate a synchronization with an *Active Directory* server, and get back the results. Check [Microsoft LDAP Control for Directory Synchronization](https://tools.ietf.org/html/draft-armijo-ldap-dirsync-01) for a better understanding on how to use this control.
+
+* OID : *1.2.840.113556.1.4.841*
+* Criticality : TRUE
+* ASN.1 description :
+
+Sent to the server :
+
+
+ realReplControlValue ::= SEQUENCE {
+ flags integer
+ maxBytes integer
+ cookie OCTET STRING
+ }
+
+This control is only valid when send with a *SearchRequest*.
+
+Received from the server :
+
+
+ realReplControlValue ::= SEQUENCE {
+ flag integer
+ maxReturnLength integer
+ cookie OCTET STRING
+ }
+
+The cookie read from this control has to be injected in the control sent to the server for the next search.
+
+### AdPolicyHints
+
+* OID : 1.2.840.113556.1.4.223
+
+### AdShowDeleted
+
+* OID : 1.2.840.113556.1.4.417
+
+### Cascade
+
+* OID : 1.3.6.1.4.1.18060.0.0.1
+
+### ChangeNotifications
+
+* OID : 1.2.840.113556.1.4.528
+
+### EntryChange
+
+* OID : 2.16.840.1.113730.3.4.7
+
+### ManageDSAIT
+
+* OID : *2.16.840.1.113730.3.4.2*
+
+This is oe of the simplest control : it has no value, and he criticality flag may be absent.
+
+It's used to get access to special objects, like *referrals* or *subentries* as normal objects. Let's see what that means for *referrals*.
+
+A *Referral* is a special object which once returned to the client, will automatically will redirect the client to another part of teh *DIT* (or to another *LDAP* server). So to speak, the end user does not see the *referral*, but the reffered entry. The question is : how do we set a *referral*, or how do we modify it ? We use the *ManageDsaIT* control.
+
+Let say we have such an entry, which is actually a referal :
+
+
+ dn: uid=entryRef,ou=users,dc=acme,dc=com
+ objectClass: extensibleObject
+ objectClass: referral
+ objectClass: top
+ uid: entryref"
+ ref: ldap://localhost:10389/uid=entry,ou=users,dc=acme,dc=com
+ ref: ldap://trust:10389/uid=entry,ou=users,dc=trust,dc=com
+
+A client searchingg for _uid=entryRef,ou=users,dc=acme,dc=com_ will be redirected to _uid=entry,ou=users,dc=acme,dc=com_ on the local server or on _uid=entry,ou=users,dc=trust,dc=com_ on the *trust* server (it's up to the client to decide which entry to fetch).
+
+If we want to modify this referral, we need to add the *ManageDsaIT* control :
+
+
+ :::Java
+ try ( LdapConnection connection = new LdapNetworkConnection( "MyServer", 389 ) )
+ {
+ connection.bind( "cn=user,ou=system", "secret" );
+
+ // modify the referral
+ ModifyRequest modifyRequest = new ModifyRequestImpl();
+ modifyRequest.setName( new Dn( "uid=entryRef,ou=users,dc=acme,dc=com" ) );
+ modifyRequest.add( "ref", "ldap://subsidiary:10389/uid=entry,ou=users,dc=subsidiary,dc=com" );
+
+ // Add the control
+ modifyRequest.addControl( new ManageDsaITImpl() );
+
+ // And apply the modification
+ connection.modify( modifyRequest );
+ }
+
+Now, if we fetch the entry (still using the control), it will looks like :
+
+
+ dn: uid=entryRef,ou=users,dc=acme,dc=com
+ objectClass: extensibleObject
+ objectClass: referral
+ objectClass: top
+ uid: entryref"
+ ref: ldap://localhost:10389/uid=entry,ou=users,dc=acme,dc=com
+ ref: ldap://trust:10389/uid=entry,ou=users,dc=trust,dc=com
+ ref: ldap://subsidiary:10389/uid=entry,ou=users,dc=subsidiary,dc=com
+
+As you can see, a third *ref* value has been added.
+
+### PagedResults
+
+* OID : *1.2.840.113556.1.4.319*
+
+### PasswordPolicy
+
+* OID : 1.3.6.1.4.1.42.2.27.8.5.1
+
+### PermissiveModify
+
+* OID : 1.2.840.113556.1.4.1413
+
+### PersistentSearch
+
+* OID : 2.16.840.1.113730.3.4.3
+
+### ProxiedAuthz
+
+* OID : 2.16.840.1.113730.3.4.18
+
+### SortRequest
+
+* OID : 1.2.840.113556.1.4.473
+
+### SortResponse
+
+* OID : 1.2.840.113556.1.4.474
+
+### Subentries
+
+* OID : 1.3.6.1.4.1.4203.1.10.1
+
+### SyncDoneValue
+
+* OID : 1.3.6.1.4.1.4203.1.9.1.3
+
+### SyncRequestValue
+
+* OID : 1.3.6.1.4.1.4203.1.9.1.1
+
+### SyncStateValue
+
+* OID : 1.3.6.1.4.1.4203.1.9.1.2
+
+### VirtualListViewRequest
+
+* OID : 2.16.840.1.113730.3.4.9
+
+### VirtualListViewResponse
+
+* OID : 2.16.840.1.113730.3.4.10
diff --git a/source/api/user-guide/6.8-cursor.md b/source/api/user-guide/6.8-cursor.md
new file mode 100644
index 0000000..8d800b6
--- /dev/null
+++ b/source/api/user-guide/6.8-cursor.md
@@ -0,0 +1,13 @@
+---
+title: 6.8 - Cursor
+navPrev: 6.7-control.html
+navPrevText: 6.7 - Control
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.9-dn.html
+navNextText: 6.9 - Dn
+---
+
+# 6.8 - Cursor
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/6.9-dn.md b/source/api/user-guide/6.9-dn.md
new file mode 100644
index 0000000..17211bc
--- /dev/null
+++ b/source/api/user-guide/6.9-dn.md
@@ -0,0 +1,13 @@
+---
+title: 6.9 - Dn
+navPrev: 6.8-cursor.html
+navPrevText: 6.8 - Cursor
+navUp: 6-ldap-data-structures.html
+navUpText: 6 - LDAP data structures
+navNext: 6.10-dit-content-rule.html
+navNextText: 6.10 - DITContentRule
+---
+
+# 6.9 - Dn
+
+>**Note:** Contents for this page will be added soon...
diff --git a/source/api/user-guide/7-requests-responses.md b/source/api/user-guide/7-requests-responses.md
new file mode 100644
index 0000000..57e35c1
--- /dev/null
+++ b/source/api/user-guide/7-requests-responses.md
@@ -0,0 +1,145 @@
+---
+title: 7 - Requests and Responses
+navPrev: 6-ldap-data-structures.html
+navPrevText: 6 - LDAP Data Structures
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 8-ldap-rfcs.html
+navNextText: 8 - LDAP Related RFCs
+---
+
+# 7 - Requests and Responses (...)
+
+Here we will describe all the Java structures used to process LDAP message (Requests and Responses). This can be useful whenever one wants to send a message or process a response, using all possible options.
+
+## Inherited classes
+
+All the messages inherit from a few classes that are described here. They gather the common fields used across most message types.
+
+### The Message interface
+
+This is the parent of the message hierarchy. Every message has a few characteristics that are available across all of its inherited classes:
+
+ * Id : the message ID which is generated by the server or the client. You should never add it
+ * Controls : The list of controls you add to a request or that get added by the response
+
+Here is the Message interface:
+
+ :::Java
+ /**
+ * Root interface for all LDAP message type interfaces.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+ public interface Message
+ {
+ /**
+ * Gets the LDAP message type code associated with this Message. Each
+ * request and response type has a unique message type code defined by the
+ * protocol in <a href="http://www.faqs.org/rfcs/rfc2251.html">RFC 2251</a>.
+ *
+ * @return the message type code.
+ */
+ MessageTypeEnum getType();
+
+
+ /**
+ * Gets the controls associated with this message mapped by OID.
+ *
+ * @return Map of OID strings to Control object instances.
+ */
+ Map<String, Control> getControls();
+
+
+ /**
+ * Gets the control associated with the given OID.
+ *
+ * @param oid The Cntrol's OID we are looking for
+ * @return The Control object instance with the OID.
+ */
+ Control getControl( String oid );
+
+
+ /**
+ * Checks whether or not this message has the specified control.
+ *
+ * @param oid the OID of the control
+ * @return true if this message has the control, false if it does not
+ */
+ boolean hasControl( String oid );
+
+
+ /**
+ * Adds a control to this Message.
+ *
+ * @param control the control to add.
+ * @return A Message reference
+ * @throws org.apache.directory.shared.ldap.model.exception.MessageException if controls cannot be added to this Message or the control is
+ * not known etc.
+ */
+ Message addControl( Control control ) throws MessageException;
+
+
+ /**
+ * Adds an array of controls to this Message.
+ *
+ * @param controls the controls to add.
+ * @return A Message reference
+ * @throws MessageException if controls cannot be added to this Message or they are not known etc.
+ */
+ Message addAllControls( Control[] controls ) throws MessageException;
+
+
+ /**
+ * Deletes a control removing it from this Message.
+ *
+ * @param control the control to remove.
+ * @return A Message reference
+ * @throws MessageException if controls cannot be added to this Message or the control is
+ * not known etc.
+ */
+ Message removeControl( Control control ) throws MessageException;
+
+
+ /**
+ * Gets the session unique message sequence id for this message. Requests
+ * and their responses if any have the same message id. Clients at the
+ * initialization of a session start with the first message's id set to 1
+ * and increment it with each transaction.
+ *
+ * @return the session unique message id.
+ */
+ int getMessageId();
+
+
+ /**
+ * Sets the Message ID for this request
+ * @param messageId The message Id
+ * @return A Message reference
+ */
+ Message setMessageId( int messageId );
+ }
+
+## Contents
+
+* [7.1 - AbandonRequest](7.1-abandon-request.html)
+* [7.2 - AddRequest](7.2-add-request.html)
+* [7.3 - AddResponse](7.3-add-response.html)
+* [7.4 - BindRequest](7.4-bind-request.html)
+* [7.5 - BindResponse](7.5-bind-response.html)
+* [7.6 - CompareRequest](7.6-compare-request.html)
+* [7.7 - CompareResponse](7.7-compare-response.html)
+* [7.8 - DelRequest](7.8-del-request.html)
+* [7.9 - DelResponse](7.9-del-response.html)
+* [7.10 - ExtendedRequest](7.10-extended-request.html)
+* [7.11 - ExtendedResponse](7.11-extended-response.html)
+* [7.12 - IntermediateResponse](7.12-intermediate-response.html)
+* [7.13 - ModDnRequest](7.13-mod-dn-request.html)
+* [7.14 - ModDnResponse](7.14-mod-dn-response.html)
+* [7.15 - ModifyRequest](7.15-modify-request.html)
+* [7.16 - ModifyResponse](7.16-modify-response..html)
+* [7.17 - SearchRequest](7.17-search-request.html)
+* [7.18 - SearchResultDone](7.18-search-result-done.html)
+* [7.19 - SearchResultEntry](7.19-search-result-entry.html)
+* [7.20 - SearchResultReference](7.20-search-result-reference.html)
+* [7.21 - UnbindRequest](7.21-unbind-request.html)
diff --git a/source/api/user-guide/7.1-abandon-request.md b/source/api/user-guide/7.1-abandon-request.md
new file mode 100644
index 0000000..44b8c3c
--- /dev/null
+++ b/source/api/user-guide/7.1-abandon-request.md
@@ -0,0 +1,64 @@
+---
+title: 7.1 - AbandonRequest
+navPrev: 7-requests-responses.html
+navPrevText: 7 - Requests and Responses
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.2-add-request.html
+navNextText: 7.2 - AddRequest
+---
+
+# 7.1 AbandonRequest
+
+This request is used to tell the server that a given request (sent previously) has been abandoned. The only required parameter is the *ID* field of a request you want to stop.
+
+ :::Java
+ public interface AbandonRequest extends Request
+ {
+ /**
+ * Gets the id of the request operation to terminate.
+ *
+ * @return the id of the request message to abandon
+ */
+ int getAbandoned();
+
+
+ /**
+ * Sets the id of the request operation to terminate.
+ *
+ * @param requestId the sequence id of the request message to abandon
+ * @return The AbandonRequest instance
+ */
+ AbandonRequest setAbandoned( int requestId );
+ }
+
+There are two existing implementations that can used:
+
+* _AbandonRequestImpl_ : The default implementation.
+* _AbandonRequestDsml_ : An implementation used when you want to generate a DSML request
+
+The _AbandonRequest_ message does not have a response, the abandonned request will just be stopped.
+
+## Usage
+
+It's pretty easy to do. You just to inject the ID of the request you want to abandon:
+
+ :::Java
+ connection.abandon( messageId );
+
+This will interrupt the request whose ID equals _messageId_.
+
+### Adding some controls
+
+You can add a control in the _AbandonRequest_, once you create an instance of _AbandonRequestImpl:
+
+
+ :::Java
+ AbandonRequest abandonRequest = new AbandonRequestImpl( messageId );
+
+ // Add your control
+ abandonRequest.addControl( control );
+
+ // Send the request
+ connection.abandon( abandonRequest );
+_
diff --git a/source/api/user-guide/7.10-extended-request.md b/source/api/user-guide/7.10-extended-request.md
new file mode 100644
index 0000000..f0d6674
--- /dev/null
+++ b/source/api/user-guide/7.10-extended-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.10 - ExtendedRequest
+navPrev: 7.9-del-response.html
+navPrevText: 7.9 - DelResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.11-extended-response.html
+navNextText: 7.11 - ExtendedResponse
+---
+
+# 7.10 - ExtendedRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.11-extended-response.md b/source/api/user-guide/7.11-extended-response.md
new file mode 100644
index 0000000..02144d6
--- /dev/null
+++ b/source/api/user-guide/7.11-extended-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.11 - ExtendedResponse
+navPrev: 7.10-extended-request.html
+navPrevText: 7.10 - ExtendedRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.12-intermediate-response.html
+navNextText: 7.12 - IntermediateResponse
+---
+
+# 7.11 - ExtendedResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.12-intermediate-response.md b/source/api/user-guide/7.12-intermediate-response.md
new file mode 100644
index 0000000..d07cbd8
--- /dev/null
+++ b/source/api/user-guide/7.12-intermediate-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.12 - IntermediateResponse
+navPrev: 7.11-extended-response.html
+navPrevText: 7.11 - ExtendedResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.13-mod-dn-request.html
+navNextText: 7.13 - ModDnRequest
+---
+
+# 7.12 - IntermediateResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.13-mod-dn-request.md b/source/api/user-guide/7.13-mod-dn-request.md
new file mode 100644
index 0000000..ab28f49
--- /dev/null
+++ b/source/api/user-guide/7.13-mod-dn-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.13 - ModDnRequest
+navPrev: 7.12-intermediate-response.html
+navPrevText: 7.12 - IntermediateResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.14-mod-dn-response.html
+navNextText: 7.14 - ModDnResponse
+---
+
+# 7.13 - ModDnRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.14-mod-dn-response.md b/source/api/user-guide/7.14-mod-dn-response.md
new file mode 100644
index 0000000..c2c345a
--- /dev/null
+++ b/source/api/user-guide/7.14-mod-dn-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.14 - ModDnResponse
+navPrev: 7.13-mod-dn-request.html
+navPrevText: 7.13 - ModDnRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.15-modify-request.html
+navNextText: 7.15 - ModifyRequest
+---
+
+# 7.14 - ModDnResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.15-modify-request.md b/source/api/user-guide/7.15-modify-request.md
new file mode 100644
index 0000000..6007720
--- /dev/null
+++ b/source/api/user-guide/7.15-modify-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.15 - ModifyRequest
+navPrev: 7.14-mod-dn-response.html
+navPrevText: 7.14 - ModDnResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.16-modify-response.html
+navNextText: 7.16 - ModifyResponse
+---
+
+# 7.15 - ModifyRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.16-modify-response.md b/source/api/user-guide/7.16-modify-response.md
new file mode 100644
index 0000000..280be32
--- /dev/null
+++ b/source/api/user-guide/7.16-modify-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.16 - ModifyResponse
+navPrev: 7.15-modify-request.html
+navPrevText: 7.15 - ModifyRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.17-search-request.html
+navNextText: 7.17 - SearchRequest
+---
+
+# 7.16 - ModifyResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.17-search-request.md b/source/api/user-guide/7.17-search-request.md
new file mode 100644
index 0000000..cfd1238
--- /dev/null
+++ b/source/api/user-guide/7.17-search-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.17 - SearchRequest
+navPrev: 7.16-modify-response.html
+navPrevText: 7.16 - ModifyResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.18-search-result-done.html
+navNextText: 7.18 - SearchResultDone
+---
+
+# 7.17 - SearchRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.18-search-result-done.md b/source/api/user-guide/7.18-search-result-done.md
new file mode 100644
index 0000000..ac19e9f
--- /dev/null
+++ b/source/api/user-guide/7.18-search-result-done.md
@@ -0,0 +1,13 @@
+---
+title: 7.18 - SearchResultDone
+navPrev: 7.17 - search-request.html
+navPrevText: 7.17 - SearchRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.19-search-result-entry.html
+navNextText: 7.19 - SearchResultEntry
+---
+
+# 7.18 - SearchResultDone
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.19-search-result-entry.md b/source/api/user-guide/7.19-search-result-entry.md
new file mode 100644
index 0000000..46e1af7
--- /dev/null
+++ b/source/api/user-guide/7.19-search-result-entry.md
@@ -0,0 +1,13 @@
+---
+title: 7.19 - SearchResultEntry
+navPrev: 7.18-search-result-done.html
+navPrevText: 7.18 - SearchResultDone
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.20-search-result-reference.html
+navNextText: 7.20 - SearchResultReference
+---
+
+# 7.19 - SearchResultEntry
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.2-add-request.md b/source/api/user-guide/7.2-add-request.md
new file mode 100644
index 0000000..06199b1
--- /dev/null
+++ b/source/api/user-guide/7.2-add-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.2 - AddRequest
+navPrev: 7.1-abandon-request.html
+navPrevText: 7.1 - AbandonRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.3-add-response.html
+navNextText: 7.3 - AddResponse
+---
+
+# 7.2 - AddRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.20-search-result-reference.md b/source/api/user-guide/7.20-search-result-reference.md
new file mode 100644
index 0000000..8cc50d0
--- /dev/null
+++ b/source/api/user-guide/7.20-search-result-reference.md
@@ -0,0 +1,13 @@
+---
+title: 7.20 - SearchResultReference
+navPrev: 7.19-search-result-entry.html
+navPrevText: 7.19 - SearchResultEntry
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.21-unbind-request.html
+navNextText: 7.21 - UnbindRequest
+---
+
+# 7.20 - SearchResultReference
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.21-unbind-request.md b/source/api/user-guide/7.21-unbind-request.md
new file mode 100644
index 0000000..430c5bd
--- /dev/null
+++ b/source/api/user-guide/7.21-unbind-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.21 - UnbindRequest
+navPrev: 7.19-search-result-entry.html
+navPrevText: 7.19 - SearchResultEntry
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 8-ldap-rfcs.html
+navNextText: 8 - LDAP related RFCs
+---
+
+# 7.21 - UnbindRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.3-add-response.md b/source/api/user-guide/7.3-add-response.md
new file mode 100644
index 0000000..04b75e4
--- /dev/null
+++ b/source/api/user-guide/7.3-add-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.3 - AddResponse
+navPrev: 7.2-add-request.html
+navPrevText: 7.2 - AddRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.4-bind-request.html
+navNextText: 7.4 - BindRequest
+---
+
+# 7.3 - AddResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.4-bind-request.md b/source/api/user-guide/7.4-bind-request.md
new file mode 100644
index 0000000..cfc0159
--- /dev/null
+++ b/source/api/user-guide/7.4-bind-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.4 - BindRequest
+navPrev: 7.3-add-response.html
+navPrevText: 7.3 - AddResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.5-bind-response.html
+navNextText: 7.5 - BindResponse
+---
+
+# 7.4 - BindRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.5-bind-response.md b/source/api/user-guide/7.5-bind-response.md
new file mode 100644
index 0000000..bf86c15
--- /dev/null
+++ b/source/api/user-guide/7.5-bind-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.5 - BindResponse
+navPrev: 7.4-bind-request.html
+navPrevText: 7.4 - BindRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.6-compare-request.html
+navNextText: 7.6 - CompareRequest
+---
+
+# 7.5 - BindResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.6-compare-request.md b/source/api/user-guide/7.6-compare-request.md
new file mode 100644
index 0000000..c4d3d39
--- /dev/null
+++ b/source/api/user-guide/7.6-compare-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.6 - CompareRequest
+navPrev: 7.5-bind-response.html
+navPrevText: 7.5 - BindResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.7-compare-response.html
+navNextText: 7.7 - CompareResponse
+---
+
+# 7.6 - CompareRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.7-compare-response.md b/source/api/user-guide/7.7-compare-response.md
new file mode 100644
index 0000000..ae204a5
--- /dev/null
+++ b/source/api/user-guide/7.7-compare-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.7 - CompareResponse
+navPrev: 7.6-compare-request.html
+navPrevText: 7.6 - CompareRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.8-del-request.html
+navNextText: 7.8 - DelRequest
+---
+
+# 7.7 - CompareResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.8-del-request.md b/source/api/user-guide/7.8-del-request.md
new file mode 100644
index 0000000..d5d6163
--- /dev/null
+++ b/source/api/user-guide/7.8-del-request.md
@@ -0,0 +1,13 @@
+---
+title: 7.8 - DelRequest
+navPrev: 7.7-compare-response.html
+navPrevText: 7.7 - CompareResponse
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.9-del-response.html
+navNextText: 7.9 - DelResponse
+---
+
+# 7.8 - DelRequest
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/7.9-del-response.md b/source/api/user-guide/7.9-del-response.md
new file mode 100644
index 0000000..c92f836
--- /dev/null
+++ b/source/api/user-guide/7.9-del-response.md
@@ -0,0 +1,13 @@
+---
+title: 7.9 - DelResponse
+navPrev: 7.8-del-request.html
+navPrevText: 7.8 - DelRequest
+navUp: 7-requests-responses.html
+navUpText: 7 - Requests and Responses
+navNext: 7.10-extended-request.html
+navNextText: 7.10 - ExtendedRequest
+---
+
+# 7.9 - DelResponse
+
+>**Note:** Contents for this page will be added soon...
\ No newline at end of file
diff --git a/source/api/user-guide/8-ldap-rfcs.md b/source/api/user-guide/8-ldap-rfcs.md
new file mode 100644
index 0000000..36124c8
--- /dev/null
+++ b/source/api/user-guide/8-ldap-rfcs.md
@@ -0,0 +1,181 @@
+---
+title: 8 - LDAP Related RFCs
+navPrev: 7-requests-response.html
+navPrevText: 7 - Requests and Responses
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext:
+navNextText:
+---
+
+# 8 - LDAP Related RFCs
+
+**LDAP** and **X.500** are specified through its many **RFCs**. Here is the list of available **RFCs** by category (there are about 100 RFCs available, some now deprecated, other obsolete.
+
+This page list all the existing **RFCs**, obsolete or not.
+
+![](../../images/icons/information.gif) : Informational
+
+![](../../images/icons/lightbulb.gif) : Historic
+
+![](../../images/icons/lightbulb_on.gif) : Proposed Standard
+
+![](../../images/icons/warning.gif) : Experimental
+
+![](../../images/icons/thumbs_up.gif) : Best current practice
+
+## X.500 related RFCs
+
+### Obsolete RFCs
+| Number | Description | Obsoleted by | Status |
+|---|---|---|---|
+| [RFC1274](http://tools.ietf.org/html/rfc1274) | The COSINE and Internet X.500 Schema. | [RFC4524](http://tools.ietf.org/html/rfc4524) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1487](http://tools.ietf.org/html/rfc1487) | X.500 Lightweight Directory Access Protocol. | [RFC1777](http://tools.ietf.org/html/rfc1777), [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1488](http://tools.ietf.org/html/rfc1488) | The X.500 String Representation of Standard Attribute Syntaxes. | [RFC1778](http://tools.ietf.org/html/rfc1778) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC1567](http://tools.ietf.org/html/rfc1567) | X.500 Directory Monitoring MIB. | [RFC2605](http://tools.ietf.org/html/rfc2605) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC1617](http://tools.ietf.org/html/rfc1617) | Naming and Structuring Guidelines for X.500 Directory Pilots. | [RFC1384](http://tools.ietf.org/html/rfc1384) | ![](../../images/icons/information.gif) |
+| [RFC1632](http://tools.ietf.org/html/rfc1632) | A Revised Catalog of Available X.500 Implementations. | [RFC2116](http://tools.ietf.org/html/rfc2116) | ![](../../images/icons/information.gif) |
+| [RFC1798](http://tools.ietf.org/html/rfc1798) | Connection-less Lightweight X.500 Directory Access Protocol. | [RFC3352](http://tools.ietf.org/html/rfc3352) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1836](http://tools.ietf.org/html/rfc1836) | Representing the O/R Address hierarchy in the X.500 Directory Information Tree. | [RFC2294](http://tools.ietf.org/html/rfc2294) | ![](../../images/icons/warning.gif) |
+| [RFC1837](http://tools.ietf.org/html/rfc1837) | Representing Tables and Subtrees in the X.500 Directory. | [RFC2293](http://tools.ietf.org/html/rfc2293) | ![](../../images/icons/warning.gif) |
+| [RFC1838](http://tools.ietf.org/html/rfc1838) | Use of the X.500 Directory to support mapping between X.400 and RFC 822 Addresses. | [RFC2164](http://tools.ietf.org/html/rfc2164) | ![](../../images/icons/warning.gif) |
+
+### Active RFCs
+| Number | Description | Status |
+|---|---|---|
+| [RFC1275](http://tools.ietf.org/html/rfc1275) | Replication Requirements to provide an Internet Directory using X.500. | ![](../../images/icons/information.gif) |
+| [RFC1276](http://tools.ietf.org/html/rfc1276) | Replication and Distributed Operations extensions to provide an Internet Directory using X.500. | ![](../../images/icons/lightbulb.gif) |
+| [RFC1279](http://tools.ietf.org/html/rfc1279) | X.500 and Domains. S.E. Hardcastle-Kille. | ![](../../images/icons/warning.gif) |
+| [RFC1308](http://tools.ietf.org/html/rfc1308) | Executive Introduction to Directory Services Using the X.500 Protocol. | ![](../../images/icons/information.gif) |
+| [RFC1309](http://tools.ietf.org/html/rfc1309) | Technical Overview of Directory Services Using the X.500 Protocol. | ![](../../images/icons/information.gif) |
+| [RFC1330](http://tools.ietf.org/html/rfc1330) | Recommendations for the Phase I Deployment of OSI Directory Services (X.500) and OSI Message Handling Services (X.400) within the ESNET Community. | ![](../../images/icons/information.gif) |
+| [RFC1430](http://tools.ietf.org/html/rfc1430) | A Strategic Plan for Deploying an Internet X.500 Directory Service. | ![](../../images/icons/information.gif) |
+| [RFC1491](http://tools.ietf.org/html/rfc1491) | A Survey of Advanced Usages of X.500. | ![](../../images/icons/information.gif) |
+| [RFC1562](http://tools.ietf.org/html/rfc1562) | Naming Guidelines for the AARNet X.500 Directory Service. | ![](../../images/icons/information.gif) |
+| [RFC1608](http://tools.ietf.org/html/rfc1608) | Representing IP Information in the X.500 Directory. | ![](../../images/icons/warning.gif) |
+| [RFC1609](http://tools.ietf.org/html/rfc1609) | Charting Networks in the X.500 Directory. | ![](../../images/icons/warning.gif) |
+| [RFC1801](http://tools.ietf.org/html/rfc1801) | MHS use of the X.500 Directory to support MHS Routing. | ![](../../images/icons/warning.gif) |
+| [RFC1802](http://tools.ietf.org/html/rfc1802) | Introducing Project Long Bud: Internet Pilot Project for the Deployment of X.500 Directory Information in Support of X.400 Routing. | ![](../../images/icons/information.gif) |
+| [RFC1803](http://tools.ietf.org/html/rfc1803) | Recommendations for an X.500 Production Directory Service. | ![](../../images/icons/information.gif) |
+| [RFC1804](http://tools.ietf.org/html/rfc1804) | Schema Publishing in X.500 Directory. | ![](../../images/icons/warning.gif) |
+| [RFC1943](http://tools.ietf.org/html/rfc1943) | Building an X.500 Directory Service in the US. B. Jennings. | ![](../../images/icons/information.gif) |
+| [RFC2079](http://tools.ietf.org/html/rfc2079) | Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2116](http://tools.ietf.org/html/rfc2116) | X.500 Implementations Catalog-96. | ![](../../images/icons/information.gif) |
+| [RFC2120](http://tools.ietf.org/html/rfc2120) | Managing the X.500 Root Naming Context. | ![](../../images/icons/warning.gif) |
+| [RFC2164](http://tools.ietf.org/html/rfc2164) | Use of an X.500/LDAP directory to support MIXER address mapping. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2293](http://tools.ietf.org/html/rfc2293) | Representing Tables and Subtrees in the X.500 Directory. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2294](http://tools.ietf.org/html/rfc2294) | Representing the O/R Address hierarchy in the X.500 Directory Information Tree. | ![](../../images/icons/lightbulb_on.gif) |
+
+## Kerberos related RFCs
+
+| Number | Description | Obsoleted by | Status |
+|---|---|---|---|
+| [RFC1510](http://tools.ietf.org/html/rfc1510) | The Kerberos Network Authentication Service (V5). | [RFC4120](http://tools.ietf.org/html/rfc4120) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4120](http://tools.ietf.org/html/rfc4120) | The Kerberos Network Authentication Service (V5). | | ![](../../images/icons/lightbulb_on.gif) |
+
+## LDAP RFCs
+
+### Obsolete RFCs
+| Number | Description | Obsoleted by | Status |
+|---|---|---|---|
+| [RFC1558](http://tools.ietf.org/html/rfc1558) | A String Representation of LDAP Search Filters. | [RFC1960](http://tools.ietf.org/html/rfc1960) | ![](../../images/icons/information.gif) |
+| [RFC1777](http://tools.ietf.org/html/rfc1777) | Lightweight Directory Access Protocol. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1778](http://tools.ietf.org/html/rfc1778) | The String Representation of Standard Attribute Syntaxes. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1779](http://tools.ietf.org/html/rfc1779) | A String Representation of Distinguished Names. | [RFC2253](http://tools.ietf.org/html/rfc2253), [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
+| [RFC1959](http://tools.ietf.org/html/rfc1959) | An LDAP URL Format. | [RFC2255](http://tools.ietf.org/html/rfc2255) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC1960](http://tools.ietf.org/html/rfc1960) | A String Representation of LDAP Search Filters. | [RFC2254](http://tools.ietf.org/html/rfc2254) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2251](http://tools.ietf.org/html/rfc2251) | Lightweight Directory Access Protocol (v3). | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4511](http://tools.ietf.org/html/rfc4511), [RFC4513](http://tools.ietf.org/html/rfc4513), [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2252](http://tools.ietf.org/html/rfc2252) | Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4517](http://tools.ietf.org/html/rfc4517), [RFC4523](http://tools.ietf.org/html/rfc4523), [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2253](http://tools.ietf.org/html/rfc2253) | Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4514](http://tools.ietf.org/html/rfc4514) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2254](http://tools.ietf.org/html/rfc2254) | The String Representation of LDAP Search Filters. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4515](http://tools.ietf.org/html/rfc4515) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2255](http://tools.ietf.org/html/rfc2255) | The LDAP URL Format. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4516](http://tools.ietf.org/html/rfc4516) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2256](http://tools.ietf.org/html/rfc2256) | A Summary of the X.500(96) User Schema for use with LDAPv3. | [RFC4517](http://tools.ietf.org/html/rfc4517), [RFC4519](http://tools.ietf.org/html/rfc4519), [RFC4523](http://tools.ietf.org/html/rfc4523), [RFC4512](http://tools.ietf.org/html/rfc4512), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2559](http://tools.ietf.org/html/rfc2559) | Internet X.509 Public Key Infrastructure Operational Protocols - LDAPv2. | [RFC3494](http://tools.ietf.org/html/rfc3494) | ![](../../images/icons/lightbulb.gif) |
+| [RFC2587](http://tools.ietf.org/html/rfc2587) | Internet X.509 Public Key Infrastructure LDAPv2 Schema. | [RFC4523](http://tools.ietf.org/html/rfc4523) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2596](http://tools.ietf.org/html/rfc2596) | Use of Language Codes in LDAP. | [RFC3866](http://tools.ietf.org/html/rfc3866) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2829](http://tools.ietf.org/html/rfc2829) | Authentication Methods for LDAP. | [RFC4513](http://tools.ietf.org/html/rfc4513), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2830](http://tools.ietf.org/html/rfc2830) | Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security. | [RFC4511](http://tools.ietf.org/html/rfc), [RFC4513](http://tools.ietf.org/html/rfc), [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3377](http://tools.ietf.org/html/rfc3377) | Lightweight Directory Access Protocol (v3): Technical Specification. | [RFC4510](http://tools.ietf.org/html/rfc4510) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3383](http://tools.ietf.org/html/rfc) | Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP). | [RFC4520](http://tools.ietf.org/html/rfc4520) | ![](../../images/icons/thumbs_up.gif) |
+| [RFC3674](http://tools.ietf.org/html/rfc3674) | Feature Discovery in Lightweight Directory Access Protocol (LDAP). | [RFC4512](http://tools.ietf.org/html/rfc4512) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3771](http://tools.ietf.org/html/rfc3771) | The Lightweight Directory Access Protocol (LDAP) Intermediate Response Message. | [RFC4510](http://tools.ietf.org/html/rfc4510), [RFC4511](http://tools.ietf.org/html/rfc4511) | ![](../../images/icons/lightbulb_on.gif) |
+
+
+
+### Active RFCs
+| Number | Description | Status |
+|---|---|---|
+| [RFC1823](http://tools.ietf.org/html/rfc1823) | The LDAP Application Program Interface. | ![](../../images/icons/information.gif) |
+| [RFC2247](http://tools.ietf.org/html/rfc2247) | Using Domains in LDAP/X.500 Distinguished Names. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2307](http://tools.ietf.org/html/rfc2307) | An Approach for Using LDAP as a Network Information Service. | ![](../../images/icons/warning.gif) |
+| [RFC2377](http://tools.ietf.org/html/rfc2377) | Naming Plan for Internet Directory-Enabled Applications. | ![](../../images/icons/information.gif) |
+| [RFC2589](http://tools.ietf.org/html/rfc2589) | Lightweight Directory Access Protocol (v3): Extensions for Dynamic Directory Services. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2649](http://tools.ietf.org/html/rfc2649) | An LDAP Control and Schema for Holding Operation Signatures. | ![](../../images/icons/warning.gif) |
+| [RFC2657](http://tools.ietf.org/html/rfc2657) | LDAPv2 Client vs. the Index Mesh. | ![](../../images/icons/warning.gif) |
+| [RFC2696](http://tools.ietf.org/html/rfc2696) | LDAP Control Extension for Simple Paged Results Manipulation. | ![](../../images/icons/information.gif) |
+| [RFC2713](http://tools.ietf.org/html/rfc2713) | Schema for Representing Java(tm) Objects in an LDAP Directory. | ![](../../images/icons/information.gif) |
+| [RFC2714](http://tools.ietf.org/html/rfc2714) | Schema for Representing CORBA Object References in an LDAP Directory. | ![](../../images/icons/information.gif) |
+| [RFC2739](http://tools.ietf.org/html/rfc2739) | Calendar Attributes for vCard and LDAP. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2798](http://tools.ietf.org/html/rfc2798) | Definition of the inetOrgPerson LDAP Object Class. | ![](../../images/icons/information.gif) |
+| [RFC2820](http://tools.ietf.org/html/rfc2820) | Access Control Requirements for LDAP. | ![](../../images/icons/information.gif) |
+| [RFC2849](http://tools.ietf.org/html/rfc2849) | The LDAP Data Interchange Format (LDIF) - Technical Specification. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2891](http://tools.ietf.org/html/rfc2891) | LDAP Control Extension for Server Side Sorting of Search Results. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC2926](http://tools.ietf.org/html/rfc2926) | Conversion of LDAP Schemas to and from SLP Templates. | ![](../../images/icons/information.gif) |
+| [RFC2927](http://tools.ietf.org/html/rfc2927) | MIME Directory Profile for LDAP Schema. | ![](../../images/icons/information.gif) |
+| [RFC3045](http://tools.ietf.org/html/rfc3045) | Storing Vendor Information in the LDAP root DSE. | ![](../../images/icons/information.gif) |
+| [RFC3062](http://tools.ietf.org/html/rfc3062) | LDAP Password Modify Extended Operation. K. Zeilenga | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3088](http://tools.ietf.org/html/rfc3088) | OpenLDAP Root Service An experimental LDAP referral service. | ![](../../images/icons/warning.gif) |
+| [RFC3112](http://tools.ietf.org/html/rfc3112) | LDAP Authentication Password Schema. | ![](../../images/icons/information.gif) |
+| [RFC3296](http://tools.ietf.org/html/rfc3296) | Named Subordinate References in Lightweight Directory Access Protocol (LDAP) Directories. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3352](http://tools.ietf.org/html/rfc3352) | Connection-less Lightweight Directory Access Protocol (CLDAP) to Historic Status. | ![](../../images/icons/information.gif) |
+| [RFC3384](http://tools.ietf.org/html/rfc3384) | Lightweight Directory Access Protocol (version 3) Replication Requirements. | ![](../../images/icons/information.gif) |
+| [RFC3494](http://tools.ietf.org/html/rfc3494) | Lightweight Directory Access Protocol version 2 (LDAPv2) to Historic Status. | ![](../../images/icons/information.gif) |
+| [RFC3663](http://tools.ietf.org/html/rfc3663) | Domain Administrative Data in Lightweight Directory Access Protocol (LDAP) | ![](../../images/icons/warning.gif) |
+| [RFC3671](http://tools.ietf.org/html/rfc3671) | Collective Attributes in the Lightweight Directory Access Protocol (LDAP) | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3672](http://tools.ietf.org/html/rfc3672) | Subentries in the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3673](http://tools.ietf.org/html/rfc3673) | Lightweight Directory Access Protocol version 3 (LDAPv3): All Operational Attributes. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3687](http://tools.ietf.org/html/rfc3687) | Lightweight Directory Access Protocol (LDAP) and X.500 Component Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3698](http://tools.ietf.org/html/rfc3698) | Lightweight Directory Access Protocol (LDAP): Additional Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3703](http://tools.ietf.org/html/rfc3703) | Policy Core Lightweight Directory Access Protocol (LDAP) Schema. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3712](http://tools.ietf.org/html/rfc3712) | Lightweight Directory Access Protocol (LDAP): Schema for Printer Services. | ![](../../images/icons/information.gif) |
+| [RFC3727](http://tools.ietf.org/html/rfc3727) | ASN.1 Module Definition for the LDAP and X.500 Component Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3829](http://tools.ietf.org/html/rfc3829) | Lightweight Directory Access Protocol (LDAP) Authorization Identity Request and Response Controls. | ![](../../images/icons/information.gif) |
+| [RFC3866](http://tools.ietf.org/html/rfc3866) | Language Tags and Ranges in the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3876](http://tools.ietf.org/html/rfc3876) | Returning Matched Values with the Lightweight Directory Access Protocol version 3 (LDAPv3). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3909](http://tools.ietf.org/html/rfc3909) | Lightweight Directory Access Protocol (LDAP) Cancel Operation. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC3928](http://tools.ietf.org/html/rfc3928) | Lightweight Directory Access Protocol (LDAP) Client Update Protocol (LCUP). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4104](http://tools.ietf.org/html/rfc4104) | Policy Core Extension Lightweight Directory Access Protocol Schema (PCELS). | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4370](http://tools.ietf.org/html/rfc4370) | Lightweight Directory Access Protocol (LDAP) Proxied Authorization Control. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4373](http://tools.ietf.org/html/rfc4373) | Lightweight Directory Access Protocol (LDAP) Bulk Update/Replication Protocol (LBURP). | ![](../../images/icons/information.gif) |
+| [RFC4403](http://tools.ietf.org/html/rfc4403) | Lightweight Directory Access Protocol (LDAP) Schema for Universal Description, Discovery, and Integration version 3 (UDDIv3). | ![](../../images/icons/information.gif) |
+| [RFC4510](http://tools.ietf.org/html/rfc4510) | Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4511](http://tools.ietf.org/html/rfc4511) | Lightweight Directory Access Protocol (LDAP): The Protocol. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4512](http://tools.ietf.org/html/rfc4512) | Lightweight Directory Access Protocol (LDAP): Directory Information Models. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4513](http://tools.ietf.org/html/rfc4513) | Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4514](http://tools.ietf.org/html/rfc4514) | Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4515](http://tools.ietf.org/html/rfc4515) | Lightweight Directory Access Protocol (LDAP): String epresentation of Search Filters. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4516](http://tools.ietf.org/html/rfc4516) | Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4517](http://tools.ietf.org/html/rfc4517) | Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4518](http://tools.ietf.org/html/rfc4518) | Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4519](http://tools.ietf.org/html/rfc4519) | Lightweight Directory Access Protocol (LDAP): Schema for User Applications. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4520](http://tools.ietf.org/html/rfc4520) | Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP). | ![](../../images/icons/thumbs_up.gif) |
+| [RFC4521](http://tools.ietf.org/html/rfc4521) | Considerations for Lightweight Directory Access Protocol (LDAP) Extensions. | ![](../../images/icons/thumbs_up.gif) |
+| [RFC4522](http://tools.ietf.org/html/rfc4522) | Lightweight Directory Access Protocol (LDAP): The Binary Encoding Option. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4523](http://tools.ietf.org/html/rfc4523) | Lightweight Directory Access Protocol (LDAP) Schema Definitions for X.509 Certificates. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4524](http://tools.ietf.org/html/rfc4524) | COSINE LDAP/X.500 Schema. K. Zeilenga, Ed.. June 2006. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4525](http://tools.ietf.org/html/rfc4525) | Lightweight Directory Access Protocol (LDAP) Modify-Increment Extension. | ![](../../images/icons/information.gif) |
+| [RFC4526](http://tools.ietf.org/html/rfc4526) | Lightweight Directory Access Protocol (LDAP) Absolute True and False Filters. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4527](http://tools.ietf.org/html/rfc4527) | Lightweight Directory Access Protocol (LDAP) Read Entry Controls. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4528](http://tools.ietf.org/html/rfc4528) | Lightweight Directory Access Protocol (LDAP) Assertion Control. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4529](http://tools.ietf.org/html/rfc4529) | Requesting Attributes by Object Class in the Lightweight Directory Access Protocol. | ![](../../images/icons/information.gif) |
+| [RFC4530](http://tools.ietf.org/html/rfc4530) | Lightweight Directory Access Protocol (LDAP) entryUUID Operational Attribute. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4531](http://tools.ietf.org/html/rfc4531) | Lightweight Directory Access Protocol (LDAP) Turn Operation. | ![](../../images/icons/warning.gif) |
+| [RFC4532](http://tools.ietf.org/html/rfc4532) | Lightweight Directory Access Protocol (LDAP) "Who am I?" Operation. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC4533](http://tools.ietf.org/html/rfc4533) | The Lightweight Directory Access Protocol (LDAP) Content Synchronization Operation. | ![](../../images/icons/warning.gif) |
+| [RFC4876](http://tools.ietf.org/html/rfc4876) | A Configuration Profile Schema for Lightweight Directory Access Protocol (LDAP)-Based Agents. | ![](../../images/icons/information.gif) |
+| [RFC5020](http://tools.ietf.org/html/rfc5020) | The Lightweight Directory Access Protocol (LDAP) entryDN Operational Attribute. | ![](../../images/icons/lightbulb_on.gif) |
+| [RFC5803](http://tools.ietf.org/html/rfc5803) | Lightweight Directory Access Protocol (LDAP) Schema for Storing Salted Challenge Response Authentication Mechanism (SCRAM) Secrets. | ![](../../images/icons/information.gif) |
+| [RFC5805](http://tools.ietf.org/html/rfc5805) | Lightweight Directory Access Protocol (LDAP) Transactions. | ![](../../images/icons/warning.gif) |
+| [RFC6171](http://tools.ietf.org/html/rfc6171) | The Lightweight Directory Access Protocol (LDAP) Don't Use Copy Control. | ![](../../images/icons/lightbulb_on.gif) |
+
+
diff --git a/source/api/vision.md b/source/api/vision.md
new file mode 100644
index 0000000..b3c5ae3
--- /dev/null
+++ b/source/api/vision.md
@@ -0,0 +1,17 @@
+---
+title: LDAP API - Vision
+---
+
+# Vision
+
+When we started to work on replication implementation, we needed a client **API** in order to communicate using the **LDAP** protocol with remote **LDAP** servers. We could have used some existing **LDAP API**, but as we have already defined a lot of base classes we would have had to convert back and forth, we thought it would be better to build the missing pieces and define our own complete LDAP API.
+
+This is one of the reasons we started this sub-project.
+
+Another reason is that we worked with **Sun***a few years ago (2006) to draw a new version of **JNDI**, an aborted effort, sadly. We also have been contacted by the **OpenLDAP** team as they wanted to know if we were ready to maintain **jLDAP**, as it needed some patches, and as they didn't have enough workforce to do so. Last, not least, **OpenDS** team was also interested to see if we can avoid duplication of efforts, as they were also defining an **LDAP API**. Both **OpenDS** and **ApacheDS** teams collaborated, as proven by this [talk](https://directory.staging.apache.org/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf) given during the **2009 Ldap Conference** in Portland.
+
+All those events make it interesting to try to find a common way to define a new **LDAP API**, gathering the interest of the largest developer base possible. We have to tank the **OpenDS** people who were very helpfull in defining the very first version of the **API**, .
+
+As we have not finished to implement all the needed features, it's easy for us to try to figure which parts can be shared with other projects, and which parts must be configurable. A clear example is the underlying network layer: **OpenDS** will use **Grizzly**, while we will use **Apache MINA**. This should be transparent for developers.
+
+Last, not least, no one can claim to be better than all the other great people out there, and claim to be able to define the best possible **LDAP API**. We at **The ASF** believe that collaboration within a community is better than working alone. We are pleased to share what we have already done, ready to move forward in better directions if it allows the API to be more reliable, usable and at the end, easier to use for developers.
diff --git a/source/articles.md b/source/articles.md
new file mode 100644
index 0000000..bbaef99
--- /dev/null
+++ b/source/articles.md
@@ -0,0 +1,16 @@
+---
+title: Articles
+---
+
+# Articles
+
+| Article | Related To | Publication Date |
+|---|:-:|:-:|
+| [DZone: Programming LDAP with Groovy](http://groovy.dzone.com/articles/programming-ldap-groovy) | Groovy LDAP | Feb 16 2009 |
+| [IBM developerWorks: Securing a multitenant SaaS application - Authentication and authorization with Spring Security and Apache Directory Server](https://www.ibm.com/developerworks/java/library/j-saas/) | ApacheDS | Sept 30 2008 |
+| [The Geronimo renegade: Security and Apache Geronimo's future](http://www-128.ibm.com/developerworks/opensource/library/os-ag-renegade11/) | Triplesec | 23 Jan 2007 |
+| [PR Newswire: The Apache Directory Project Announces New LDAPv3-Certified Server](http://sev.prnewswire.com/computer-electronics/20061010/CLTU03610102006-1.html) | ApacheDS | Oct 10 2006 |
+| [Use Apache Geronimo and Ajax to build a directory, Part 2: Querying the LDAP server](http://www-128.ibm.com/developerworks/edu/os-dw-os-ag-ldap2.html) | ApacheDS | Jun 13 2006 |
+| [Use Apache Geronimo and Ajax to build a directory, Part 1: Configuring Geronimo's LDAP server](http://www-128.ibm.com/developerworks/opensource/edu/os-dw-os-ag-ldap1.html) | ApacheDS | May 23 2006 |
+| [Storing Java objects in Apache Directory Server, Part 2; Store, search, and retrieve Java objects in ApacheDS](http://www-128.ibm.com/developerworks/java/library/j-apacheds2) | ApacheDS | May 02 2006 |
+| [Storing Java objects in Apache Directory Server, Part 1; Inside the Apache Directory Server](http://www-128.ibm.com/developerworks/java/library/j-apacheds1) | ApacheDS | May 02 2006 |
diff --git a/source/commercial-support.md b/source/commercial-support.md
new file mode 100644
index 0000000..04af064
--- /dev/null
+++ b/source/commercial-support.md
@@ -0,0 +1,28 @@
+---
+title: Commercial support
+---
+
+# Commercial Apache Directory™ Support Offerings
+
+Several companies have built products and services around the Apache Directory™ project. This page is dedicated to providing descriptions of those offerings and links to more information. Companies are definitely encouraged to update this page directly or send a mail to the Apache Directory™ PMC ([private@directory.apache.org](mailto:private@directory.apache.org)) with a description of their offerings and we can update the page. The products and services listed on this page are provided for information use only to our users. The Apache Directory™ PMC does not endorse or recommend any of the products or services on this page. See below for information about what is appropriate to add to the page.
+
+## ApacheDS™ Related Offerings
+
+### [Keydap](http://www.keydap.com)
+
+[Keydap](http://www.keydap.com) provides custom identity management solutions built around ApacheDS™.
+
+Keydap distributes a custom version of ApacheDS™ called 'Keydap Server' with many value added features including Multi-Master replication for free under Apache License v2.0 and offers commercial support for both ApacheDS™ and Keydap Server.
+
+### [Symas](https://symas.com/)
+
+Provides commerical support (subscriptions) to Apache Fortress along with professional services for installations, enhancements, integrations.
+
+ * <a href="https://symas.com/fortressdetails/">Apache Fortress Product Page</a>
+
+
+## Policy for additions to this page
+
+Companies are free to add information about their products and services to this page. The information must be factual and informational in nature and not be a marketing statement. Statements that promote your products and services over other offerings on the page will not be tolerated and will be removed. Such marketing statements can be added to your own pages on your own site, but not here.
+
+When in doubt, email the Apache Directory™ PMC ([private@directory.apache.org](mailto:private@directory.apache.org)) and ask. We'd be happy to help.
diff --git a/source/conference-materials.md b/source/conference-materials.md
new file mode 100644
index 0000000..1e0dd2b
--- /dev/null
+++ b/source/conference-materials.md
@@ -0,0 +1,54 @@
+---
+title: Conference Materials
+---
+
+<!--
+# Conferences : Upcoming Events
+
+| When | Title | Will be presented by | Will be presented at |
+|:-:|---|:-:|:-:|
+| | | | |
+-->
+
+# Conferences: Materials Archive
+
+| Title | Presented by | Presented at |
+|---|:-:|:-:|
+| [ApacheDS : 10 years in the making](conference-materials.data/apachecon2015.pdf) | Emmanuel Lécharny | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
+| [Kerberos in your JVM](conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf) | Kiran Ayyagari | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
+| [The anatomy of a Secure Web Application using Java EE, Spring Security and Apache Directory Fortress](conference-materials.data/AnatomyOfSecureWebApp.pdf) | Shawn McKinney | ![](images/flags/us.png) [ApacheCon Europe 2015](http://events.linuxfoundation.org/events/apachecon-core-europe) |
+| [RBAC Enable Your Java Web Apps Using Apache Directory and Fortress](conference-materials.data/ApacheConNA-Fortress-2015.pdf) | Shawn McKinney | ![](images/flags/us.png) [ApacheCon North America 2015](http://events.linuxfoundation.org/events/apachecon-north-america) |
+| [Testing LDAP Implementations](conference-materials.data/testing-LDAP.pdf) | Emmanuel Lécharny | ![](images/flags/hu.png) [ApacheCon Europ 2014](http://events.linuxfoundation.org/events/apachecon-europe) |
+| [RBAC Authorization With Apache Directory Server And Fortress](conference-materials.data/Rbac-Directory-ApacheCon.pdf) | Shawn McKinney, Emmanuel Lécharny | ![](images/flags/hu.png) [ApacheCon Europe 2014](http://events.linuxfoundation.org/events/apachecon-europe) |
+| [Preview of Apache Directory Studio 2.0](conference-materials.data/LDAPCon-2011-Studio.pdf) | Pierre-Arnaud Marcelot | ![](images/flags/de.png) [LDAPCon 2011](http://www.daasi.de/ldapcon2011/) |
+| [NoSQL²: Store LDAP data in HBase](conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf) | Stefan Seelmann | ![](images/flags/de.png) [Munich Open Hadoop User Group](http://upcoming.yahoo.com/event/5771044/BY/Mnchen/3rd-Munich-OpenHUG-Meeting/eCircle-AG) |
+| [LDAP et un petit peu plus (conférence à l'université du Litoral)](conference-materials.data/presentation.odp) | Emmanuel Lécharny | ![](images/flags/fr.png) [Université Du Littoral](http://www.univ-littoral.fr/) |
+| [Cours LDAP](conference-materials.data/cours-ldap.odp) | Emmanuel Lécharny | ![](images/flags/fr.png) [Université Du Littoral](http://www.univ-littoral.fr/) |
+| [LDAP. Das Wichtigste für Java Professionals](conference-materials.data/szoerner-ruhrjug-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) [ruhrjug](http://www.ruhrjug.de/) |
+| Towards a common LDAP API for the Java Platform : [Paper](conference-materials.data/towards-a-common-java-ldap-api-paper.pdf) [Slides](conference-materials.data/towards_a_common_java_ldap_api-slides.pdf) | Emmanuel Lécharny & Ludovic Poitou (Sun) | ![](images/flags/us.png) LdapCon 2009 |
+| [The Apache Directory Project - Toolchain for Developers](conference-materials.data/toolchain-for-developpers.pdf) | Stefan Seelmann | ![](images/flags/us.png) LdapCon 2009 |
+| Leveraging RFC 4533 to build a heterogeneous replication system [Paper](conference-materials.data/replication.pdf) [Slides](conference-materials.data/leveraging-RFC4533.pdf) | Emmanuel Lécharny | ![](images/flags/us.png) LdapCon 2009 |
+| [Apache DS 2.0 : What's new ?](conference-materials.data/ads-2.0-what's-new.pdf) | Emmanuel Lécharny | ![](images/flags/nl.png) ApacheCon EU 2009 |
+| [LDAP. Eine Einfuehrung fuer Java-Entwickler (German)](conference-materials.data/szoerner-berlinjar-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) [berlin.jar 2008](http://berlin.jar.jug-bb.de/) |
+| [LDAP entmystifiziert (German)](conference-materials.data/szoerner-jugbb-ldap.pdf) | Stefan Zörner | ![](images/flags/de.png) JUG Berlin Brandenburg |
+| [Java und LDAP (German)](conference-materials.data/Java_und_LDAP.pdf) | Stefan Seelmann, Christine Koppelt | ![](images/flags/de.png) JUG Munich |
+| [Apache Directory Studio - Ihre Eintrittskarte in die Verzeichniswelt (German)](conference-materials.data/szoerner_apachedirectorystudio.pdf) | Stefan Zörner | ![](images/flags/de.png) JAX 2008 |
+| [Apache Triplesec: Strong (2-factor) Mobile Identity Management](conference-materials.data/6078680.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2008 |
+| ApacheDS: Bringing "lightweight" to ldap development [Slides](conference-materials.data/ApacheCon-EU-2008-light.pdf) [Source](conference-materials.data/ACEU2008.jar) | Emmanuel Lecharny | ![](images/flags/nl.png) ApacheCon EU 2008 |
+| Apache Directory Studio, a new Open Source LDAP & Directory Tooling Platform [Slides](conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf) [Paper](conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf) | Stefan Seelmann, Pierre-Arnaud Marcelot | ![](images/flags/de.png) LDAPcon |
+| [Architecting the Modern LDAP Renaissance. The Apache Directory Vision](conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf) | Alex Karasulu | ![](images/flags/de.png) LDAPcon |
+| LDAP Stored Procedures and Triggers in ApacheDS [Paper](conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pf) [Slides](conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf) | Ersin Er | ![](images/flags/de.png) LDAPcon |
+| [Apache Triplesec: Strong (2-factor) Mobile Identity Management](conference-materials.data/6078680.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2007 |
+| [Enterprise LDAP and Apache Directory Server](conference-materials.data/enterprise-ldap-apachecon-eu.pdf) | Emmanuel Lecharny | ![](images/flags/nl.png) ApacheCon EU 2007 |
+| [Embedding Apache Directory Server into Applications](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/nl.png) ApacheCon EU 2007 |
+| [OpenLDAP, adieu? Ein LDAP-Server in Java: ApacheDS Reality Check (German)](conference-materials.data/szoerner_apacheds_jax2007) | Stefan Zörner | ![](images/flags/de.png) JAX 2007 |
+| [Embed ApacheDS within an Application](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/se.png) Oredev 2006 |
+| [Merits of Directories](conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf) | Alex Karasulu | ![](images/flags/se.png) Oredev 2006 |
+| [ApacheDS Access Control Administration - The X.500 Way](conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf) | Ersin Er | ![](images/flags/us.png) ApacheCon US 2006 |
+| LDAP Stored Procedures and Triggers arrive in ApacheDS [Slides](conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf) [Code](http://svn.apache.org/repos/asf/directory/sandbox/ersiner/apachecon-us06-fr14/)| Ersin Er | ![](images/flags/us.png) ApacheCon US 2006 |
+| Embedding ApacheDS (Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/us.png) ApacheCon US 2006 |
+| [Which OS LDAP server should you use ?](conference-materials.data/ApacheCon2006-ADS.pdf) | Emmanuel Lecharny | ![](images/flags/ie.png) ApacheCon EU 2006 |
+| [Secure Single Sign-On with Apache Directory and Apache Kerberos](conference-materials.data/Single_Sign_On.pdf) | Enrique Rodriquez | ![](images/flags/ie.png) ApacheCon EU 2006 |
+| IDfusion, An Open-Architecture for Kerberos-based Authorization [Slides](conference-materials.data/wettstein-idfusion-slides.pdf) [Paper](conference-materials.data/wettstein-authimp)| Enrique Rodriquez | ![](images/flags/us.png) AFS & Kerberos Best Practices Workshop 2006 |
+| Simple Mass Market 2-Factor Authentication using Java Technologies (Not anymore available...) | Alex Karasulu, Michael Yuan, PhD. | ![](images/flags/us.png) JavaOne 2006 |
+| [Embedding Apache Directory Server into Applications](conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf) | Alex Karasulu | ![](images/flags/us.png) ApacheCon US 2005 |
diff --git a/source/contribute.md b/source/contribute.md
new file mode 100644
index 0000000..c802861
--- /dev/null
+++ b/source/contribute.md
@@ -0,0 +1,56 @@
+---
+title: Contribute
+---
+
+# Join the Apache Directory Community
+
+First of all, a big **thank you** from us for evaluating and/or using our products. We truly appreciate it. Our products exist, and continue to improve thanks to you.
+But you can help us and yourself more!
+
+As we are a community of volunteers working with the guidelines and policies of the Apache Software Foundation (the Apache Way) in mind, we welcome any kind of input you can provide to get better products.
+These contributions, whether you think of reporting bugs, supplying code enhancements, improvements to our documentation, answering questions in our mailing lists or anywhere else are valuable to us. Because these will help us in helping you.
+
+You can also consider **donating** in other ways to the Apache Software Foundation. Look for more information on that subject at these pages: [resource donation](http://www.apache.org/foundation/contributing.html) or [sponsorship program](http://apache.org/foundation/sponsorship.html).
+
+So, you consider **contributing** to our project. But how do you go about achieving this?
+
+Well, it is as easy as pie. The first thing you need to do is to subscribe to one of our mailing lists (see the overview below, or look here: [mailing lists](mailing-lists-and-irc.html)) and you are set to go to deliver your first contribution: a posting there, about how great our product are, what you found missing, or even the bug you're confronted with.
+You might even consider a more interactive approach and join the team on our **IRC** channels.
+
+After you have had your first contribution over and done with, it stays **easy**. You can:
+
+* reply to questions, and/or share your viewpoint on how to get issues resolved,
+* add to our FAQ or WIKI,
+* share your code and document patches through our [issue tracking system - JIRA](issue-tracking.html),
+* evaluate bugs and proposed improvements provided by others in our team,
+* help with outlining and evaluating the future direction of our project and the development iterations of our products.
+
+To make it a bit more explicit, **we are looking for**:
+
+* Source code (bugs and improvements) contributions
+* Documentation assistance
+* Product and feature suggestions
+* Detailed and constructive feedback
+* Articles (case studies, white papers, etc) and presentations (speeches) about how our products helped you.
+
+But the list is not limited to the above! If you feel we missed something there, please **let us know**.
+
+**Our mailing lists**
+
+| Name | Subscribe | Post | Archive |
+|---|:-:|:-:|:-:|
+| The Directory Developers List | [Subscribe](mailto:dev-subscribe@directory.apache.org) | [Post](mailto:dev@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-dev) |
+| The Directory Users List| [Subscribe](mailto:users-subscribe@directory.apache.org) | [Post](mailto:users@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-users) |
+| The Directory Commits List | [Subscribe](mailto:commits-subscribe@directory.apache.org) | — | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-commits) |
+| The LDAP API List | [Subscribe](mailto:api-subscribe@directory.apache.org) | [Post](mailto:api@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-api) |
+
+Our IRC channels on freenode.net, where we have also informal discussions:
+
+* Users IRC channel: [#apache-directory @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory)
+* Developers IRC channel: [#apache-directory-dev @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory-dev)
+* Fortress IRC channel: [#apache-fortress @ irc://irc.freenode.net](irc://irc.freenode.net/apache-fortress)
+
+Again, we thank you and look forward to seeing your first contribution.
+
+**The Apache Directory Community**
+
diff --git a/source/fortress/__index.md b/source/fortress/__index.md
new file mode 100644
index 0000000..800950f
--- /dev/null
+++ b/source/fortress/__index.md
@@ -0,0 +1,26 @@
+---
+type: fortress
+title: Welcome to Apache Fortress
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="top">
+ <h1>Apache Fortress™</h1>
+ <h2>Access Management SDK and Web Components</h2>
+ <div class="description">
+ <b>A standards-based access management system, written in Java, supports ANSI INCITS 359 RBAC and more. </b>
+<br><br>
+ </div>
+ </div>
+ <!--div class="download-link">
+ <a href="/fortress/downloads.html" class="download_badge"><b>Download Apache<br>Fortress {{< param version_fortress >}}</b></a>
+ </div-->
+ <div class="bottom">
+ <img src="../images/fortress-web-system-arch.png" style="width: 75%; height: 75%" border="0"/>
+ </div>
+</div>
+
+<div class="news">
+ {{< grabpage "fortress/news.md" >}}
+</div>
diff --git a/source/fortress/coding-standards.md b/source/fortress/coding-standards.md
new file mode 100644
index 0000000..b1d9202
--- /dev/null
+++ b/source/fortress/coding-standards.md
@@ -0,0 +1,153 @@
+---
+title: Coding Standards
+---
+
+# Coding Standards
+
+Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enfore the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
+
+
+ :::java
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A descrption of this class/interface
+* an *author* tag which should be :
+
+ :::java
+ @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
+* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please !
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningfull names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+ :::java
+ ...
+ int result = myMethod( param1, param2 )
+
+ if ( result > 0 )
+ {
+ // do something
+ }
+ ...
+
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
diff --git a/source/fortress/developer-guide.md b/source/fortress/developer-guide.md
new file mode 100644
index 0000000..912ad49
--- /dev/null
+++ b/source/fortress/developer-guide.md
@@ -0,0 +1,566 @@
+---
+title: Developer Guide
+---
+
+# Building FORTRESS
+
+<DIV class="note" markdown="1">
+ Please read <a href="https://www.apache.org/dev/" class="external-link" rel="nofollow">the Developer Infrastructure Information</a> if you haven't yet before you proceed.
+</DIV>
+
+{{% toc %}}
+
+# Checking out the code
+
+You need Git to check out the source code from our source code repository, and [Maven(https://maven.apache.org/) 3.0 to build the source code. The following example shows how to get the Fortress projects.
+
+## Fortress-core
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
+ $ cd fortress-core
+ $ mvn clean install # Build packages (JARs) for the Fortress core API and other
+ # extensions and install them to the local Maven repository.
+ $ mvn site # Generate reports (JavaDoc and various other reports)
+ $ mvn package # Generate a tarball
+
+Eclipse users:
+Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
+You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
+
+If you want to check out the source code of previous releases, you have to select the branch you want to work on :
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
+ $ git checkout <tag>
+
+
+## Fortress-realm
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-realm.git fortress-realm
+ $ cd fortress-realm
+ $ mvn clean install # Build packages (JARs) for the Fortress realm API and other
+ # extensions and install them to the local Maven repository.
+ $ mvn site # Generate reports (JavaDoc and various other reports)
+ $ mvn package # Generate a tarball
+
+Eclipse users:
+Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
+You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
+
+If you want to check out the source code of previous releases, you have to select the branch you want to work on :
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-realm.git fortress-realm
+ $ git checkout <tag>
+
+
+## Fortress-enmasse
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git fortress-enmasse
+ $ cd fortress-enmasse
+ $ mvn clean install # Build packages (JARs) for the Fortress enmasse API and other
+ # extensions and install them to the local Maven repository.
+ $ mvn site # Generate reports (JavaDoc and various other reports)
+ $ mvn package # Generate a tarball
+
+Eclipse users:
+Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
+You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
+
+If you want to check out the source code of previous releases, you have to select the branch you want to work on :
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git fortress-enmasse
+ $ git checkout <tag>
+
+
+## Fortress-commander
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-commander.git fortress-commander
+ $ cd fortress-commander
+ $ mvn clean install # Build packages (JARs) for the Fortress commander API and other
+ # extensions and install them to the local Maven repository.
+ $ mvn site # Generate reports (JavaDoc and various other reports)
+ $ mvn package # Generate a tarball
+
+Eclipse users:
+Don't forget to declare a classpath variable named M2_REPO, pointing to `~/.m2/repository`, otherwise many links to existing jars will be broken.
+You can declare new variables in Eclipse in Windows -> Preferences... and selecting Java -> Build Path -> Classpath Variables
+
+If you want to check out the source code of previous releases, you have to select the branch you want to work on :
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-commander.git fortress-commander
+ $ git checkout <tag>
+
+# Coding Convention
+
+The applicable coding standards for Fortress are described in [Coding Standards](coding-standards.html)
+
+# Deploying Snapshots (Commiters Only)
+
+Before running Maven to deploy artifacts, *please make sure if your umask is configured correctly*. Unless configured properly, other committers will experience annoying 'permission denied' errors. If your default shell is `bash`, please update your umask setting in the `~/.bashrc` file (create one if it doesn't exist.) by adding the following line:
+
+ umask 002
+
+Please note that you have to edit the correct `shrc` file. If you use `csh`, then you will have to edit `~/.cshrc` file.
+
+Now you are ready to deploy the artifacts if you configured your umask correctly.
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git fortress-core
+ $ cd fortress-core
+ $ mvn clean deploy site site:deploy # Make sure to run 'clean' goal first to prevent side effects from your IDE.
+
+(do the same thing for the *enmasse, realm and commander* projects)
+
+Please double-check the mode (i.e. `0664` or `-rw-rw-r--`, a.k.a permission code) of the deployed artifacts, otherwise you can waste other people's time significantly.
+
+# Releasing a Point Release (Committers Only)
+
+## Preparing the release for the vote
+
+Before starting be sure to have the java and mvn command in your PATH.
+On linux you can check with the following commands :
+
+ $ type mvn
+ mvn is hashed (/opt/apache-maven-3.2.5/bin/mvn)
+ $ type java
+ java is /usr/bin/java
+
+### Step 0: Building Fortress-xxx
+
+<DIV class="note" markdown="1">
+Here, 'xxx' is one of the four fortress mdules : core, enmasse, realm or comander
+</DIV>
+
+### Step 1: Tagging and Deploying
+
+First you need to configure maven for using the good username for scp and operation.
+
+In the `~/.m2/settings.xml` you need the following lines :
+
+```xml
+<settings xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/settings-1.0.0.xsd">
+
+ <!-- SERVER SETTINGS -->
+ <servers>
+ <!-- To publish a snapshot of some part of Maven -->
+ <server>
+ <id>apache.snapshots.https</id>
+ <username>elecharny</username>
+ <password>-----Your password here-----</password>
+ </server>
+ <!-- To publish a website of some part of Maven -->
+ <server>
+ <id>apache.websites</id>
+ <username>elecharny</username>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+ <!-- To stage a release of some part of Maven -->
+ <server>
+ <id>apache.releases.https</id>
+ <username>elecharny</username>
+ <password>-----Your password here-----</password>
+ </server>
+ <!-- To stage a website of some part of Maven -->
+ <server>
+ <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
+ <username>elecharny</username>
+ <filePermissions>664</filePermissions>
+ <directoryPermissions>775</directoryPermissions>
+ </server>
+ </servers>
+
+ <!-- PROFILE SETTINGS -->
+ <profiles>
+ <profile>
+ <id>apache-release</id>
+ <properties>
+ <!-- Configuration for artifacts signature -->
+ <gpg.passphrase>-----Your passphrase here-----</gpg.passphrase>
+ </properties>
+ </profile>
+ </profiles>
+
+</settings>
+```
+
+### step 2 : Processing with a dry run
+
+After having checked out the trunk, and built it (see step 0),
+
+ $ git clone https://gitbox.apache.org/repos/asf/directory-fortress-core.git directory-fortress-core
+ $ cd directory-fortress-core
+ $ mvn clean install
+
+run the following commands :
+
+ $ mvn -Papache-release -DdryRun=true release:prepare # Dry-run first.
+
+Answer to maven questions :
+
+ "What is the release version for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC40: :"
+ <either use the default version as suggested, or type in the version you@qot;d like to be used>
+ [..]
+
+Then some other questions will be asked, about the next version to use. The default values should be fine :
+
+ What is SCM release tag or label for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC40: :
+ <Same here : keep 1.0-RC40, or change it if needed>
+ What is the new development version for "Apache Fortress Core"? (org.apache.directory.project:fortress-core) 1.0-RC41-SNAPSHOT: :
+ <Same here...>
+
+<DIV class="info" markdown="1">
+**Be Careful**
+
+Make sure the change made by the release plugin is correct! (pom.xml, tags created)
+</DIV>
+
+### Step 3 : Processing with the real release
+When the dry run is successful, then you can do in real with the following commands:
+
+ $ mvn -Papache-release release:clean # Clean up the temporary files created by the dry-run.
+ $ mvn -Papache-release release:prepare # Copy to tags directory.
+
+The first step will clean up the local sources, the second step will release for real. The same questions will be asked as those we had during the dry run step.
+
+At some point, it will ask for your passphrase (the one you used when you created your PGP key). Type it in.
+
+
+Three mails will be generated, and sent to commits@directory.apache.org :
+
+ git commit: [maven-release-plugin] prepare release 2.0.9
+ Git Push Summary
+ git commit: [maven-release-plugin] prepare for next development iteration
+
+ Repository: directory-fortress-core
+ Updated Branches:
+ refs/heads/master 7f1f90d2b -> bb9137136
+
+
+ [maven-release-plugin] prepare release 1.0-RC40
+
+
+ Project: https://gitbox.apache.org/repos/asf/directory-fortress-core/repo
+ Commit: https://gitbox.apache.org/repos/asf/directory-fortress-core/commit/bb913713
+ Tree: https://gitbox.apache.org/repos/asf/directory-fortress-core/tree/bb913713
+ Diff: https://gitbox.apache.org/repos/asf/directory-fortress-core/diff/bb913713
+
+ Branch: refs/heads/master
+ Commit: bb9137136d58f334415825b15f58c3173c923de2
+ Parents: 7f1f90d
+ Author: Emmanuel Lecharny <elecharny@symas.com>
+ Authored: Fri Apr 3 15:35:20 2015 +0200
+ Committer: Emmanuel Lecharny <elecharny@symas.com>
+ Committed: Fri Apr 3 15:35:20 2015 +0200
+ ...
+
+The first mail tells you that the SNAPSHOT has been moved to the release version in trunk, the second mails tells you that this version has been tagged, and the last mail tells you that trunk has moved to the next version.
+
+
+### Step 4 : perform the release
+
+The last step before launching a vote is to push the potential release to Nexus so that every user can test the created packages. Perform the following actions
+
+ $ mvn -Papache-release release:perform
+ ...
+ [INFO] [INFO] ------------------------------------------------------------------------
+ [INFO] [INFO] BUILD SUCCESS
+ [INFO] [INFO] ------------------------------------------------------------------------
+ [INFO] [INFO] Total time: 01:00 min
+ [INFO] [INFO] Finished at: 2015-04-03T15:41:26+02:00
+ [INFO] [INFO] Final Memory: 50M/247M
+ [INFO] [INFO] ------------------------------------------------------------------------
+ [INFO] Cleaning up after release...
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESS
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 01:16 min
+ [INFO] Finished at: 2015-04-03T15:41:26+02:00
+ [INFO] Final Memory: 17M/247M
+ [INFO] ------------------------------------------------------------------------
+
+Done !
+
+### Step 5 : closing the staging release on nexus
+
+Now, you have to close the staged project on nexus. In order to do that you *must* have exported your PGP key to a PGP public server [see](https://www.apache.org/dev/openpgp.html)
+
+Connect to the [Nexus server](https://repository.apache.org), login, and select the FORTRESS staging repository you just created, then click on the 'close' button. You are home...
+
+### Step 6 : Build the Site
+
+ $ cd target/checkout
+ $ mvn site
+
+This creates the site.
+
+### Step 7 : Sign the packages
+
+Now, you have to sign the binary packages which are in target/checkout/target.
+
+<DIV class="note" markdown="1">
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+</DIV>
+
+You can get the keys by typing :
+
+ gpg --list-keys
+
+You'll get something like :
+
+ $ gpg --list-keys
+ /Users/elecharny/.gnupg/pubring.gpg
+ -----------------------------------
+ pub 2048D/xxxxxxxx 2009-12-03
+ uid Emmanuel Lecharny <elecharny@nextury.com>
+ sub 2048g/yyyyyyyy 2009-12-03
+
+ pub 4096R/zzzzzzzz 2010-09-13
+ uid Emmanuel Lecharny (CODE SIGNING KEY) <elecharny@apache.org>
+ sub 4096R/tttttttt 2010-09-13
+ ...
+
+Take the <zzzzzzzz> part of your 4096 bit key.
+
+Use a shell script to sign the packages which are stored in target/checkout/target. You will first have to delete the created .asc files :
+
+ $ cd target/checkout/target
+ $ rm *.asc
+ $ ~/sign.sh
+ PGP Key ID:
+ <your PGP key>
+ PGP Key Password:
+ <Your PGP passphrase>
+
+ -n Signing: ./fortress-core-1.0-RC40-javadoc.jar ...
+ - Generated './fortress-core-1.0-RC40-javadoc.jar.md5'
+ - Generated './fortress-core-1.0-RC40-javadoc.jar.sha1'
+ - Generated './fortress-core-1.0-RC40-javadoc.jar.asc'
+ -n Signing: ./fortress-core-1.0-RC40-source-release.zip ...
+ - Generated './fortress-core-1.0-RC40-source-release.zip.md5'
+ - Generated './fortress-core-1.0-RC40-source-release.zip.sha1'
+ - Generated './fortress-core-1.0-RC40-source-release.zip.asc'
+ -n Signing: ./fortress-core-1.0-RC40-sources.jar ...
+ - Generated './fortress-core-1.0-RC40-sources.jar.md5'
+ - Generated './fortress-core-1.0-RC40-sources.jar.sha1'
+ - Generated './fortress-core-1.0-RC40-sources.jar.asc'
+ -n Signing: ./fortress-core-1.0-RC40.jar ...
+ - Generated './fortress-core-1.0-RC40.jar.md5'
+ - Generated './fortress-core-1.0-RC40.jar.sha1'
+ - Generated './fortress-core-1.0-RC40.jar.asc'
+ ...
+
+
+Here is the sign.sh script you can use :
+
+ #!/bin/sh
+
+ echo "PGP Key ID: "
+ read DEFAULT_KEY
+
+ echo "PGP Key Password: "
+ stty -echo
+ read PASSWORD
+ stty echo
+ echo ""
+
+ for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" \
+ -or -name "*.md5" -or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
+ if [ -f "$FILE.asc" ]; then
+ echo "Skipping: $FILE"
+ continue
+ fi
+
+ echo -n "Signing: $FILE ... "
+
+ # MD5
+ if [ ! -f "$FILE.md5" ];
+ then
+ openssl md5 < "$FILE" | cut "-d " -f2 > "$FILE.md5"
+ echo " - Generated '$FILE.md5'"
+ else
+ echo " - Skipped '$FILE.md5' (file already existing)"
+ fi
+
+ # SHA1
+ if [ ! -f "$FILE.sha1" ];
+ then
+ gpg -v --default-key "$DEFAULT_KEY" --print-md SHA1 "$FILE" > "$FILE".sha1
+ echo " - Generated '$FILE.sha1'"
+ else
+ echo " - Skipped '$FILE.sha1' (file already existing)"
+ fi
+
+ # ASC
+ if [ ! -f "$FILE.asc" ];
+ then
+ echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE"
+ echo " - Generated '$FILE.asc'"
+ else
+ echo " - Skipped '$FILE.asc' (file already existing)"
+ fi
+ done
+
+### Step 8 : Publish Source and Binary Distribution Packages
+
+First of all, create a new directory on people.apache.org/public_html to store the pacckages :
+
+ $ ssh people.apache.org
+ $ mkdir public_html/fortress-core-<version>
+ $ exit
+
+Then copy the packages :
+
+ $ cd target/checkout/target
+ $ scp fortress-core-<version>-source-release.zip* people.apache.org:public_html/fortress-core-<version>/
+
+Update your index.html file on people.apach.org/public_html to make the packages visible. Here is an example of possible content :
+
+ <h2>Last Fortress core 1.0.0-RC40 arballs</h2>
+ <h3>Sources</h3>
+
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip">fortress-core-1.0-RC40-source-release.zip</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.asc">fortress-core-1.0-RC40-source-release.zip.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.md5">fortress-core-1.0-RC40-source-release.zip.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="fortress-core-1.0-RC40/fortress-core-1.0-RC40-source-release.zip.sha1">fortress-core-1.0-RC40-source-release.zip.sha1</a><br/>
+
+## Step 9 : Voting a release
+
+Once the tarballs have been created, and the binaries available in Nexus, a vote can be launched. Simply send a mail on the dev@directory.apache.org mailing list describing the new release.
+
+Here is how you send a [VOTE] mail on the dev mailing list :
+
+
+ Hi,
+
+ <blah blah blah>
+
+ Here is the list of fixed issues :
+
+
+ * [FC-83 <https://issues.apache.org/jira/browse/FC-83>] Cleanup core test processing
+ * ...
+
+
+ Here's the Jira link for this version if you'd like to review issues in more details:
+
+ https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10670&styleName=Html&version=12313702
+
+ A temporary tag has been created (it can be removed if the vote is not approved)
+
+ The newly approved Nexus has been used for the preparation of this release and all final artifacts are stored
+ in a staging repository:
+ https://repository.apache.org/content/repositories/orgapachedirectory-1028
+
+
+ The distributions are available for download on :
+ https://repository.apache.org/content/repositories/orgapachedirectory-1028/org/apache/directory/project/fortress-core/1.0-RC40/
+
+ Let us vote :
+ [ ] +1 | Release Fortress-core 1.0-RC40
+ [ ] +/- | Abstain
+ [ ] -1 | Do *NOT* Fortress-core 1.0-RC40
+
+ Thanks !
+
+The vote will be open for 72 hours. Once the delay is over, collect the votes, and count the binding +1/-1. If the vote is positive, then we can release.
+
+### Step 11 : Close the vote
+
+You can officially close the vote now. There are some more steps to fulfill :
+
+* Release the project on https://repository.apache.org
+* Copy the tarballs and heir signature in people.apache.org /www/downloads.apache.org/fortress
+
+This can be done on people.apache.org :
+
+ $ ssh people.apache.org
+ # svn co https://dist.apache.org/repos/dist/release/directory/fortress/ fortress-dist
+ # cd fortress-dist
+ # mkdir <version>
+ # cp ../public_html/fortress-core-<version>/* <version>
+ # svn add <version>
+ # svn ci <version>
+ ...
+ # exit
+ $
+
+### Step 12: Deploy Web Reports (JavaDoc and JXR)
+
+The javadoc and xref files have been generated in step 6, it's now time to push them into the production site. They are generated in the following directory :
+
+ target/checkout/target/site
+
+We will copy two directories :
+
+ apidocs
+ xref
+
+*Staging or Production?*
+
+<DIV class="info" markdown="1">
+Those files will be stored on the production server only !!! And some extra caution ust be taken not to delete them when we will publish the staging site too...
+</DIV>
+
+First of all, you must checkout the two CMS store for the site : staging and production.
+
+ $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
+ ...
+ $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+ ...
+
+Then copy the generated docs :
+
+ $ cp -r ~/apacheds/directory-fortress-core/target/checkout/target/site/apidocs production/directory/content/fortress/gen-docs
+ $ cp -r ~/apacheds/directory-fortress-core/target/checkout/target/site/xref production/directory/content/fortress/gen-docs
+ $
+
+You have to check in those directories :
+
+ $ svn add apidocs
+ $ svn add xref
+ $ svn ci apidocs xref -m "Injected Fortress <version> javadocs"
+
+Now, you have to update the staging site <em>extpaths.txt</em>
+
+This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
+
+ $ cd ~/apacheds/staging/content/
+ $ vi extpaths.txt
+
+The following lines should be present. If not, add them and commit the file after having added a new line for the newly released version:
+
+Add the following line :
+
+
+ ...
+ # Fortress
+ fortress/gen/docs/<the new version>
+ ...
+
+### Step 13: Wait 24 hours
+
+We have to wait at least 24 hours for all mirrors to retrieve the uploaded files before making any announcement. I'd recommend you to wait for 48 hours because some mirrors might lag due to various issues.
+
+### Step 14: Update the Links in Web Site
+
+Update the links to new distributions in [Downloads] page.
+
+There are a few places to modify :
+
+* /lib/path.pm : update the $version_fortress variable with the new version.
+* /content/index.mdtext : same here, update the <!-- FORTRESS project --> section, which contains the version.
+* /content/fortress/news.mdtext : add the news on top of thise page
+* /content/fortress/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
+
+Commit the changes, and publish the web site, you are done !
+
+### Step 15: Wait another 24 hours
+
+We need to wait until any changes made in the web site and metadata file(s) go live.
+
+### Step 16: Announce the New Release
+
+An announcement message can be sent to [mailto:announce@apache.org], [mailto:announce@apachenews.org], [mailto:users@directory.apache.org] and [mailto:dev@directory.apache.org]. Please note that announcement messages are rejected unless your from-address ends with `@apache.org`. Plus, you shouldn't forget to post a news to the Directory site main page.
+
diff --git a/source/fortress/download-old-versions.md b/source/fortress/download-old-versions.md
new file mode 100644
index 0000000..c862ce3
--- /dev/null
+++ b/source/fortress/download-old-versions.md
@@ -0,0 +1,51 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+<CENTER>
+
+| Version| Download Link | Javadoc | Date |
+|:-:|:-:|:-:|:-:|
+| Apache Fortress 2.0.4 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.4) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.4/apidocs/) |13/December/2019 |
+| Apache Fortress 2.0.3 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.3) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.3/apidocs/) |12/November/2018 |
+| Apache Fortress 2.0.2 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.2) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.2/apidocs/) |12/September/2018 |
+| Apache Fortress 2.0.1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.1/apidocs/) |20/July/2018 |
+| Apache Fortress 2.0.0 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0/apidocs/) |26/June/2017 |
+| Apache Fortress 2.0.0-RC2 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0-RC2) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0-RC2/apidocs/) |04/May/2017 |
+| Apache Fortress 2.0.0-RC1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/2.0.0-RC1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/2.0.0-RC1/apidocs/) |07/Nov/2016 |
+| Apache Fortress 1.0.1 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0.1) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0.1/apidocs/) |22/Jul/2016 |
+| Apache Fortress 1.0.0 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0.0) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0.0/apidocs/) |15/Apr/2016 |
+| Apache Fortress 1.0-RC42 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0-RC42) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0-RC42/apidocs/) |28/Mar/2016 |
+| Apache Fortress 1.0-RC40 | [Download](https://archive.apache.org/dist/directory/fortress/dist/1.0-RC40) | [Javadoc](https://directory.apache.org/fortress/gen-docs/1.0-RC40/apidocs/) |15/Apr/2015 |
+
+</CENTER>
+
+<DIV class="note" markdown="1">
+We encourage you to verify the integrity of the downloaded file using:
+
+* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+* the MD5 file (checksum).
+</DIV>
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+
+
+Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/source/fortress/download/download-archive.md b/source/fortress/download/download-archive.md
new file mode 100644
index 0000000..3aaebfb
--- /dev/null
+++ b/source/fortress/download/download-archive.md
@@ -0,0 +1,127 @@
+---
+title: Downloads for Archive
+---
+
+# Download Binaries
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Download jar and war files
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}.jar">
+ <strong>
+ [preferred]/[...]/fortress-core-{{< param version_fortress >}}.jar
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}.jar.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-impl-{{< param version_fortress >}}.jar">
+ <strong>
+ [preferred]/[...]/fortress-realm-impl-{{< param version_fortress >}}.jar
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-impl-{{< param version_fortress >}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-impl-{{< param version_fortress >}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-impl-{{< param version_fortress >}}.jar.sha512">SHA512</a>]
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-proxy-{{< param version_fortress >}}.jar">
+ <strong>
+ [preferred]/[...]/fortress-realm-proxy-{{< param version_fortress >}}.jar
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-proxy-{{< param version_fortress >}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-proxy-{{< param version_fortress >}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-proxy-{{< param version_fortress >}}.jar.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}.war">
+ <strong>
+ [preferred]/[...]/fortress-rest-{{< param version_fortress >}}.war
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}.war.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}.war.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}.war.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}.war">
+ <strong>
+ [preferred]/[...]/fortress-web-{{< param version_fortress >}}.war
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}.war.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}.war.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}.war.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}fortress-core-{{< param version_fortress >}}.jar{{< /download-verify >}}
diff --git a/source/fortress/download/download-sources.md b/source/fortress/download/download-sources.md
new file mode 100644
index 0000000..53f1709
--- /dev/null
+++ b/source/fortress/download/download-sources.md
@@ -0,0 +1,111 @@
+---
+title: Downloads for Sources
+---
+
+# Downloads for Archive
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/fortress-core-{{< param version_fortress >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-core-{{< param version_fortress >}}-source-release.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-{{< param version_fortress >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/fortress-realm-{{< param version_fortress >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-{{< param version_fortress >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-{{< param version_fortress >}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-realm-{{< param version_fortress >}}-source-release.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/fortress-rest-{{< param version_fortress >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-rest-{{< param version_fortress >}}-source-release.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/fortress-web-{{< param version_fortress >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{< param version_fortress >}}/fortress-web-{{< param version_fortress >}}-source-release.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}fortress-core-{{< param version_fortress >}}-source-release.zip{{< /download-verify >}}
diff --git a/source/fortress/downloads.md b/source/fortress/downloads.md
new file mode 100644
index 0000000..c979c8c
--- /dev/null
+++ b/source/fortress/downloads.md
@@ -0,0 +1,39 @@
+---
+title: Fortress Downloads
+---
+
+# Download Fortress
+
+## Fortress Archive Downloads
+
+To Download Apache Fortress:
+
+* ![Download](../images/download-archive.png) [Download Binaries](download/download-archive.html)
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
+
+## Fortress Maven Dependencies
+
+To embed Apache Fortress components into applications via Maven dependencies:
+
+ <!-- 1. Fortress Core API usage: -->
+ <dependency>
+ <groupId>org.apache.directory.fortress</groupId>
+ <artifactId>fortress-core</artifactId>
+ <version>${fortress-version}</version>
+ </dependency>
+
+ <!-- 2. Fortress Realm API usage: -->
+ <dependency>
+ <groupId>org.apache.directory.fortress</groupId>
+ <artifactId>fortress-realm-impl</artifactId>
+ <version>${fortress.version}</version>
+ </dependency>
+
+ <!-- 3. Fortress Web API usage: -->
+ <dependency>
+ <groupId>org.apache.directory.fortress</groupId>
+ <artifactId>fortress-web</artifactId>
+ <version>${fortress.version}</version>
+ </dependency>
+
+Note: Fortress Web is dependent on Fortress Realm is dependent on Fortress Core.
diff --git a/source/fortress/history.md b/source/fortress/history.md
new file mode 100644
index 0000000..b786ee1
--- /dev/null
+++ b/source/fortress/history.md
@@ -0,0 +1,16 @@
+---
+title: History
+---
+
+# Fortress History
+
+In 2009 a small team of developers[1], who are brothers, began work on the *Open Access Manager* project. From its onset, the push behind this project was to build a fully functioning access control system that is based on open standards and wholly open source. In particular, Role-Based Access Control (ANSI INCITS 359) was a focal point, although that adherence brought with it a need for expanded coverage into other areas like auditing and administration. After a couple of years of coding in their spare time, the brothers unveiled the project at the 2011 LDAPCon in Heidelberg, and with it a new name - *Fortress*. At the same time, it was announced that the OpenLDAP foundation would sponsor the project and it would be released under a BSD-style variant of an Open Source Software license.
+
+That first release, back in 2011, included just the fortress core and realm components, but development of the web interface (commander) and rest server (enmasse) was already underway. A few more years saw many more releases and the eventual completion of the others rounding out the entire product line into what's available today.
+
+Eventually, it was understood that nights and weekends of a few developers isn't enough and so if the fortress concept was to survive, it had to be carried into a larger field. In 2014 the Fortress project moved from its OpenLDAP foundation home into the ASF as a subproject of the Apache Directory.
+
+This new home proved worthy as the influx of new talent gained from being associated with the Apache Directory project, along with added exposure from its community has brought with it many gains and improvements.
+
+Footnotes:
+[1]. team roster in 2009 consisted of Kelly McKinney (engineering manager), Kevin McKinney (fortress web developer), and Shawn McKinney (fortress core developer).
diff --git a/source/fortress/installation.md b/source/fortress/installation.md
new file mode 100644
index 0000000..6922ff6
--- /dev/null
+++ b/source/fortress/installation.md
@@ -0,0 +1,41 @@
+---
+title: Fortress Installation guides
+---
+
+# Installation guides
+
+The Fortress Core requires an LDAP server to store its information. Its other components, Web and Rest, require a Java Servlet container. This page includes some links on getting started.
+
+## Fortress Core Setup with LDAP
+
+The Core is used by the other components, Realm, Rest and Web. These are to install ApacheDS or OpenLDAP (pick one), and configure for usage. For rapid deployment, you can skip the APACHEDS and SLAPD quickstarts, and use one for DOCKER instead.
+
+### Fortress Core & ApacheDS
+* [README-QUICKSTART-DOCKER-APACHEDS.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md) - Install Core for use with APACHEDS running inside DOCKER
+* [README-QUICKSTART-APACHEDS.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-APACHEDS.md) - Install Core for use with APACHEDS
+
+### Fortress Core & OpenLDAP
+* [README-QUICKSTART-DOCKER-SLAPD.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md) - Install Core for use with OPENLDAP running inside DOCKER
+* [README-QUICKSTART-SLAPD.md](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-SLAPD.md) - Install Core for use with OPENLDAP
+
+## Fortress Web and Rest Setup with Tomcat
+
+Apache Tomcat is used for the Fortress Rest and Web deployment testing.
+
+### Fortress Realm & Tomcat
+
+The Realm plugs into Tomcat and provides JavaEE security support.
+
+* [REALM-HOST-SETUP.md](https://github.com/apache/directory-fortress-realm/blob/master/REALM-HOST-SETUP.md) - Configure Tomcat Global Security using Realm
+* [REALM-CONTEXT-SETUP.md](https://github.com/apache/directory-fortress-realm/blob/master/REALM-CONTEXT-SETUP.md) - Configure Tomcat Local Security using Realm
+
+Next, pull either Fortress Web or Rest binaries from Maven, run inside Tomcat instance.
+
+### Fortress Rest & Tomcat
+* [README-QUICKSTART.md](https://github.com/apache/directory-fortress-enmasse/blob/master/README-QUICKSTART.md) - Install Fortress Rest to Tomcat
+
+### Fortress Web & Tomcat
+* [README-QUICKSTART.md](https://github.com/apache/directory-fortress-commander/blob/master/README-QUICKSTART.md) - Install Fortress Web to Tomcat
+
+More info can be found from each of the projects README's.
+
diff --git a/source/fortress/installation/apacheds.md b/source/fortress/installation/apacheds.md
new file mode 100644
index 0000000..25c3c39
--- /dev/null
+++ b/source/fortress/installation/apacheds.md
@@ -0,0 +1,55 @@
+---
+title: ApacheDS Installation guide
+---
+
+# ApacheDS Installation guide
+
+Provide instructions to install an **ApacheDS** instance and setup for use with **Fortress**. In this configuration, there is an **ApacheDS** server running on a machine (**ApacheDS Host**) and **Fortress** agent which will be installed on a client machine (**Fortress Host**). Note that those two hosts can be shared - and this is such a configuration that we are going to use in this document.
+
+## Prerequisites
+
+There a few mandatory elements that need to be installed on the **ApacheDS Host** :
+
+* Java 7 or greated sdk
+
+On the **Fortress Host**, you will need those components :
+
+* Java 7 or greated sdk
+* Apache Maven 3+
+* A web browser
+* Git
+* Apache Directory Studio
+
+## Installing ApacheDS
+
+On the **ApacheDS Host** :
+
+Follow the installation guide on [the ApacheDS download pages](https://directory.staging.apache.org/apacheds/downloads.html) (each page has an installation description).
+
+The base installation will install a server running on port *10389*, with a default user *uid=admin,ou=system* and the password *secret*. Please change those values !!!
+
+Note that the server requires a Java 7 sdk to run.
+
+## Installing Apache Directory Studio
+
+On the **Fortress Host** :
+
+We will install **Apache Directory Studio** which is a convenient tool when it comes to managing an **LDAP** server. Install using [the following documentation](https://directory.apache.org/studio/downloads.html). Again, each link contains directions on how to install this component.
+
+Once installed, check the connection to the **ApacheDS** server installed during the previous step. Create a _connection_, set the _hostName_ and _port_ to be those where you installed the **ApacheDS** server, then check the Network Parameter, ensure no errors.
+
+Check that the credentials you have set (defaulting to _uid=admin,ou=system_ and _secret_) using _Simple Authentication_, and clicking on _Check Authentication_ : work also.
+
+The complete description of the steps are found [on this page](https://directory.apache.org/studio/users-guide/ldap_browser/gettingstarted_create_connection.html)
+
+## Installing Fortress Core
+
+Assuming that **Git**, **Java 7** and **Apache Maven** are installed on the **Fortress Host**, and that **ApacheDS** is running on the **ApacheDS Host**, we can now configure and install **Fortress Core** on the **Fortress Host**
+
+The setup will use your specific configuration to create everything needed on the LDAP server to operate **Fortress**. It will also inject specific schema elements into the ldap server; entries that are required for *Fortress* to work. Once done, the **Fortress** APIs are ready to use.
+
+<DIV class="info" markdown="1">
+ The setup phase must be performed once per LDAP server instance. But every machine that uses Fortress, must be configured to point to the same LDAP server (as you would expect) that was initially setup. This will be explained later on.
+</DIV>
+
+
diff --git a/source/fortress/installation/apacheds/apacheds.md b/source/fortress/installation/apacheds/apacheds.md
new file mode 100644
index 0000000..af189a3
--- /dev/null
+++ b/source/fortress/installation/apacheds/apacheds.md
@@ -0,0 +1,28 @@
+---
+title: Quick start guide for ApacheDS
+navUp: ../../user-guide.html
+navUpText: User Guide
+navNext: prerequisites.html
+navNextText: System Prerequisites
+---
+
+These instructions are intended for new users who want to quickly learn how to install and test Apache Fortress and ApacheDS IAM software.
+
+Follow the steps and ApacheDS will be installed, configured, loaded, and ready to use by [Section IV](section-IV.html). EnMasse Policy Server demo starts in [Section VIII](section-VIII.html)
+
+### Table of contents
+
+* [System Prerequisites](prerequisites.html)
+* [Guidelines and Tips for first-time users](guidelines.html)
+* [Section I - Instructions to extract and configure Fortress Builder Package](section-I.html)
+* [Section II - Instructions to run the Fortress Ant Build](section-II.html)
+* [Section III - Instructions to configure ApacheDS and load with seed data](section-III.html)
+* [Section IV - Instructions to regression test Fortress and ApacheDS](section-IV.html)
+* [Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility](section-V.html)
+* [Section VI - Instructions to run Fortress Console](section-VI.html)
+* [Section VII - Instructions to generate and view Javadoc](section-VII.html)
+* [Section VIII - Instructions to install EnMasse Policy Server Demo (CLI)](section-VIII.html)
+* [Section IX - Instructions to regression test EnMasse Policy server](section-IX.html)
+* [Section X - More Utilities](section-X.html)
+
+
diff --git a/source/fortress/installation/apacheds/guidelines.md b/source/fortress/installation/apacheds/guidelines.md
new file mode 100644
index 0000000..5d15a19
--- /dev/null
+++ b/source/fortress/installation/apacheds/guidelines.md
@@ -0,0 +1,19 @@
+---
+title: Guidelines and Tips for first-time users
+navPrev: prerequisites.html
+navPrevText: System Prerequisites
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-I.html
+navNextText: Section I - Instructions to extract and configure Fortress Builder Package
+---
+
+# Guidelines and Tips for first-time users
+
+
+In the document that follows, when you read \[version\] or [platform] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Debian Silver i386', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Debian-Silver-i386-1.0.0.zip
+
+Is your target machine windows? Go to [README-QUICKSTART-WINDOWS](../windows/windows.html).
+
+The source code for this project is located here ./src.
+
diff --git a/source/fortress/installation/apacheds/prerequisites.md b/source/fortress/installation/apacheds/prerequisites.md
new file mode 100644
index 0000000..53fb41b
--- /dev/null
+++ b/source/fortress/installation/apacheds/prerequisites.md
@@ -0,0 +1,24 @@
+---
+title: System Prequesites
+navPrev: apacheds.html
+navPrevText: Quickstart ApacheDS - Table of contents
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: guidelines.html
+navNextText: Guidelines and Tips for first-time users
+---
+
+# System Prerequisites
+
+* Internet access to retrieve binary dependencies from online Maven repo.
+* Java SDK Version 7 or beyond installed to target environment
+* Redhat or Ubuntu server machine
+* 1GB RAM
+* 20GB HD
+* ApacheDS pre-installed
+
+NOTE: The Fortress build.xml may run without connection to Internet if:
+
+* The binary dependencies have previously been downloaded to FORTRESS_HOME/lib folder
+* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties: _local.mode=true_
+
diff --git a/source/fortress/installation/apacheds/section-I.md b/source/fortress/installation/apacheds/section-I.md
new file mode 100644
index 0000000..0791bb7
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-I.md
@@ -0,0 +1,41 @@
+---
+title: Section I - Instructions to extract and configure Fortress Builder Package
+navPrev: guidelines.html
+navPrevText: Guidelines and Tips for first-time users
+navUp: apacheds.html
+navUpText: Quickstart Apacheds - Table of contents
+navNext: section-II.html
+navNextText: Section II - Instructions to run the Fortress Ant Build
+---
+
+## Section I - Instructions to extract and configure Fortress Builder Package to Target System
+
+### Step 1
+
+Obtain copy of directory-fortress-core and copy to hard drive on target server env.
+
+https://gitbox.apache.org/repos/asf?p=directory-fortress-core.git;a=summary
+
+### Step 2
+
+Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
+
+### Step 3
+
+Edit file named 'build.properties' and insert or change the following LDAP configuration parameters:
+
+ ldap.server.type=apacheds
+
+ # These parameters point fortress to LDAP host:
+ ldap.host=localhost
+ ldap.port=10389
+
+ # These are used to construct suffix for DIT, i.e. dc=example,dc=com.
+ suffix.name=example
+ suffix.dc=com
+
+ # These are the connection parameters used for LDAP service account:
+ root.dn=uid=admin,ou=system
+
+ # This ApacheDS root password value is bound for fortress.properties.
+ cfg.root.pw=secret
diff --git a/source/fortress/installation/apacheds/section-II.md b/source/fortress/installation/apacheds/section-II.md
new file mode 100644
index 0000000..b5d9fab
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-II.md
@@ -0,0 +1,49 @@
+---
+title: Section II - Instructions to run the Fortress Ant Build
+navPrev: section-I.html
+navPrevText: Section I - Instructions to extract and configure Fortress Builder Package
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-III.html
+navNextText: Section III - Instructions to configure ApacheDS and load with seed data
+---
+
+## Section II - Instructions to run the Fortress Ant Build
+
+### Step 1
+
+From FORTRESS_HOME root folder, edit the b.sh script to point to java home:
+
+ export JAVA_HOME=/opt/jdk1.7.0_10
+
+<CENTER>
+ <IMG src="../../images/Screenshot3-edit-javahome.png" alt="Screenshot" width="766" height="111"/>
+</CENTER>
+
+### Step 2
+
+Run the distribution target:
+
+ ./b.sh dist
+
+<CENTER>
+ <IMG src="../../images/Screenshot4-ant-dist.png" alt="Screenshot" width="766" height="58"/>
+</CENTER>
+
+Note: The b.sh batch file referred to here uses Ant package that is local to Fortress quickstart package.
+
+### Step 3
+
+Verify it ran correctly according to Ant:
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot4-ant-success-dist.png" alt="Screenshot" width="766" height="58"/>
+</CENTER>
+
+You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
+
+<CENTER>
+ <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
+</CENTER>
diff --git a/source/fortress/installation/apacheds/section-III.md b/source/fortress/installation/apacheds/section-III.md
new file mode 100644
index 0000000..6a8bc6e
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-III.md
@@ -0,0 +1,71 @@
+---
+title: Section III - Instructions to configure ApacheDS and load with seed data
+navPrev: section-II.html
+navPrevText: Section II - Instructions to run the Fortress Ant Build
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-IV.html
+navNextText: Section IV - Instructions to regression test Fortress and ApacheDS
+---
+
+## Section III - Instructions to configure ApacheDS and load with seed data
+
+<DIV class="note" markdown="1">
+ Important: This target reloads the ApacheDS configuration and data.
+</DIV>
+
+### Step 1
+
+Import Fortress ApacheDS schema into ApacheDS server using preferred ldif import tool. Fortress ApacheDS schema located here: FORTRESS_HOME/ldap/schema/apacheds-fortress.ldif
+
+Screenshot of Apache Directory Studio import of Fortress schema file into ApacheDS:
+
+<CENTER>
+ <IMG src="../../images/Screenshot-Studio-Schema-Import.png" alt="Screenshot" width="766" height="461"/>
+</CENTER>
+
+Note: The default for this setting is 'false' or disabled.
+
+### Step 2
+
+The fortress 'init-apacheds' uses LDAPv3 to perform initial operations.
+
+Edit build.properties, ensure the following line has been commented out:
+
+
+<CENTER>
+ <IMG src="../../images/Screenshot43-edit-disable-rest.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The default for this setting is 'false' or disabled.
+
+### Step 3
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh init-apacheds
+
+### Step 4
+
+Verify it ran correctly according to Ant.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot7-init-slapd-success.png" alt="Screenshot" width="766" height="101"/>
+</CENTER>
+
+### Step 5
+
+After above step completes, Symas ApacheDS will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
+
+
+### Step 5
+
+Point your preferred LDAP browser, ours is Apache Directory Studio, to the installed directory.
+
+<To be completed>
+
+<CENTER>
+ <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
+</CENTER>
diff --git a/source/fortress/installation/apacheds/section-IV.md b/source/fortress/installation/apacheds/section-IV.md
new file mode 100644
index 0000000..e77f444
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-IV.md
@@ -0,0 +1,55 @@
+---
+title: Section IV - Instructions to regression test Fortress and ApacheDS
+navPrev: section-III.html
+navPrevText: Section III - Instructions to configure ApacheDS and load with seed data
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-V.html
+navNextText: Section V - Instructions to install Commander Web UI Demo
+---
+
+## Section IV - Instructions to regression test Fortress and ApacheDS on target machine (optional)
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh test-full
+
+<CENTER>
+ <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The Fortress regression tests will run for around 3 minutes.
+
+### Step 2
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot11-ant-test-success.png" alt="Screenshot" width="766" height="59"/>
+</CENTER>
+
+### Step 3
+
+To re-run these tests:
+
+ ./b.sh test-full
+
+<DIV class="note" markdown="1">
+ WARNING messages in test output are good as these are negative tests in action.
+</DIV>
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
+</CENTER>
+
+<DIV class="note" markdown="1">
+ If you made it this far without junit or ant ERRORS, the Fortress and ApacheDS IAM system are certified to run on your machine.
+</DIV>
+
+<DIV class="note" markdown="1">
+ These tests load tens of thousands of records into your newly installed directory. The 'init-apacheds' and 'test-full' targets may be re-run as often as necessary. After regressions testing has completed, you may run the 'init-apacheds' target to remove all test data from the directory.
+</DIV>
diff --git a/source/fortress/installation/apacheds/section-IX.md b/source/fortress/installation/apacheds/section-IX.md
new file mode 100644
index 0000000..730a605
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-IX.md
@@ -0,0 +1,76 @@
+---
+title: Section IX - Instructions to regression test EnMasse Policy server
+navPrev: section-VIII.html
+navPrevText: Section VIII - Instructions to install EnMasse Policy Server Demo
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-X.html
+navNextText: Section X - misc info about other utilities
+---
+
+## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
+
+### Step 1
+
+Edit file named 'build.properties' and enable REST protocol here:
+
+ enable.mgr.impl.rest=true
+
+Accept the defaults for other HTTP parameters in build.properties:
+
+ http.user=demouser4
+ http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
+ http.host=localhost
+ http.port=8080
+
+Should look like the following:
+
+<CENTER>
+ <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
+</CENTER>
+
+### Step 2
+
+Save and exit the text file editor
+
+### Step 3
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh test-full
+
+
+wrong picture...
+
+<CENTER>
+ <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The EnMasse regression tests will run for around 20 minutes.
+
+### Step 4
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 5
+
+This regression test may be rerun as often as necessary:
+
+ ./b.sh test-full
+
+Note 1 : WARNING messages in test output are good as these are negative tests in action :
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
+</CENTER>
+
+Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
+
+Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
+
diff --git a/source/fortress/installation/apacheds/section-V.md b/source/fortress/installation/apacheds/section-V.md
new file mode 100644
index 0000000..4f66a8b
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-V.md
@@ -0,0 +1,53 @@
+---
+title: Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility
+navPrev: section-IV.html
+navPrevText: Section IV - Instructions to regression test Fortress and ApacheDS
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-VI.html
+navNextText: Section VI - Instructions to run Fortress Console
+---
+
+## Section V - Instructions to run the Fortress Command Line Interpreter (CLI) utility
+
+This command line tool provides an interactive session with the user based on a simple command line syntax.
+
+### Step 1
+
+To start the CLI, enter:
+
+ ./b.sh cli
+
+<CENTER>
+ <IMG src="../../images/Screenshot13-ant-cli.png" alt="Screenshot" width="766" height="48"/>
+</CENTER>
+
+Which will bring up the command interpreter:
+
+<CENTER>
+ <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+### Step 2
+
+enter the command:
+
+ review fuser -u demo
+
+<CENTER>
+ <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+This example will return all users with userId that begins with 'demo':
+
+<CENTER>
+ <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
+</CENTER>
+
+### Step 3
+
+To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
+
+ [Command Line Interpreter](link...)
+
+Note: if javadocs are not found, go to [Section VII](section-VII.html)
\ No newline at end of file
diff --git a/source/fortress/installation/apacheds/section-VI.md b/source/fortress/installation/apacheds/section-VI.md
new file mode 100644
index 0000000..87908b5
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-VI.md
@@ -0,0 +1,71 @@
+---
+title: Section VI - Instructions to run Fortress Console
+navPrev: section-V.html
+navPrevText: Section V -Instructions to run the Fortress Command Line Interpreter (CLI) utility
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-VII.html
+navNextText: Section VII - Instructions to generate and view Javadoc
+---
+
+## Section VI - Instructions to run Fortress Console (optional)
+
+For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh console
+
+<CENTER>
+ <IMG src="../../images/Screenshot17-ant-console.png" alt="Screenshot" width="766" height="49"/>
+</CENTER>
+
+### Some Console Screenshots...
+
+#### Main Menu:
+
+<CENTER>
+ <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
+</CENTER>
+
+#### Admin Manager Functions
+
+Enter choice 1 and follow the screen prompts to edit RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Review Manager Functions
+
+Enter choice 2 and follow the screen prompts to search RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
+</CENTER>
+
+#### Access Manager Functions
+
+Enter choice 3 and follow the screen prompts to test RBAC policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
+</CENTER>
+
+#### Delegated Admin Manager Functions
+
+Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Audit Manager Functions
+
+Enter choice 8 and follow the screen prompts to search through the AUDIT log:
+
+<CENTER>
+ <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
+</CENTER>
diff --git a/source/fortress/installation/apacheds/section-VII.md b/source/fortress/installation/apacheds/section-VII.md
new file mode 100644
index 0000000..28a8024
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-VII.md
@@ -0,0 +1,52 @@
+---
+title: Section VII - Instructions to generate and view Javadoc
+navPrev: section-VI.html
+navPrevText: Section VI - Instructions to run Fortress Console
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-VIII.html
+navNextText: Section VIII - Instructions to install EnMasse Policy Server Demo
+---
+
+## Section VII - Instructions to generate and view Javadoc (optional)
+
+### Step 1
+
+Run the javadoc target:
+
+ ./b.sh javadoc
+
+<CENTER>
+ <IMG src="../../images/Screenshot24-ant-javadoc.png" alt="Screenshot" width="766" height="61"/>
+</CENTER>
+
+
+### Step 2
+
+Navigate to where docs are generated:
+
+<CENTER>
+ <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
+</CENTER>
+
+### Step 3
+
+Open 'index.html' using your preferred HTML Browser :
+
+<CENTER>
+ <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
+</CENTER>
+
+### Step 4
+
+The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
+
+### Step 5
+
+Good places to start learning about Fortress :
+
+* Fortress Manager Summary
+* RBAC Summary
+* Audit Manager
+* Command Line Interpreter
+* FortressAntTask
diff --git a/source/fortress/installation/apacheds/section-VIII.md b/source/fortress/installation/apacheds/section-VIII.md
new file mode 100644
index 0000000..8010232
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-VIII.md
@@ -0,0 +1,32 @@
+---
+title: Section VIII - Instructions to install EnMasse Policy Server Demo
+navPrev: section-VII.html
+navPrevText: Section VII - Instructions to generate and view Javadoc
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+navNext: section-IX.html
+navNextText: Section IX - Instructions to regression test EnMasse Policy server
+---
+
+## Section VIII - Instructions to install EnMasse Policy Server Demo (optional)
+
+### Step 1
+
+Run the install-enmasse-demo target:
+
+ ./b.sh install-enmasse-demo
+
+### Step 2
+
+Verify it ran correctly according to Ant.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot42-install-enmasse-demo-success.png" alt="Screenshot" width="766" height="278"/>
+</CENTER>
+
+
+### Step 3
+
+After above step completes, Fortress EnMasse will be installed
diff --git a/source/fortress/installation/apacheds/section-X.md b/source/fortress/installation/apacheds/section-X.md
new file mode 100644
index 0000000..ab65a1e
--- /dev/null
+++ b/source/fortress/installation/apacheds/section-X.md
@@ -0,0 +1,20 @@
+---
+title: Section X - More Utilities
+navPrev: section-IX.html
+navPrevText: Section IX - Instructions to regression test EnMasse Policy server
+navUp: apacheds.html
+navUpText: Quickstart ApacheDS - Table of contents
+---
+
+## Section X - More Utilities
+Other execution targets you may find useful:
+
+
+* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
+* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
+* 'encrypt' - interface to jacypt encryption utility
+* display all ant targets available:
+
+<CENTER>
+ <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
+</CENTER>
diff --git a/source/fortress/installation/linux/guidelines.md b/source/fortress/installation/linux/guidelines.md
new file mode 100644
index 0000000..7bfcad8
--- /dev/null
+++ b/source/fortress/installation/linux/guidelines.md
@@ -0,0 +1,19 @@
+---
+title: Guidelines and Tips for first-time users
+navPrev: prerequisites.html
+navPrevText: System Prerequisites
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-I.html
+navNextText: Section I - Instructions to run the Fortress Ant Build
+---
+
+# Guidelines and Tips for first-time users
+
+
+In the document that follows, when you read \[version\] or [platform] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Debian Silver i386', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Debian-Silver-i386-1.0.0.zip
+
+Is your target machine windows? Go to [README-QUICKSTART-WINDOWS](../windows/windows.html).
+
+The source code for this project is located here ./src.
+
diff --git a/source/fortress/installation/linux/linux.md b/source/fortress/installation/linux/linux.md
new file mode 100644
index 0000000..de4aa56
--- /dev/null
+++ b/source/fortress/installation/linux/linux.md
@@ -0,0 +1,32 @@
+---
+title: Quick start guide for Linux
+navUp: ../../user-guide.html
+navUpText: User Guide
+navNext: prerequisites.html
+navNextText: System Prerequisites
+---
+
+The intent of this document is to help new users with Apache Fortress IAM™ software using one of the the linux QUICKSTART packages located [here](https://directory.apache.org/fortress/download.html)
+
+For instructions on how to get Fortress connected to an existing OpenLDAP instance, follow the instructions inside SECTION 6 of this document: [README.txt](link to provide)
+
+### Table of contents
+
+* [System Prerequisites](prerequisites.html)
+* [Guidelines and Tips for first-time users](guidelines.html)
+* [Section I - download Fortress QUICKSTART and prepare the package](section-I.html)
+* [Section II - compile Fortress source and build distribution packages](section-II.html)
+* [Section III - install, configure and load OpenLDAP with seed data](section-III.html)
+* [Section IV - integration test Fortress and OpenLDAP](section-IV.html)
+* [Section V - Commander Web Administration demo](section-V.html)
+* [Section VI - integration test Commander with Solenium](section-VI.html)
+* [Section VII - connecting to Commander via Web browser](section-VII.html)
+* [Section VIII - Instructions to use Fortress Command Line Interpreter (CLI)](section-VIII.html)
+* [Section IX - Instructions to use Fortress Console utility (CLI)](section-IX.html)
+* [Section X - How to generate and view javadoc](section-X.html)
+* [Section XI - EnMasse REST Policy Server demo](section-XI.html)
+* [Section XII - integration test Fortress, EnMasse and OpenLDAP](section-XII.html)
+* [Section XIII - enable and test the OpenLDAP RBAC Accelerator Overlay](section-XIII.html)
+* [Section XIV - misc info about other utilities](section-XIV.html)
+
+
diff --git a/source/fortress/installation/linux/prerequisites.md b/source/fortress/installation/linux/prerequisites.md
new file mode 100644
index 0000000..16c0fe9
--- /dev/null
+++ b/source/fortress/installation/linux/prerequisites.md
@@ -0,0 +1,23 @@
+---
+title: System Prequesites
+navPrev: linux.html
+navPrevText: Quickstart Linux - Table of contents
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: guidelines.html
+navNextText: Guidelines and Tips for first-time users
+---
+
+# System Prerequisites
+
+* Internet access to retrieve binary dependencies from online Maven repo.
+* Java SDK Version 7 or beyond installed to target environment
+* Redhat or Ubuntu server machine
+* 1GB RAM
+* 20GB HD
+
+NOTE: The Fortress build.xml may run without connection to Internet if:
+
+* The binary dependencies have previously been downloaded to FORTRESS_HOME/lib folder
+* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties: _local.mode=true_
+
diff --git a/source/fortress/installation/linux/section-I.md b/source/fortress/installation/linux/section-I.md
new file mode 100644
index 0000000..c16e4fc
--- /dev/null
+++ b/source/fortress/installation/linux/section-I.md
@@ -0,0 +1,35 @@
+---
+title: Section I - Instructions to download, extract and configure Fortress
+navPrev: guidelines.html
+navPrevText: Guidelines and Tips for first-time users
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-II.html
+navNextText: Section II - Instructions to run the Fortress Ant Build
+---
+
+## Section I - Instructions to download, extract and configure Fortress Builder Package to Target System
+
+* Download one of the linux packages from here: iamfortress.org/download
+* Copy fortressBuilder-\[platform\]-\[version\].zip to hard drive on target server env.
+* Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
+*Enable permission for the binaries to execute. From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ chmod a+x -Rf *
+
+<CENTER>
+ <IMG src="../../images/Screenshot1-chmod.png" alt="Screenshot" width="766" height="58"/>
+</CENTER>
+
+If debian platform and using sudo, edit file named 'build.properties' and insert sudo password here:
+
+ sudo.pw=your pw here
+
+Note: For Redhat deployments leave this param's value empty, like below, otherwise the 'stop-slapd' target may not work.
+
+ sudo.pw=
+
+<CENTER>
+ <IMG src="../../images/Screenshot2-edit-sudo.png" alt="Screenshot" width="766" height="111"/>
+</CENTER>
+
diff --git a/source/fortress/installation/linux/section-II.md b/source/fortress/installation/linux/section-II.md
new file mode 100644
index 0000000..3fab652
--- /dev/null
+++ b/source/fortress/installation/linux/section-II.md
@@ -0,0 +1,49 @@
+---
+title: Section II - Instructions to run the Fortress Ant Build
+navPrev: section-I.html
+navPrevText: Section I - Instructions to download, extract and configure Fortress
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-III.html
+navNextText: Section III - Instructions to run the Builder to Install OpenLDAP
+---
+
+## Section II - Instructions to run the Fortress Ant Build
+
+### Step 1
+
+From FORTRESS_HOME root folder, edit the b.sh script to point to java home:
+
+ export JAVA_HOME=/opt/jdk1.7.0_10
+
+<CENTER>
+ <IMG src="../../images/Screenshot3-edit-javahome.png" alt="Screenshot" width="766" height="111"/>
+</CENTER>
+
+### Step 2
+
+Run the distribution target:
+
+ ./b.sh dist
+
+<CENTER>
+ <IMG src="../../images/Screenshot4-ant-dist.png" alt="Screenshot" width="766" height="58"/>
+</CENTER>
+
+Note: The b.sh batch file referred to here uses Ant package that is local to Fortress quickstart package.
+
+### Step 3
+
+Verify it ran correctly according to Ant:
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot4-ant-success-dist.png" alt="Screenshot" width="766" height="58"/>
+</CENTER>
+
+You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
+
+<CENTER>
+ <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
+</CENTER>
diff --git a/source/fortress/installation/linux/section-III.md b/source/fortress/installation/linux/section-III.md
new file mode 100644
index 0000000..bfa4ff1
--- /dev/null
+++ b/source/fortress/installation/linux/section-III.md
@@ -0,0 +1,90 @@
+---
+title: Section III - Instructions to run the Builder to Install OpenLDAP
+navPrev: section-II.html
+navPrevText: Section II - Instructions to run the Fortress Ant Build
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-IV.html
+navNextText: Section IV - Instructions to regression test Fortress and OpenLDAP
+---
+
+## Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
+
+<DIV class="note" markdown="1">
+ Important: This target reinstalls and reloads the OpenLDAP server program, configuration and data.
+</DIV>
+
+### Step 1
+
+The fortress 'init-slapd' uses LDAPv3 to perform initial operations.
+
+edit build.properties, ensure the following line has been commented out:
+
+<CENTER>
+ <IMG src="../../images/Screenshot43-edit-disable-rest.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The default for this setting is 'false' or disabled.
+
+### Step 2
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+if sudo:
+
+ sudo ./b.sh init-slapd
+
+<CENTER>
+ <IMG src="../../images/Screenshot6-init-slapd.png" alt="Screenshot" width="766" height="86"/>
+</CENTER>
+
+if not sudo you must run as user that has priv to modify folders in /var and /opt folders:
+
+ su
+
+ [enter your pw]
+
+before running the command to kick off the install
+
+ ./b.sh init-slapd
+
+### Step 3
+
+Verify it ran correctly according to Ant.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot7-init-slapd-success.png" alt="Screenshot" width="766" height="101"/>
+</CENTER>
+
+### Step 4
+
+After above step completes, OpenLDAP will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
+
+### Step 5
+
+Point your preferred LDAP browser, ours is Apache Directory Studio, to the installed directory. The configuration parameters you'll need to browse can be found in the generated 'slapd.conf' file.
+
+To view data stored in default database:
+
+ suffix "dc=openldap,dc=org"
+ rootdn "cn=Manager,dc=openldap,dc=org"
+ rootpw "secret"
+
+The root pw will be encrypted before stored in slapd.conf
+
+<CENTER>
+ <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
+</CENTER>
+
+To view data stored in audit log database:
+
+ suffix "cn=log"
+ rootdn "cn=Manager,cn=log"
+ rootpw "secret"
+
+The log root pw will be encrypted before stored in slapd.conf
+
+<CENTER>
+ <IMG src="../../images/Screenshot9-ldap-browser-log.png" alt="Screenshot" width="766" height="374"/>
+</CENTER>
diff --git a/source/fortress/installation/linux/section-IV.md b/source/fortress/installation/linux/section-IV.md
new file mode 100644
index 0000000..f2c0560
--- /dev/null
+++ b/source/fortress/installation/linux/section-IV.md
@@ -0,0 +1,55 @@
+---
+title: Section IV - Instructions to regression test Fortress and OpenLDAP
+navPrev: section-III.html
+navPrevText: Section III - Instructions to run the Builder to Install OpenLDAP
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-V.html
+navNextText: Section V - Instructions to install Commander Web UI Demo
+---
+
+## Section IV - Instructions to regression test Fortress and OpenLDAP on target machine (optional)
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh test-full
+
+<CENTER>
+ <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The Fortress regression tests will run for around 3 minutes.
+
+### Step 2
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot11-ant-test-success.png" alt="Screenshot" width="766" height="59"/>
+</CENTER>
+
+### Step 3
+
+To re-run these tests:
+
+ ./b.sh test-full
+
+<DIV class="note" markdown="1">
+ WARNING messages in test output are good as these are negative tests in action.
+</DIV>
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
+</CENTER>
+
+<DIV class="note" markdown="1">
+ If you made it this far without junit or ant ERRORS, the Fortress and OpenLDAP IAM system are certified to run on your machine.
+</DIV>
+
+<DIV class="note" markdown="1">
+ These tests load tens of thousands of records into your newly installed directory. The 'init-slapd' and 'test-full' targets may be re-run as often as necessary. After regressions testing has completed, you may run the 'init-slapd' target to remove all test data from the directory.
+</DIV>
diff --git a/source/fortress/installation/linux/section-IX.md b/source/fortress/installation/linux/section-IX.md
new file mode 100644
index 0000000..d2fa5ff
--- /dev/null
+++ b/source/fortress/installation/linux/section-IX.md
@@ -0,0 +1,71 @@
+---
+title: Section IX - Instructions to run Fortress Console
+navPrev: section-VIII.html
+navPrevText: Section VIII - Instructions to run the Fortress Command Line Interpreter
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-X.html
+navNextText: Section X - Instructions to generate and view Javadoc
+---
+
+## Section IX - Instructions to run Fortress Console (optional)
+
+For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh console
+
+<CENTER>
+ <IMG src="../../images/Screenshot17-ant-console.png" alt="Screenshot" width="766" height="49"/>
+</CENTER>
+
+### Some Console Screenshots...
+
+#### Main Menu:
+
+<CENTER>
+ <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
+</CENTER>
+
+#### Admin Manager Functions
+
+Enter choice 1 and follow the screen prompts to edit RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Review Manager Functions
+
+Enter choice 2 and follow the screen prompts to search RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
+</CENTER>
+
+#### Access Manager Functions
+
+Enter choice 3 and follow the screen prompts to test RBAC policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
+</CENTER>
+
+#### Delegated Admin Manager Functions
+
+Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Audit Manager Functions
+
+Enter choice 8 and follow the screen prompts to search through the AUDIT log:
+
+<CENTER>
+ <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
+</CENTER>
diff --git a/source/fortress/installation/linux/section-V.md b/source/fortress/installation/linux/section-V.md
new file mode 100644
index 0000000..e508921
--- /dev/null
+++ b/source/fortress/installation/linux/section-V.md
@@ -0,0 +1,15 @@
+---
+title: Section V - Instructions to install Commander Web UI Demo
+navPrev: section-IV.html
+navPrevText: Section IV - Instructions to regression test Fortress and OpenLDAP
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-VI.html
+navNextText: Section VI - Instructions to test Commander Web UI Demo
+---
+
+## Section V - Instructions to install Commander Web UI Demo (optional)
+
+Run the install-commander-demo target:
+
+ ./b.sh install-commander-demo
diff --git a/source/fortress/installation/linux/section-VI.md b/source/fortress/installation/linux/section-VI.md
new file mode 100644
index 0000000..181954d
--- /dev/null
+++ b/source/fortress/installation/linux/section-VI.md
@@ -0,0 +1,17 @@
+---
+title: Section VI - Instructions to test Commander Web UI Demo
+navPrev: section-V.html
+navPrevText: Section V - Instructions to install Commander Web UI Demo
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-VII.html
+navNextText: Section VII - Instructions to connect to Commander Web Admin
+---
+
+## Section VI - Instructions to automatically test Commander Web UI Demo (optional)
+
+Run the commander-maven-test target to perform headless test of Commander Web:
+
+ ./b.sh commander-maven-test
+
+note: Firefox must be preinstalled to target system.
\ No newline at end of file
diff --git a/source/fortress/installation/linux/section-VII.md b/source/fortress/installation/linux/section-VII.md
new file mode 100644
index 0000000..d9c064a
--- /dev/null
+++ b/source/fortress/installation/linux/section-VII.md
@@ -0,0 +1,20 @@
+---
+title: Section VII - Instructions to connect to Commander Web Admin
+navPrev: section-VI.html
+navPrevText: Section VI - Instructions to test Commander Web UI Demo
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-VIII.html
+navNextText: Section VIII - Instructions to run the Fortress Command Line Interpreter
+---
+
+## Section VII - Instructions to connect to Commander Web Admin
+
+Open up browser and enter the following URL:
+
+ http://localhost:8080/commander
+
+ userId: test
+ password: test
+
+Click on links on top or buttons on side of page to navigate between pages
\ No newline at end of file
diff --git a/source/fortress/installation/linux/section-VIII.md b/source/fortress/installation/linux/section-VIII.md
new file mode 100644
index 0000000..2a40243
--- /dev/null
+++ b/source/fortress/installation/linux/section-VIII.md
@@ -0,0 +1,53 @@
+---
+title: Section VIII - Instructions to run the Fortress Command Line Interpreter
+navPrev: section-VII.html
+navPrevText: Section VII - Instructions to connect to Commander Web Admin
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-IX.html
+navNextText: Section IX - Instructions to run Fortress Console
+---
+
+## Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI) utility (optional)
+
+This command line tool provides an interactive session with the user based on a simple command line syntax.
+
+### Step 1
+
+To start the CLI, enter:
+
+ ./b.sh cli
+
+<CENTER>
+ <IMG src="../../images/Screenshot13-ant-cli.png" alt="Screenshot" width="766" height="48"/>
+</CENTER>
+
+Which will bring up the command interpreter:
+
+<CENTER>
+ <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+### Step 2
+
+enter the command:
+
+ review fuser -u demo
+
+<CENTER>
+ <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+This example will return all users with userId that begins with 'demo':
+
+<CENTER>
+ <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
+</CENTER>
+
+### Step 3
+
+To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
+
+ [Command Line Interpreter](link...)
+
+Note: if javadocs are not found, go to [Section X](section-X.html)
\ No newline at end of file
diff --git a/source/fortress/installation/linux/section-X.md b/source/fortress/installation/linux/section-X.md
new file mode 100644
index 0000000..9ae8a6b
--- /dev/null
+++ b/source/fortress/installation/linux/section-X.md
@@ -0,0 +1,52 @@
+---
+title: Section X - Instructions to generate and view Javadoc
+navPrev: section-IX.html
+navPrevText: Section IX - Instructions to run Fortress Console
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-XI.html
+navNextText: Section XI - Instructions to install EnMasse Policy Server Demo
+---
+
+## Section X - Instructions to generate and view Javadoc (optional)
+
+### Step 1
+
+Run the javadoc target:
+
+ ./b.sh javadoc
+
+<CENTER>
+ <IMG src="../../images/Screenshot24-ant-javadoc.png" alt="Screenshot" width="766" height="61"/>
+</CENTER>
+
+
+### Step 2
+
+Navigate to where docs are generated:
+
+<CENTER>
+ <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
+</CENTER>
+
+### Step 3
+
+Open 'index.html' using your preferred HTML Browser :
+
+<CENTER>
+ <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
+</CENTER>
+
+### Step 4
+
+The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
+
+### Step 5
+
+Good places to start learning about Fortress :
+
+* Fortress Manager Summary
+* RBAC Summary
+* Audit Manager
+* Command Line Interpreter
+* FortressAntTask
diff --git a/source/fortress/installation/linux/section-XI.md b/source/fortress/installation/linux/section-XI.md
new file mode 100644
index 0000000..a26f4b0
--- /dev/null
+++ b/source/fortress/installation/linux/section-XI.md
@@ -0,0 +1,32 @@
+---
+title: Section XI - Instructions to install EnMasse Policy Server Demo
+navPrev: section-X.html
+navPrevText: Section X - Instructions to generate and view Javadoc
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-XII.html
+navNextText: Section XII - Instructions to regression test EnMasse Policy server
+---
+
+## Section XI - Instructions to install EnMasse Policy Server Demo (optional)
+
+### Step 1
+
+Run the install-enmasse-demo target:
+
+ ./b.sh install-enmasse-demo
+
+### Step 2
+
+Verify it ran correctly according to Ant.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot42-install-enmasse-demo-success.png" alt="Screenshot" width="766" height="278"/>
+</CENTER>
+
+
+### Step 3
+
+After above step completes, Fortress EnMasse will be installed
diff --git a/source/fortress/installation/linux/section-XII.md b/source/fortress/installation/linux/section-XII.md
new file mode 100644
index 0000000..1eae166
--- /dev/null
+++ b/source/fortress/installation/linux/section-XII.md
@@ -0,0 +1,73 @@
+---
+title: Section XII - Instructions to regression test EnMasse Policy server
+navPrev: section-XI.html
+navPrevText: Section XI - Instructions to install EnMasse Policy Server Demo
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-XIII.html
+navNextText: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
+---
+
+## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
+
+### Step 1
+
+Edit file named 'build.properties' and enable REST protocol here:
+
+ enable.mgr.impl.rest=true
+
+Accept the defaults for other HTTP parameters in build.properties:
+
+ http.user=demouser4
+ http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
+ http.host=localhost
+ http.port=8080
+
+Should look like the following:
+
+<CENTER>
+ <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
+</CENTER>
+
+### Step 2
+
+Save and exit the text file editor
+
+### Step 3
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ ./b.sh test-full
+
+<CENTER>
+ <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The EnMasse regression tests will run for around 20 minutes.
+
+### Step 4
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 5
+
+This regression test may be rerun as often as necessary:
+
+ ./b.sh test-full
+
+Note 1 : WARNING messages in test output are good as these are negative tests in action :
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
+</CENTER>
+
+Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
+
+Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
+
diff --git a/source/fortress/installation/linux/section-XIII.md b/source/fortress/installation/linux/section-XIII.md
new file mode 100644
index 0000000..11c2a1a
--- /dev/null
+++ b/source/fortress/installation/linux/section-XIII.md
@@ -0,0 +1,68 @@
+---
+title: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
+navPrev: section-XII.html
+navPrevText: Section XII - Instructions to regression test EnMasse Policy server
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+navNext: section-XIV.html
+navNextText: Section XIV - More Utilities
+---
+
+## Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP and test Java-side bindings (optional)
+
+### Step 1
+
+Edit file named 'build.properties' and enable RBAC accelerator by adding:
+
+ rbac.accelerator=true
+
+### Step 2
+
+Save and exit the text file editor
+
+### Step 3
+
+Reinstall OpenLDAP by running the _init-slapd_ target described in [Section III: Instructions to run the Builder to Install OpenLDAP](section-III.html), configure and load with seed data
+
+### Step 4
+
+Load necessary test data for unit tests:
+
+ ./b.sh admin -Dparam1=ldap/setup/RbacAcceleratorTestUsers.xml
+
+### Step 5
+
+Now you can run the rbac accelerator unit tests:
+
+ ./b.sh test-accel
+
+### Step 6
+
+Verify the test-accel target completed with no ant or junit errors
+
+### Step 7
+
+Reload necessary regression test data by running the test-full target described in [Section IV: Instructions to regression test Fortress and OpenLDAP on target machine](section-IV.html)
+
+### Step 8
+
+Now you can run the rbac accelerator regression tests:
+
+ ./b.sh test-accel-full
+
+### Step 9
+
+Verify the test-full-accel target completed with no ant or junit errors
+
+### Step 10
+
+Check out the javadoc for learning about APIs supported within the RBAC accelerator: [Fortress Accelerator Client](link...)
+
+
+Note 1: The RBAC accelerator turns OpenLDAP into an RBAC Policy Decision Point (PDP) server. All state is maintained in OpenLDAP LMDB databases including session and audit trail.
+
+Note 2: The slapd.conf file contains the mappings for the new database backends. You can view this data using any LDAP browser.
+
+Note 3: Bindings for C and Python are being worked on and will be released soon.
+
+Note 4: SessionPermissions will be in future release as required by ANSI RBAC (INCITS 359) Core functionality.
diff --git a/source/fortress/installation/linux/section-XIV.md b/source/fortress/installation/linux/section-XIV.md
new file mode 100644
index 0000000..d8c6883
--- /dev/null
+++ b/source/fortress/installation/linux/section-XIV.md
@@ -0,0 +1,22 @@
+---
+title: Section XIV - More Utilities
+navPrev: section-XIII.html
+navPrevText: Section XIII - Instructions to enable RBAC Accelerator Overlay in OpenLDAP
+navUp: linux.html
+navUpText: Quickstart Linux - Table of contents
+---
+
+## Section XIV - More Utilities
+Other execution targets you may find useful:
+
+
+* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
+* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
+* 'encrypt' - interface to jacypt encryption utility
+* 'start-slapd' - Starts OpenLDAP on target machine.
+* 'stop-slapd' - Stops OpenLDAP on target machine. Note: for slapd commands sudo or elevated privileges may be required.
+* display all ant targets available:
+
+<CENTER>
+ <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
+</CENTER>
diff --git a/source/fortress/installation/openldap.md b/source/fortress/installation/openldap.md
new file mode 100644
index 0000000..0c02e20
--- /dev/null
+++ b/source/fortress/installation/openldap.md
@@ -0,0 +1,6 @@
+---
+title: Installation guides
+---
+
+# Installation guides
+
diff --git a/source/fortress/installation/windows/guidelines.md b/source/fortress/installation/windows/guidelines.md
new file mode 100644
index 0000000..657aed8
--- /dev/null
+++ b/source/fortress/installation/windows/guidelines.md
@@ -0,0 +1,23 @@
+---
+title: Guidelines and Tips for first-time users
+navPrev: prerequisites.html
+navPrevText: System Prerequisites
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-I.html
+navNextText: Section I - Instructions to run the Fortress Ant Build
+---
+
+# Guidelines and Tips for first-time users
+
+
+* In the document that follows, when you read \[version\] or \[platform\] substitute with current package info. For example - if the downloaded package version is 1.0.0 and platform is 'Windows', the instructions show fortressBuilder-\[platform\]-\[version\].jar your file name would be fortressBuilder-Windows-1.0.0.zip
+
+* Does your target machine OS end with an X? Go to [README-QUICKSTART.html]
+
+* The source code for this project is located in [FORTRESS_HOME\src folder].
+
+<CENTER>
+ <IMG src="../../images/Screenshot28-src-listing-win.png" alt="Screenshot" width="766" height="518"/>
+</CENTER>
+
diff --git a/source/fortress/installation/windows/prequesites.md b/source/fortress/installation/windows/prequesites.md
new file mode 100644
index 0000000..90ac4d8
--- /dev/null
+++ b/source/fortress/installation/windows/prequesites.md
@@ -0,0 +1,23 @@
+---
+title: System Prequesites
+navPrev: windows.html
+navPrevText: Quickstart Windows - Table of contents
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: guidelines.html
+navNextText: Guidelines and Tips for first-time users
+---
+
+# System Prerequisites
+
+The following steps are required...
+
+* Internet access to retrieve binary dependencies from online Maven repo.
+* Java SDK Version 7 or beyond installed to target environment
+
+NOTE: The Fortress build.xml may run without connection to Internet if:
+
+* The binary dependencies are already present in FORTRESS_HOME/lib folder
+* Local mode has been enabled on target machine. Local mode can be enabled by adding this property to build.properties:
+
+ local.mode=true
diff --git a/source/fortress/installation/windows/section-I.md b/source/fortress/installation/windows/section-I.md
new file mode 100644
index 0000000..8a5f4f0
--- /dev/null
+++ b/source/fortress/installation/windows/section-I.md
@@ -0,0 +1,18 @@
+---
+title: Section I - Instructions to extract and configure Fortress Builder Package
+navPrev: guidelines.html
+navPrevText: Guidelines and Tips for first-time users
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-II.html
+navNextText: Section II - Instructions to run the Fortress Ant Build
+---
+
+## Section I - Instructions to extract and configure Fortress Builder Package to Target System
+
+### Step 1
+
+Copy fortressBuilder-\[platform\]-\[version\].zip to hard drive on target server env.
+
+### Step 2
+Extract the zip. The location for archive can vary according to requirements. The location of package will be referred to as FORTRESS_HOME later on.
diff --git a/source/fortress/installation/windows/section-II.md b/source/fortress/installation/windows/section-II.md
new file mode 100644
index 0000000..3d294fb
--- /dev/null
+++ b/source/fortress/installation/windows/section-II.md
@@ -0,0 +1,51 @@
+---
+title: Section II - Instructions to run the Fortress Ant Build
+navPrev: section-I.html
+navPrevText: Section I - Instructions to extract and configure Fortress Builder Package
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-III.html
+navNextText: Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
+---
+
+## Section II - Instructions to run the Fortress Ant Build
+
+### Step 1
+
+From FORTRESS_HOME root folder, edit the b.bat script to point to java home:
+
+ set JAVA_HOME=\Progra~1\Java\jdk1.7.0
+
+<CENTER>
+ <IMG src="../../images/Screenshot28-edit-javahome-win.png" alt="Screenshot" width="766" height="504"/>
+</CENTER>
+
+### Step 2
+
+Run the distribution target:
+
+ b.bat dist
+
+<CENTER>
+ <IMG src="../../images/Screenshot29-ant-dist-win.png" alt="Screenshot" width="766" height="47"/>
+</CENTER>
+
+Note: The b.bat file referred to here uses Ant package that is local to Fortress quickstart package.
+
+### Step 3
+
+Verify it ran correctly according to Ant:
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot30-ant-dist-success-win.png" alt="Screenshot" width="766" height="98"/>
+</CENTER>
+
+You may now view the project binaries and documentation located under FORTRESS_HOME/dist.
+
+-----> Wrong snapshot !
+
+<CENTER>
+ <IMG src="../../images/Screenshot5-dist-listing.png" alt="Screenshot" width="766" height="87"/>
+</CENTER>
diff --git a/source/fortress/installation/windows/section-III.md b/source/fortress/installation/windows/section-III.md
new file mode 100644
index 0000000..8caed21
--- /dev/null
+++ b/source/fortress/installation/windows/section-III.md
@@ -0,0 +1,94 @@
+---
+title: Section III - Instructions to run the Builder to Install OpenLDAP
+navPrev: section-II.html
+navPrevText: Section II - Instructions to run the Fortress Ant Build
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-IV.html
+navNextText: Section IV - Instructions to regression test Fortress and OpenLDAP
+---
+
+## Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data
+
+<DIV class="note" markdown="1">
+ Important: This target reinstalls and reloads the OpenLDAP server program, configuration and data.
+</DIV>
+
+### Step 1
+
+From FORTRESS_HOME root folder, edit the build.properties file, setting the 3 properties below to match your environment:
+
+ slapd.exe.drive=C <-- contains the drive letter for openldap server
+ slapd.exe.dir=OpenLDAP <-- contains the folder to load openldap server binaries
+ fortress.home.drive=C <-- contains the drive letter that you extracted fortress' builder package to.
+
+If you are not sure, what to use, the defaults usually work. Here's a screen shot of the build.properties.
+
+<CENTER>
+ <IMG src="../../images/Screenshot39-build-properties-win.png" alt="Screenshot" width="766" height="563"/>
+</CENTER>
+
+### Step 2
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ b init-slapd
+
+<CENTER>
+ <IMG src="../../images/Screenshot31-init-slapd-win.png" alt="Screenshot" width="766" height="34"/>
+</CENTER>
+
+Note: You will need to reply 'Yes' to the pop-up message:
+
+<CENTER>
+ <IMG src="../../images/Screenshot33-window-warning.png" alt="Screenshot"/>
+</CENTER>
+
+Note: You will need to reply 'Allow' to the pop-up security warning message if you intend to allow other machines to communicate with ldap server:
+
+<CENTER>
+ <IMG src="../../images/Screenshot40-firewall-warning-win.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 3
+
+Verify it ran correctly according to Ant.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot32-init-slapd-success-win.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 4
+
+After above step completes, OpenLDAP will be installed, configured and loaded with fortress bootstrap config. This step also runs provisioning scripts which may be tailored according to requirements. Check out the xml load scripts in FORTRESS_HOME/ldap/setup folder.
+
+
+### Step 5
+
+Point your preferred LDAP browser, ours is [Apache Directory Studio](https://directory.apache.org/studio), to the installed directory. The configuration parameters you'll need to browse can be found in the generated 'slapd.conf' file.
+
+To view data stored in default database:
+
+ suffix "dc=openldap,dc=org"
+ rootdn "cn=Manager,dc=openldap,dc=org"
+ rootpw "secret"
+
+The root pw will be encrypted before stored in slapd.conf
+
+<CENTER>
+ <IMG src="../../images/Screenshot8-ldap-browser.png" alt="Screenshot" width="766" height="439"/>
+</CENTER>
+
+To view data stored in audit log database:
+
+ suffix "cn=log"
+ rootdn "cn=Manager,cn=log"
+ rootpw "secret"
+
+The log root pw will be encrypted before stored in slapd.conf
+
+<CENTER>
+ <IMG src="../../images/Screenshot9-ldap-browser-log.png" alt="Screenshot" width="766" height="374"/>
+</CENTER>
diff --git a/source/fortress/installation/windows/section-IV.md b/source/fortress/installation/windows/section-IV.md
new file mode 100644
index 0000000..a8f3b05
--- /dev/null
+++ b/source/fortress/installation/windows/section-IV.md
@@ -0,0 +1,53 @@
+---
+title: Section IV - Instructions to regression test Fortress and OpenLDAP
+navPrev: section-III.html
+navPrevText: Section III - Instructions to run the Builder to Install OpenLDAP
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-V.html
+navNextText: Section V - Instructions to install Commander Web UI Demo
+---
+
+## Section IV - Instructions to regression test Fortress and OpenLDAP on target machine
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ b test-full
+
+<CENTER>
+ <IMG src="../../images/Screenshot34-ant-test-init-win.png" alt="Screenshot" width="766" height="30"/>
+</CENTER>
+
+### Step 2
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot35-ant-test-init-success-win.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 3
+
+To re-run these tests:
+
+ b test-full
+
+<DIV class="note" markdown="1">
+ WARNING messages in test output are good as these are negative tests in action.
+</DIV>
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot"/>
+</CENTER>
+
+<DIV class="note" markdown="1">
+ If you made it this far without junit or ant ERRORS, the Fortress and OpenLDAP IAM system are certified to run on your machine.
+</DIV>
+
+<DIV class="note" markdown="1">
+ These tests load tens of thousands of records into your newly installed directory. The 'init-slapd' target may be re-run after the 'test-full-init' and 'test-full' targets have completed. This will delete the test data from the directory and restart directory with a clean slate.
+</DIV>
diff --git a/source/fortress/installation/windows/section-IX.md b/source/fortress/installation/windows/section-IX.md
new file mode 100644
index 0000000..09a079f
--- /dev/null
+++ b/source/fortress/installation/windows/section-IX.md
@@ -0,0 +1,71 @@
+---
+title: Section IX - Instructions to run Fortress Console
+navPrev: section-VIII.html
+navPrevText: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-X.html
+navNextText: Section X - Instructions to generate and view Javadoc
+---
+
+## Section IX - Instructions to run Fortress Console (optional)
+
+For tasks like one-time setup of new users, password resets, searches the Fortress Console application can be used.
+
+### Step 1
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ b console
+
+<CENTER>
+ <IMG src="../../images/Screenshot37-ant-console-win.png" alt="Screenshot"/>
+</CENTER>
+
+### Some Console Screenshots...
+
+#### Main Menu:
+
+<CENTER>
+ <IMG src="../../images/Screenshot18-console-main.png" alt="Screenshot"/>
+</CENTER>
+
+#### Admin Manager Functions
+
+Enter choice 1 and follow the screen prompts to edit RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot19-console-admin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Review Manager Functions
+
+Enter choice 2 and follow the screen prompts to search RBAC data:
+
+<CENTER>
+ <IMG src="../../images/Screenshot20-console-review.png" alt="Screenshot"/>
+</CENTER>
+
+#### Access Manager Functions
+
+Enter choice 3 and follow the screen prompts to test RBAC policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot21-console-access.png" alt="Screenshot"/>
+</CENTER>
+
+#### Delegated Admin Manager Functions
+
+Enter choice 4 and follow the screen prompts to setup ARBAC delegated policies:
+
+<CENTER>
+ <IMG src="../../images/Screenshot22-console-deladmin.png" alt="Screenshot"/>
+</CENTER>
+
+#### Audit Manager Functions
+
+Enter choice 8 and follow the screen prompts to search through the AUDIT log:
+
+<CENTER>
+ <IMG src="../../images/Screenshot23-console-audit.png" alt="Screenshot"/>
+</CENTER>
diff --git a/source/fortress/installation/windows/section-V.md b/source/fortress/installation/windows/section-V.md
new file mode 100644
index 0000000..86427ed
--- /dev/null
+++ b/source/fortress/installation/windows/section-V.md
@@ -0,0 +1,15 @@
+---
+title: Section V - Instructions to install Commander Web UI Demo (optional)
+navPrev: section-IV.html
+navPrevText: Section IV - Instructions to regression test Fortress and OpenLDAP
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-VI.html
+navNextText: Section VI - Instructions to test Commander Web UI Demo
+---
+
+## Section V - Instructions to install Commander Web UI Demo (optional)
+
+Run the install-commander-demo target:
+
+ b install-commander-demo
diff --git a/source/fortress/installation/windows/section-VI.md b/source/fortress/installation/windows/section-VI.md
new file mode 100644
index 0000000..5e46501
--- /dev/null
+++ b/source/fortress/installation/windows/section-VI.md
@@ -0,0 +1,17 @@
+---
+title: Section VI - Instructions to automatically test Commander Web UI Demo (optional)
+navPrev: section-V.html
+navPrevText: Section V - Instructions to install Commander Web UI Demo
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-VII.html
+navNextText: Section VII - Instructions to connect to Commander Web Admin
+---
+
+## Section VI - Instructions to automatically test Commander Web UI Demo (optional)
+
+Run the commander-maven-test target to perform headless test of Commander Web:
+
+ b commander-maven-test
+
+note: Firefox must be preinstalled to target system.
\ No newline at end of file
diff --git a/source/fortress/installation/windows/section-VII.md b/source/fortress/installation/windows/section-VII.md
new file mode 100644
index 0000000..c683adb
--- /dev/null
+++ b/source/fortress/installation/windows/section-VII.md
@@ -0,0 +1,20 @@
+---
+title: Section VII - Instructions to connect to Commander Web Admin
+navPrev: section-VI.html
+navPrevText: Section VI - Instructions to test Commander Web UI Demo
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-VIII.html
+navNextText: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
+---
+
+## Section VII - Instructions to connect to Commander Web Admin
+
+Open up browser and enter the following URL:
+
+ http://localhost:8080/commander
+
+ userId: test
+ password: test
+
+Click on links on top or bottons on side of page to navigate between pages
\ No newline at end of file
diff --git a/source/fortress/installation/windows/section-VIII.md b/source/fortress/installation/windows/section-VIII.md
new file mode 100644
index 0000000..3ec2808
--- /dev/null
+++ b/source/fortress/installation/windows/section-VIII.md
@@ -0,0 +1,53 @@
+---
+title: Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)
+navPrev: section-VII.html
+navPrevText: Section VII - nstructions to connect to Commander Web Admin
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-IX.html
+navNextText: Section IX - Instructions to run Fortress Console (CLI)
+---
+
+## Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI) (optional)
+
+This command line tool provides an interactive session with the user based on a simple command line syntax.
+
+### Step 1
+
+To start the CLI, enter:
+
+ b cli
+
+<CENTER>
+ <IMG src="../../images/Screenshot36-ant-cli-win.png" alt="Screenshot"/>
+</CENTER>
+
+Which will bring up the command interpreter:
+
+<CENTER>
+ <IMG src="../../images/Screenshot14-cli.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+### Step 2
+
+enter the command:
+
+ review fuser -u demo
+
+<CENTER>
+ <IMG src="../../images/Screenshot15-cli-review.png" alt="Screenshot" width="766" height="78"/>
+</CENTER>
+
+This example will return all users with userId that begins with 'demo':
+
+<CENTER>
+ <IMG src="../../images/Screenshot16-cli-fuser.png" alt="Screenshot" width="766" height="682"/>
+</CENTER>
+
+### Step 3
+
+To learn more about the CLI and what it can do, follow instructions in the command line interpreter reference manual in the javadoc located here:
+
+ [Command Line Interpreter](link...)
+
+Note: if javadocs are not found, go to [Section X](section-X.html)
\ No newline at end of file
diff --git a/source/fortress/installation/windows/section-X.md b/source/fortress/installation/windows/section-X.md
new file mode 100644
index 0000000..e17a63f
--- /dev/null
+++ b/source/fortress/installation/windows/section-X.md
@@ -0,0 +1,56 @@
+---
+title: Section X - Instructions to generate and view Javadoc
+navPrev: section-IX.html
+navPrevText: Section IX - Instructions to run Fortress Console
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-XI.html
+navNextText: Section XI - Instructions to install EnMasse Policy Server Demo
+---
+
+## Section X - Instructions to generate and view Javadoc (optional)
+
+### Step 1
+
+Run the javadoc target:
+
+ b javadoc
+
+<CENTER>
+ <IMG src="../../images/Screenshot38-javadoc-win.png" alt="Screenshot"/>
+</CENTER>
+
+
+### Step 2
+
+Navigate to where docs are generated :
+
+(wrong snapshot)
+
+<CENTER>
+ <IMG src="../../images/Screenshot25-javadoc-listing.png" alt="Screenshot" width="766" height="114"/>
+</CENTER>
+
+### Step 3
+
+Open 'index.html' using your preferred HTML Browser :
+
+<CENTER>
+ <IMG src="../../images/Screenshot26-javadoc.png" alt="Screenshot" width="766" height="463"/>
+</CENTER>
+
+### Step 4
+
+The javadoc provides coverage of the Fortress APIs and also provides explanations on how RBAC, ARBAC, PW Policies and Audit work.
+
+### Step 5
+
+Good places to start learning about Fortress :
+
+(update links)
+
+* Fortress Manager Summary
+* RBAC Summary
+* Audit Manager
+* Command Line Interpreter
+* FortressAntTask
diff --git a/source/fortress/installation/windows/section-XI.md b/source/fortress/installation/windows/section-XI.md
new file mode 100644
index 0000000..a466ca3
--- /dev/null
+++ b/source/fortress/installation/windows/section-XI.md
@@ -0,0 +1,25 @@
+---
+title: Section XI - Instructions to install EnMasse Policy Server Demo
+navPrev: section-X.html
+navPrevText: Section X - Instructions to generate and view Javadoc
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-XII.html
+navNextText: Section XII - Instructions to regression test EnMasse Policy server
+---
+
+## Section XI - Instructions to install EnMasse Policy Server Demo
+
+### Step 1
+
+Run the install-enmasse-demo target:
+
+ b install-enmasse-demo
+
+### Step 2
+
+Verify it ran correctly according to Ant.
+
+### Step 3
+
+After above step completes, Fortress EnMasse will be installed
diff --git a/source/fortress/installation/windows/section-XII.md b/source/fortress/installation/windows/section-XII.md
new file mode 100644
index 0000000..496835e
--- /dev/null
+++ b/source/fortress/installation/windows/section-XII.md
@@ -0,0 +1,76 @@
+---
+title: Section XII - Instructions to regression test EnMasse Policy server
+navPrev: section-XI.html
+navPrevText: Section XI - Instructions to install EnMasse Policy Server Demo
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-XIII.html
+navNextText: Section XIII - misc info about other utilities
+---
+
+## Section XII - Instructions to regression test EnMasse Policy server on target machine (optional)
+
+### Step 1
+
+Edit file named 'build.properties' and enable REST protocol here:
+
+ enable.mgr.impl.rest=true
+
+Accept the defaults for other HTTP parameters in build.properties:
+
+ http.user=demouser4
+ http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
+ http.host=localhost
+ http.port=8080
+
+Should look like the following:
+
+<CENTER>
+ <IMG src="../../images/Screenshot41-enmasse-http-settings.png" alt="Screenshot" width="766" height="88"/>
+</CENTER>
+
+### Step 2
+
+Save and exit the text file editor
+
+### Step 3
+
+From FORTRESS_HOME root folder, enter the following command from a system prompt:
+
+ b test-full
+
+
+wrong picture...
+
+<CENTER>
+ <IMG src="../../images/Screenshot10-ant-test-init.png" alt="Screenshot"/>
+</CENTER>
+
+Note: The EnMasse regression tests will run for around 20 minutes.
+
+### Step 4
+
+Verify these tests ran with no ERRORS.
+
+ BUILD SUCCESSFUL
+
+<CENTER>
+ <IMG src="../../images/Screenshot43-ant-enmasse-test-success.png" alt="Screenshot"/>
+</CENTER>
+
+### Step 5
+
+This regression test may be rerun as often as necessary:
+
+ b test-full
+
+Note 1 : WARNING messages in test output are good as these are negative tests in action :
+
+<CENTER>
+ <IMG src="../../images/Screenshot12-junit-warn.png" alt="Screenshot" width="766" height="34"/>
+</CENTER>
+
+Note 2: If you made it this far without junit or ant ERRORS, EnMasse is installed and certified to run on your machine.
+
+Note 3: These tests load tens of thousands of records into your directory. The 'test-full' target may be re-run as often as necessary. After regressions testing have completed, you may run the 'init-slapd' target to remove all test data from the directory.
+
diff --git a/source/fortress/installation/windows/section-XIII.md b/source/fortress/installation/windows/section-XIII.md
new file mode 100644
index 0000000..3a40af8
--- /dev/null
+++ b/source/fortress/installation/windows/section-XIII.md
@@ -0,0 +1,25 @@
+---
+title: Section XIII - More Utilities
+navPrev: section-XII.html
+navPrevText: Section XII - Instructions to regression test EnMasse Policy server
+navUp: windows.html
+navUpText: Quickstart Windows - Table of contents
+navNext: section-XIV.html
+navNextText: Section XIV - More Utilities
+---
+
+## Section XIII - More Utilities
+
+Other execution targets you may find useful:
+
+
+* 'test-samples' - contains examples of how the Fortress API's work check out the following javadoc for more info on the samples package: Samples Javadoc
+* 'admin' - provides an XML-centric way to provision RBAC data policies and user accounts. check out the following javadoc for more info on this utility: Fortress Ant admin script utility document
+* 'encrypt' - interface to jacypt encryption utility
+* 'start-slapd' - Starts OpenLDAP on target machine.
+* 'stop-slapd' - Stops OpenLDAP on target machine.
+* display all ant targets available:
+
+<CENTER>
+ <IMG src="../../images/Screenshot27-ant-p.png" alt="Screenshot" width="766" height="628"/>
+</CENTER>
diff --git a/source/fortress/installation/windows/windows.md b/source/fortress/installation/windows/windows.md
new file mode 100644
index 0000000..d7da998
--- /dev/null
+++ b/source/fortress/installation/windows/windows.md
@@ -0,0 +1,33 @@
+---
+title: Quick start guide for Windows
+navUp: ../../user-guide.html
+navUpText: User Guide
+navNext: prerequisites.html
+navNextText: System Prerequisites
+---
+
+These instructions are intended for new users who want to quickly learn how to use Apache Fortress and OpenLDAP IAM software on Windows platform using [QUICKSTART package](https://directory.apache.org/fortress/download.html)
+
+Follow the steps and
+
+ OpenLDAP will be installed, configured, loaded, and ready to use by [Section IV](section-IV.html).
+ Commander Web Admin demo starts in [Section V](section-V.html)
+ EnMasse Policy Server demo starts in [Section XI](section-XI.html)
+
+### Table of contents
+
+* [System Prerequisites](prerequisites.html)
+* [Guidelines and Tips for first-time users](guidelines.html)
+* [Section I - Instructions to extract and configure Fortress Builder Package](section-I.html)
+* [Section II - Instructions to run the Fortress Ant Build](section-II.html)
+* [Section III - Instructions to run the Builder to Install OpenLDAP, configure and load with seed data](section-III.html)
+* [Section IV - Instructions to regression test Fortress and OpenLDAP](section-IV.html)
+* [Section V - Instructions to install Commander Web UI Demo](section-V.html)
+* [Section VI - Instructions to test Commander Web UI Demo](section-VI.html)
+* [Section VII - Instructions to connect to Commander Web Admin](section-VII.html)
+* [Section VIII - Instructions to run the Fortress Command Line Interpreter (CLI)](section-VIII.html)
+* [Section IX - Instructions to run Fortress Console (CLI)](section-IX.html)
+* [Section X - Instructions to generate and view Javadoc](section-X.html)
+* [Section XI - Instructions to install EnMasse Policy Server Demo](section-XI.html)
+* [Section XII - Instructions to regression test EnMasse Policy server](section-XII.html)
+* [Section XIII - More Utilities](section-XIII.html)
diff --git a/source/fortress/issues.md b/source/fortress/issues.md
new file mode 100644
index 0000000..f59e271
--- /dev/null
+++ b/source/fortress/issues.md
@@ -0,0 +1,14786 @@
+---
+title: Issues
+---
+
+# Issue tracking
+
+Our project uses [JIRA](https://issues.apache.org/jira/browse/FC/), a Java EE based issue tracking and project management application.
+
+![JIRA](../images/jira-space-logo.gif)
+
+Issues, bugs, and feature requests should be submitted to the following issue tracking system :
+
+
+| Directory Sub-Project | JIRA key | Link to issue tracking system |
+|:-:|:-:|---|
+| Fortress | FC | [http://issues.apache.org/jira/browse/FC](http://issues.apache.org/jira/browse/FC) |
+
+<!-- =========================================================================================================== -->
+<!-- FC-1 -->
+<!-- =========================================================================================================== -->
+<style type="text/css">
+.tableBorder, .grid
+{
+ background-color: #fff;
+ width: 100%;
+ border-collapse: collapse;
+}
+.tableBorder td, .grid td
+{
+ vertical-align: top;
+ padding: 2px;
+ border: 1px solid #ccc;
+}
+.noPadding
+{
+ padding: 0 !important;
+}
+h3 .subText
+{
+ font-size: 60%;
+ font-weight: normal;
+}
+.tabLabel
+{
+ font-weight: bold;
+ border: 1px solid #ccc;
+ border-bottom:none;
+ padding: 2px;
+ display: inline;
+}
+td.blank
+{
+ padding: 0;
+ margin: 0;
+}
+.blank td
+{
+ border: none;
+}
+#descriptionArea
+{
+ margin: 0;
+ padding: 2px;
+ border: 1px solid #ccc;
+}
+hr
+{
+ border-top:1px solid #aaa;
+}
+hr.fullcontent
+{
+ height: 15px;
+ padding: 10px 0;
+ background: #fff url('https://fortress.atlassian.net/images/icons/hr.gif') no-repeat scroll center;
+}
+</style>
+<br>
+<br>
+<table id="FC-1" class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3>[FC-1]delPermObjs causes LDAP 80 error
+ <span><font size="-2">Created: 23/Mar/13 Updated: 23/Mar/13 Due: 29/Mar/13</font></span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%">
+ <b>Type:</b>
+ </td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%">
+ <b>Resolution:</b>
+ </td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10000-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">4 hours</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">4 hours</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
+ <td colspan="3" bgcolor="#ffffff" valign="top"><p>Ubuntu-12.04.1-server-amd64</p></td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0"></table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>The following error occurs during regression test with REST enabled:</p>
+ junit 2013-03-22 22:24:44,671 (INFO ) DEL-OBJS TOB4<br>
+ junit 2013-03-22 22:24:44,907 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delPermObjs objectName TOB4_8 caught SecurityException rc=3005, msg=us.jts.fortress.rbac.PermDAO.deleteObj objectName TOB4_8 caught LDAPException=80 msg=entry delete failed<br>
+ junit us.jts.fortress.SecurityException: us.jts.fortress.rbac.PermDAO.deleteObj objectName TOB4_8 caught LDAPException=80 msg=entry delete failed<br>
+ junit at us.jts.fortress.rest.AdminMgrRestImpl.deletePermObj(AdminMgrRestImpl.java:913)<br>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.delPermObjs(AdminMgrImplTest.java:1765)<br>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.testDeletePermissionObj(AdminMgrImplTest.java:1740)<br>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
+ junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
+ junit at java.lang.reflect.Method.invoke(Method.java:601)<br>
+ junit at junit.framework.TestCase.runTest(TestCase.java:168)<br>
+ junit at junit.framework.TestCase.runBare(TestCase.java:134)<br>
+ junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br>
+ junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br>
+ junit at junit.framework.TestResult.run(TestResult.java:113)<br>
+ junit at junit.framework.TestCase.run(TestCase.java:124)<br>
+ junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br>
+ junit at junit.framework.TestSuite.run(TestSuite.java:238)<br>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br>
+ junit 2013-03-22 22:24:44,909 (INFO ) DEASGN-USRS TU1 TR1<br>
+ junit 2013-03-22 22:24:54,723 (INFO ) DEASGN-USRS TU4 TR2<br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table style="margin: 0;" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0">
+ Comment by Shawn McKinney [Administrator]
+ <font size="-2">
+ [<font color="#336699">23/Mar/13</font>]
+ </font>
+ </td>
+ </tr>
+ <tr id="comment-body-10000">
+ <td bgcolor="#ffffff">
+ <p>This exception occurs on Ubuntu 12.04 64 bit server and symas-openldap-silver.64_2.4.34-1_amd64.deb.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-2 -->
+<!-- =========================================================================================================== -->
+<table id="FC-2" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-2] <a href="https://fortress.atlassian.net/browse/FC-2">Error adding inheritance</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 21/Apr/13 Updated: 30/Apr/13 Due: 28/Apr/13 Resolved: 30/Apr/13
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC25</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC25</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10400-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">0 minutes</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 hours</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
+ <td colspan="3" bgcolor="#ffffff" valign="top"><p>ubuntu 32</p></td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>When adding inheritance relationships between roles, get this error. It appears to happen when a role is assigned to a user beforehand:</p>
+ <p> java <br>
+ java Enter child role name:<br>
+ csr<br>
+ java Enter parent role name:<br>
+ employee<br>
+ java 2013-04-21 17:28:59,889 (INFO ) us.jts.fortress.rbac.RoleUtil.loadGraph initializing ROLE context Client123<br>
+ java ConnectionPool (Sun Apr 21 17:28:59 CDT 2013) : adding a connection to pool...<br>
+ java 2013-04-21 17:28:59,980 (ERROR) us.jts.fortress.AdminMgrConsole.addRoleInheritance caught SecurityException rc=5003, msg=us.jts.fortress.rbac.RoleDAO.update name CSR caught LDAPException=20 msg=modify/add: roleOccupant: value #0 already exists<br>
+ java us.jts.fortress.UpdateException: us.jts.fortress.rbac.RoleDAO.update name CSR caught LDAPException=20 msg=modify/add: roleOccupant: value #0 already exists<br>
+ java at us.jts.fortress.rbac.RoleDAO.update(RoleDAO.java:193)<br>
+ java at us.jts.fortress.rbac.RoleP.update(RoleP.java:132)<br>
+ java at us.jts.fortress.rbac.AdminMgrImpl.addInheritance(AdminMgrImpl.java:1002)<br>
+ java at us.jts.fortress.AdminMgrConsole.addRoleInheritance(AdminMgrConsole.java:160)<br>
+ java at us.jts.fortress.ProcessMenuCommand.processAdminFunction(ProcessMenuCommand.java:418)<br>
+ java at us.jts.fortress.ProcessMenuCommand.processRbacControl(ProcessMenuCommand.java:73)<br>
+ java at us.jts.fortress.FortressConsole.main(FortressConsole.java:28)<br>
+ java at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
+ java at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
+ java at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
+ java at java.lang.reflect.Method.invoke(Method.java:601)<br>
+ java at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)<br>
+ java at java.lang.Thread.run(Thread.java:722)<br>
+ java Caused by: LDAPException(resultCode=20 (attribute or value exists), errorMessage='modify/add: roleOccupant: value #0 already exists')<br>
+ java at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br>
+ java at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br>
+ java at us.jts.fortress.ldap.DataProvider.modify(DataProvider.java:204)<br>
+ java at us.jts.fortress.rbac.RoleDAO.update(RoleDAO.java:187)<br>
+ java ... 12 more</p><br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" style="margin: 0;" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0">
+ Comment by Shawn McKinney [Administrator]
+ <font size="-2">[<font color="#336699">30/Apr/13</font>]</font>
+ </td>
+ </tr>
+ <tr>
+ <td bgcolor="#ffffff">
+ <p>Error fixed by adding parent role attribute and name only to entity before calling update.</p>
+ </td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0">
+ Comment by Shawn McKinney [Administrator]
+ <font size="-2">[<font color="#336699">30/Apr/13</font>]</font>
+ </td>
+ </tr>
+ <tr id="comment-body-10502">
+ <td bgcolor="#ffffff">
+ <p>method was calling update with all of the role attrs which caused failure due to adding role occupant that already existed.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-3 -->
+<!-- =========================================================================================================== -->
+<table if="FC-3" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-3] <a href="https://fortress.atlassian.net/browse/FC-3">Enhance Role Assignment Func</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 30/Apr/13 Updated: 30/Apr/13 Due: 10/May/13
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10600-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 days</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">2 days</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Environment:</b></td>
+ <td colspan="3" bgcolor="#ffffff" valign="top"><p>Linux Dev</p></td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td><p>Measure/repair role assignment funcs to optimize for role occupants.</p><br></td>
+ </tr>
+ </tbody>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-4 -->
+<!-- =========================================================================================================== -->
+<table id="FC-4" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-3] <a href="https://fortress.atlassian.net/browse/FC-3">Enhance Role Assignment Func</a>
+ <span class="subText">Created: 30/Apr/13 Updated: 30/Apr/13 Due: 10/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10600-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">2 days</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">2 days</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>Linux Dev</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Measure/repair role assignment funcs to optimize for role occupants.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-5 -->
+<!-- =========================================================================================================== -->
+<table id="FC-5" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-4] <a href="https://fortress.atlassian.net/browse/FC-4">Add ApacheDS support</a>
+ <span class="subText">Created: 04/May/13 Updated: 03/Jun/13 Due: 05/May/13 Resolved: 05/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC25</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC25</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10601-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all linux and windows platforms</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Support apacheds</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10507">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">05/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10507">
+ <td bgcolor="#ffffff">
+ <p>Regression tests running successfully</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-6 -->
+<!-- =========================================================================================================== -->
+<table id="FC-6" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-5] <a href="https://fortress.atlassian.net/browse/FC-5">Test case DEL-RLS ROLES_TR5_HIER fails on delete with ApacheDS</a>
+ <span class="subText">Created: 04/May/13 Updated: 05/May/13 Due: 31/May/13 Resolved: 05/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10602-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all linux</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
+ <td bgcolor="#ffffff" valign="top">
+ <img src="https://fortress.atlassian.net/images/icons/attach/image.gif" height="16" width="16" alt="PNG File" />
+ Screenshot20130504.png
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>test case fails:</p>
+ <p>deleteRoles("DEL-RLS ROLES_TR5_HIER", RoleTestData.ROLES_TR5_HIER);</p>
+ <p>role oamT5ROLE2 has oamT5Role1 as child and fails on delete. The previous test run removed oamT5Role1 so this error condition should not happen.</p>
+ <p>Need to figure out why this happens on ApacheDS and not OpenLDAP.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10505">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">04/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10505">
+ <td bgcolor="#ffffff">
+ <p>Debug screenshot. ApacheDS has oamT5ROLE1 as child.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10506">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">04/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10506">
+ <td bgcolor="#ffffff">
+ <p>fix problems with removing inheritance relationships from roles:</p>
+ <p>a. when deleteRole is called, remove all parents.<br/>
+ b. when deleteInheritance is called, check for condition of empty parent roles in which case remove the parent role attribute altogether.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10508">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">05/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10508">
+ <td bgcolor="#ffffff">
+ <p>fixed</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-7 -->
+<!-- =========================================================================================================== -->
+<table id="FC-7" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-7] <a href="https://fortress.atlassian.net/browse/FC-7">Add SSD Constraint check to updateRole</a>
+ <span class="subText">Created: 04/May/13 Updated: 05/Oct/13 Due: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10604-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The updateRole function may modify parent attribute on role entity. This has the opportunity to circumvent role SSD policy constraint. Perform SSD constraint checks if addition role parent is added.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-8 -->
+<!-- =========================================================================================================== -->
+<table id="FC-8" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-8] <a href="https://fortress.atlassian.net/browse/FC-8">CreateSession error on ApacheDS and Ubuntu 32</a>
+ <span class="subText">Created: 05/May/13 Updated: 05/May/13 Due: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10605-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>ubuntu 32 VM</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>During test-full target (with teardown) on apacheds receive this error:</p>
+ <p> junit Testcase: testCreateSession took 0.019 sec<br/>
+ junit FAILED<br/>
+ junit us.jts.fortress.rbac.UserDAO.checkPassword userId <a href="https://fortress.atlassian.net/wiki/display/FC/jtsUser2">jtsUser2</a> caught LDAPException=53 msg=ERR_732 Cannot process a Request while binding<br/>
+ junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.UserDAO.checkPassword userId <a href="https://fortress.atlassian.net/wiki/display/FC/jtsUser2">jtsUser2</a> caught LDAPException=53 msg=ERR_732 Cannot process a Request while binding<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessions(AccessMgrImplTest.java:331)<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.testCreateSession(AccessMgrImplTest.java:281)<br/>
+ junit </p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-9 -->
+<!-- =========================================================================================================== -->
+<table id="FC-9" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-9] <a href="https://fortress.atlassian.net/browse/FC-9">Encode all model data</a>
+ <span class="subText">Created: 17/May/13 Updated: 05/Oct/13 Due: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>ALL inbound data must be encoded safe text before persisted.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-10 -->
+<!-- =========================================================================================================== -->
+<table id="FC-10" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-10] <a href="https://fortress.atlassian.net/browse/FC-10">UserDAO throws npe when password is null</a>
+ <span class="subText">Created: 18/May/13 Updated: 18/May/13 Due: 20/May/13 Resolved: 18/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10701-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">0 minutes</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
+ <td bgcolor="#ffffff" valign="top">
+ <img src="https://fortress.atlassian.net/images/icons/attach/image.gif" height="16" width="16" alt="PNG File" />
+ UserDAO-PW-NPE-20130517.png
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The UserDAO createUser and updateUpdate user methods throw npe when user entity contains a null value in password field. </p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10600">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">18/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10600">
+ <td bgcolor="#ffffff">
+ <p>fix npe for null password</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-11 -->
+<!-- =========================================================================================================== -->
+<table id="FC-11" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-11] <a href="https://fortress.atlassian.net/browse/FC-11">Builder change to pull source from maven</a>
+ <span class="subText">Created: 19/May/13 Updated: 28/Feb/14 Resolved: 28/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Closed</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Won't Fix</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10800-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 day</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 day</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Change quickstart package's 'builder' target to pull fortress source from maven. Do not include source in quickstart archive.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-12 -->
+<!-- =========================================================================================================== -->
+<table id="FC-12" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-12] <a href="https://fortress.atlassian.net/browse/FC-12">isTemporalSet does not detect changes to entity constraint values</a>
+ <span class="subText">Created: 26/May/13 Updated: 26/May/13 Due: 31/May/13 Resolved: 26/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>fix this method to detect when any of the constraint attributes changes. Currently it will only trigger if all of the attributes are not null.</p>
+ <p> public boolean isTemporalSet()</p>
+ {
+ return (beginTime != null && endTime != null && beginDate != null && endDate != null && beginLockDate != null && endLockDate != null && dayMask != null);
+ }
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10700">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">26/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10700">
+ <td bgcolor="#ffffff">
+ <p>Changed the && to ||</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-13 -->
+<!-- =========================================================================================================== -->
+<table id="FC-13" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-13] <a href="https://fortress.atlassian.net/browse/FC-13">ReviewMgr.findUsers does not pull back pw policy subentry</a>
+ <span class="subText">Created: 28/May/13 Updated: 28/May/13 Due: 29/May/13 Resolved: 28/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10901-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">1 hour</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add OPENLDAP_POLICY_SUBENTRY to the result set for user search</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10701">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10701">
+ <td bgcolor="#ffffff">
+ <p>added attribute to search</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-14 -->
+<!-- =========================================================================================================== -->
+<table id="FC-14" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-14] <a href="https://fortress.atlassian.net/browse/FC-14">Add bldg, dept and room attrs to user entity</a>
+ <span class="subText">Created: 28/May/13 Updated: 03/Jun/13 Due: 31/May/13 Resolved: 03/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10902-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">4 hours</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">4 hours</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add inetorgperson attributes bldg, dept and room to user</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10711">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10711">
+ <td bgcolor="#ffffff">
+ <p>done</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-15 -->
+<!-- =========================================================================================================== -->
+<table id="FC-15" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-15] <a href="https://fortress.atlassian.net/browse/FC-15">Fortress UserDAO.createUser adds openldap policy flag when server type = apache ds</a>
+ <span class="subText">Created: 29/May/13 Updated: 29/May/13 Due: 30/May/13 Resolved: 29/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10903-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>final User create(User entity)<br/>
+ {<br/>
+ add flag here:<br/>
+ if (VUtil.isNotNullOrEmpty(entity.getPwPolicy()))</p>
+ {
+ String dn = GlobalIds.POLICY_NODE_TYPE + "=" + entity.getPwPolicy() + "," + getRootDn(entity.getContextId(), GlobalIds.PPOLICY_ROOT);
+ attrs.add(createAttribute(OPENLDAP_POLICY_SUBENTRY, dn));
+ }
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10702">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">29/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10702">
+ <td bgcolor="#ffffff">
+ <p>added hooks to prevent pulling OL attributes when server.type = apacheds</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-16 -->
+<!-- =========================================================================================================== -->
+<table id="FC-16" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-16] <a href="https://fortress.atlassian.net/browse/FC-16">MDB Error during deletion</a>
+ <span class="subText">Created: 29/May/13 Updated: 03/Jun/13 Due: 07/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10904-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>ubuntu32</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width=20% valign=top><b>Attachments:</b></td>
+ <td bgcolor="#ffffff" valign="top">
+ <img src="https://fortress.atlassian.net/images/icons/attach/text.gif" height="16" width="16" alt="Text File" />
+ konsole-output-mdb-delete-error-20130529.txt
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>During deletion to fortress permission object:<br/>
+ ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us</p>
+ <p>PermDAO.delete</p>
+ <p>This error in debug level slapd.logs, excerpt below, full log attached:</p>
+ <p>51a66b8d => index_entry_del( 911, "ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us" )</p>
+ <p>51a66b8d mdb_idl_delete_keys: 38f 00000000<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 0096defd<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 3d1dea68<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 76324484<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 29c95ac5<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 0e1b3d46<br/>
+ 51a66b8d mdb_idl_delete_keys: 38f 1ccd25c5<br/>
+ 51a66b8d <= index_entry_del( 911, "ftObjNm=TOB4_8,ou=Permissions,ou=RBAC,dc=jts,dc=us" ) success<br/>
+ 51a66b8d <=- mdb_delete: id2entry failed: MDB_PAGE_FULL: Internal error - page has no more space (-30786)<br/>
+ 51a66b8d send_ldap_result: conn=1000 op=3820 p=3<br/>
+ 51a66b8d send_ldap_result: err=80 matched="" text="entry delete failed"<br/>
+ 51a66b8d slap_queue_csn: queing 0x3bb8e308 20130529205645.303808Z#000000#000#000000<br/>
+ 51a66b8d ==> mdb_add: reqStart=20130529205645.000000Z,cn=log<br/>
+ 51a66b8d oc_check_required entry (reqStart=20130529205645.000000Z,cn=log), objectClass "auditDelete"<br/>
+ 51a66b8d oc_check_allowed type "objectClass"<br/>
+ 51a66b8d oc_check_allowed type "structuralObjectClass"<br/>
+ 51a66b8d oc_check_allowed type "reqStart"<br/>
+ 51a66b8d oc_check_allowed type "reqEnd"<br/>
+ 51a66b8d oc_check_allowed type "reqType"<br/>
+ 51a66b8d oc_check_allowed type "reqSession"<br/>
+ 51a66b8d oc_check_allowed type "reqAuthzID"<br/>
+ 51a66b8d oc_check_allowed type "reqDN"<br/>
+ 51a66b8d oc_check_allowed type "reqMessage"<br/>
+ 51a66b8d oc_check_allowed type "reqResult"<br/>
+ 51a66b8d oc_check_allowed type "reqEntryUUID"<br/>
+ 51a66b8d mdb_dn2entry("reqStart=20130529205645Z,cn=log")<br/>
+ 51a66b8d => mdb_dn2id("reqStart=20130529205645Z,cn=log")<br/>
+ 51a66b8d <= mdb_dn2id: get failed: MDB_NOTFOUND: No matching key/data pair found (-30798)<br/>
+ 51a66b8d => mdb_entry_decode:<br/>
+ 51a66b8d <= mdb_entry_decode<br/>
+ 51a66b8d => access_allowed: add access to "cn=log" "children" requested<br/>
+ 51a66b8d <= root access granted<br/>
+ 51a66b8d => access_allowed: add access granted by manage(=mwrscxd)<br/>
+ 51a66b8d => access_allowed: add access to "reqStart=20130529205645.000000Z,cn=log" "entry" requested<br/>
+ 51a66b8d <= root access granted<br/>
+ 51a66b8d => access_allowed: add access granted by manage(=mwrscxd)<br/>
+ 51a66b8d => mdb_dn2id_add 0x4eba: "reqStart=20130529205645Z,cn=log"<br/>
+ 51a66b8d <= mdb_dn2id_add 0x4eba: 0<br/>
+ 51a66b8d => index_entry_add( 20154, "reqStart=20130529205645.000000Z,cn=log" )<br/>
+ 51a66b8d mdb_idl_insert_keys: 4eba b5c866dc<br/>
+ 51a66b8d mdb_idl_insert_keys: 4eba <br/>
+ 51a66b8d mdb_idl_insert_keys: 4eba 86ee7ec7<br/>
+ 51a66b8d mdb_idl_insert_keys: 4eba 7990d2ba<br/>
+ 51a66b8d <= index_entry_add( 20154, "reqStart=20130529205645.000000Z,cn=log" ) success<br/>
+ 51a66b8d => mdb_entry_encode(0x00004eba): reqStart=20130529205645.000000Z,cn=log<br/>
+ 51a66b8d <= mdb_entry_encode(0x00004eba): reqStart=20130529205645.000000Z,cn=log<br/>
+ 51a66b8d mdb_add: added id=00004eba dn="reqStart=20130529205645.000000Z,cn=log"<br/>
+ 51a66b8d send_ldap_result: conn=1000 op=3820 p=3<br/>
+ 51a66b8d send_ldap_result: err=0 matched="" text=""<br/>
+ 51a66b8d slap_graduate_commit_csn: removing 0x89e6d50 20130529205645.303808Z#000000#000#000000<br/>
+ 51a66b8d send_ldap_response: msgid=3821 tag=107 err=80<br/>
+ ber_flush2: 34 bytes to sd 14<br/>
+ 0000: 30 20 02 02 0e ed 6b 1a 0a 01 50 04 00 04 13 65 0 ....k...P....e <br/>
+ 0010: 6e 74 72 79 20 64 65 6c 65 74 65 20 66 61 69 6c ntry delete fail <br/>
+ 0020: 65 64 ed <br/>
+ ldap_write: want=34, written=34<br/>
+ 0000: 30 20 02 02 0e ed 6b 1a 0a 01 50 04 00 04 13 65 0 ....k...P....e <br/>
+ 0010: 6e 74 72 79 20 64 65 6c 65 74 65 20 66 61 69 6c ntry delete fail <br/>
+ 0020: 65 64 ed <br/>
+ 51a66b8d conn=1000 op=3820 RESULT tag=107 err=80 text=entry delete failed<br/>
+ 51a66b8d slap_graduate_commit_csn: removing 0x8a07120 20130529205645.303808Z#000000#000#000000<br/>
+ 51a66c46 daemon: epoll: listen=7 active_threads=0 tvp=zero</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-17 -->
+<!-- =========================================================================================================== -->
+<table id="FC-17" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-17] <a href="https://fortress.atlassian.net/browse/FC-17">Delete descendant role error</a>
+ <span class="subText">Created: 29/May/13 Updated: 03/Jun/13 Due: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10905-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>ubuntu 32 - symas-openldap-silver.32_2.4.35-2_i386.deb</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p> junit 2013-05-29 17:51:18,449 (INFO ) DEL-RLS-TR6-DESC<br/>
+ junit 2013-05-29 17:51:18,480 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delRoleDescendant caught SecurityException rc=5004, msg=us.jts.fortress.rbac.RoleDAO.remove role name=oamT6C4B2A1 LDAPException=32 msg=no such object<br/>
+ junit us.jts.fortress.RemoveException: us.jts.fortress.rbac.RoleDAO.remove role name=oamT6C4B2A1 LDAPException=32 msg=no such object<br/>
+ junit at us.jts.fortress.rbac.RoleDAO.remove(RoleDAO.java:316)<br/>
+ junit at us.jts.fortress.rbac.RoleP.delete(RoleP.java:246)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImpl.deleteRole(AdminMgrImpl.java:434)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.delRoleDescendant(AdminMgrImplTest.java:670)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.testDelRoleDescendant(AdminMgrImplTest.java:603)<br/>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
+ junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
+ junit at java.lang.reflect.Method.invoke(Method.java:601)<br/>
+ junit at junit.framework.TestCase.runTest(TestCase.java:168)<br/>
+ junit at junit.framework.TestCase.runBare(TestCase.java:134)<br/>
+ junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br/>
+ junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br/>
+ junit at junit.framework.TestResult.run(TestResult.java:113)<br/>
+ junit at junit.framework.TestCase.run(TestCase.java:124)<br/>
+ junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br/>
+ junit at junit.framework.TestSuite.run(TestSuite.java:238)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br/>
+ junit Caused by: LDAPException(resultCode=32 (no such object), errorMessage='no such object', matchedDN='ou=Roles,ou=RBAC,dc=jts,dc=us')<br/>
+ junit at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br/>
+ junit at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br/>
+ junit at us.jts.fortress.ldap.DataProvider.modify(DataProvider.java:188)<br/>
+ junit at us.jts.fortress.ldap.DataProvider.delete(DataProvider.java:235)<br/>
+ junit at us.jts.fortress.rbac.RoleDAO.remove(RoleDAO.java:311)<br/>
+ junit ... 19 more<br/>
+ junit 2013-05-29 17:51:18,483 (INFO ) DEL-RLS-TR6-ASC<br/>
+ junit 2013-05-29 17:51:18,487 (ERROR) us.jts.fortress.rbac.AdminMgrImplTest.delRoleAscendant caught SecurityException rc=5060, msg=us.jts.fortress.rbac.HierUtil.validateRelationship child oamT7D2C1B1A1 does not have parent oamT7C2B1A1<br/>
+ junit us.jts.fortress.ValidationException: us.jts.fortress.rbac.HierUtil.validateRelationship child oamT7D2C1B1A1 does not have parent oamT7C2B1A1<br/>
+ junit at us.jts.fortress.rbac.HierUtil.validateRelationship(HierUtil.java:127)<br/>
+ junit at us.jts.fortress.rbac.RoleUtil.validateRelationship(RoleUtil.java:245)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImpl.deleteInheritance(AdminMgrImpl.java:1046)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.delRoleAscendant(AdminMgrImplTest.java:764)<br/>
+ junit at us.jts.fortress.rbac.AdminMgrImplTest.testDelRoleAscendant(AdminMgrImplTest.java:741)<br/>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
+ junit at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
+ junit at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
+ junit at java.lang.reflect.Method.invoke(Method.java:601)<br/>
+ junit at junit.framework.TestCase.runTest(TestCase.java:168)<br/>
+ junit at junit.framework.TestCase.runBare(TestCase.java:134)<br/>
+ junit at junit.framework.TestResult$1.protect(TestResult.java:110)<br/>
+ junit at junit.framework.TestResult.runProtected(TestResult.java:128)<br/>
+ junit at junit.framework.TestResult.run(TestResult.java:113)<br/>
+ junit at junit.framework.TestCase.run(TestCase.java:124)<br/>
+ junit at junit.framework.TestSuite.runTest(TestSuite.java:243)<br/>
+ junit at junit.framework.TestSuite.run(TestSuite.java:238)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)<br/>
+ junit at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)<br/>
+ junit 2013-05-29 17:51:18,487 (INFO ) DEL-RLS TR1<br/>
+ junit 2013-05-29 17:51:18,502 (INFO ) DEL-RLS TR2<br/>
+ junit 2013-05-29 17:51:18,516 (INFO ) DEL-RLS TR3<br/>
+ junit 2013-05-29 17:51:18,771 (INFO ) DEL-RLS TR4<br/>
+ junit 2013-05-29 17:51:18,799 (INFO ) DEL-RLS ROLES_TR5_HIER<br/>
+ junit 2013-05-29 17:51:18,818 (INFO ) DEL-RLS ROLES_TR5B<br/>
+ junit 2013-05-29 17:51:18,852 (INFO ) DEL-RLS ROLES_TR8_SSD<br/>
+ junit 2013-05-29 17:51:18,919 (INFO ) DEL-RLS ROLES_TR9_SSD<br/>
+ ^Csmckinn@smckinnlt-lr02:~/GIT/fortressDev/openldap-fortress-core$ sudo ./build.sh init-slapd<br/>
+ Buildfile: /home/smckinn/GIT/fortressDev/openldap-fortress-core/build.xml</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-18 -->
+<!-- =========================================================================================================== -->
+<table id="FC-18" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-18] <a href="https://fortress.atlassian.net/browse/FC-18">DAO Updates enhancement</a>
+ <span class="subText">Created: 30/May/13 Updated: 17/Jun/13 Due: 30/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10906-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>09:15:48 AM emmanuel lecharny: I may have a few q regarding the update methods<br/>
+ 09:16:08 AM emmanuel lecharny: it seems that you remove an Attribute before adding some new values<br/>
+ 09:18:43 AM emmanuel lecharny: something like :<br/>
+ 09:18:44 AM emmanuel lecharny: LDAPModification(type=replace, attr=ftRoles, values={}), <br/>
+ LDAPModification(type=add, attr=ftRoles, values=</p>
+ {'oamT10SSDR1'})]<br/>
+ <br/>
+ 09:19:16 AM emmanuel lecharny: which results in two modification bing done on the entry, instead of one<br/>
+ 09:19:22 AM emmanuel lecharny: not a big deal though<br/>
+ 09:19:47 AM emmanuel lecharny: I assume that all the ftRoles get removed first, then you inject one new one<br/>
+ 09:20:06 AM * emmanuel lecharny out for 5 mins<br/>
+ 09:33:24 AM smckinney: so you are saying two roundtrips for those operations?<br/>
+ 09:34:22 AM smckinney: the intent is yes to replace the old with the new<br/>
+ 09:40:49 AM emmanuel lecharny: smckinney: no, this will be done in one single rountrip. This is why t's not a big deal<br/>
+ 09:41:00 AM smckinney: yes that was my assumption as well<br/>
+ 09:41:16 AM smckinney: but having your eyes in there will be good<br/>
+ 09:42:23 AM smckinney: how would you have done this?<br/>
+ 09:44:55 AM emmanuel lecharny: a replace with thevalues will blank the existing data, and inject the added values<br/>
+ 09:45:10 AM emmanuel lecharny: so no eed to do LDAPModification(type=replace, attr=ftRoles, values={}), <br/>
+ <br/>
+ 09:45:39 AM emmanuel lecharny: doing LDAPModification(type=replace, attr=ftRoles, values={'oamT10SSDR1'}
+ <p>)] should be enough</p>
+ <p>09:46:27 AM smckinney: yes agreed. wondering why I did not do that to begin with... <br/>
+ 09:47:28 AM smckinney: will create an issue to take another look at it.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-19 -->
+<!-- =========================================================================================================== -->
+<table id="FC-19" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-19] <a href="https://fortress.atlassian.net/browse/FC-19">Add toString() methods for the base objects (Role, Permissions...)</a>
+ <span class="subText">Created: 30/May/13 Updated: 03/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10907-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>It would be very comfy to have toString() methods added to the base classes, especially for debugging and logging purpose.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-20 -->
+<!-- =========================================================================================================== -->
+<table id="FC-20" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-20] <a href="https://fortress.atlassian.net/browse/FC-20">Add cache name to ehcache config</a>
+ <span class="subText">Created: 30/May/13 Updated: 31/May/13 Due: 28/Jun/13 Resolved: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10908-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add name to ehcache as Emmanuel specifies via the fortress list server:</p>
+ <p>yesterday, I spent a couple of hours trying to understand why I get a<br/>
+ failure in the tests. I finally found the pb : the EhCache CacheManager<br/>
+ is initialized using a factory, and the configuration file does not have<br/>
+ a name, which leads the cache to be a singleton. If you are embedding<br/>
+ fortress into another application using EhCache, or if Fortress embed an<br/>
+ application using EhCache, it's very likely that you face some issue if<br/>
+ this cache is also a singleton.</p>
+ <p>Bottom line, I added a name="fortress" in the ehcache.xml file, and this<br/>
+ solved my pb :</p>
+ <p><?xml version="1.0" encoding="UTF-8"?></p>
+ <p><!--<br/>
+ Fortress CacheManager Configuration<br/>
+ ==========================<br/>
+ This ehcache.xml corresponds to a single CacheManager.<br/>
+ --><br/>
+ <ehcache name="fortress"<br/>
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10703">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10703">
+ <td bgcolor="#ffffff">
+ <p>changed ehcache.xml's header to include the name fortress:</p>
+ <p><ehcache name="fortress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-21 -->
+<!-- =========================================================================================================== -->
+<table id="FC-21" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-21] <a href="https://fortress.atlassian.net/browse/FC-21">Alter DAO LDAP connection managment</a>
+ <span class="subText">Created: 30/May/13 Updated: 31/May/13 Due: 31/May/13 Resolved: 31/May/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10909-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Another from Emmanuel:</p>
+ <p>><br/>
+ > On 05/25/2013 04:24 PM, Emmanuel Lecharny wrote:<br/>
+ >> 2) It would be better to get the connection immediately before using it,<br/>
+ >> and to release it as soon as you are done with it. For instance, the<br/>
+ >> connection could be get just before calling the dataProvider and<br/>
+ >> released just after. Not really a huge improvment, but assuming that<br/>
+ >> you may have thousands of requests per second, this may become an<br/>
+ >> issue.<br/>
+ >><br/>
+ ><br/>
+ > The current pattern followed in the Fortress DAO's is as follows:<br/>
+ ><br/>
+ > // inside any DAO method:<br/>
+ > try<br/>
+ > </p>
+ {
+ > 1. getAdminConnection();
+ > 2. build up the ldap attribute set or search filter
+ > 3. perform the ldap operation
+ > }
+ <p>> catch (LDAPException e)<br/>
+ > </p>
+ {
+ > // perform error handling
+ > }
+ <p>> finally<br/>
+ > </p>
+ {
+ > 4. closeAdminConnection(ld);
+ > }
+ <p>><br/>
+ > This change you are suggesting is to delay opening the connection<br/>
+ > until the beginning of step 3?<br/>
+ Yes. Basically :</p>
+ <p>try<br/>
+ {<br/>
+ 1. build up the ldap attribute set or search filter<br/>
+ 2. getAdminConnection();<br/>
+ 3. perform the ldap operation</p>
+ <p>Now, it's questionable if the connection should be grab in (2) instead<br/>
+ in the method that performs the operation. The only rationnal I see is<br/>
+ for a non-admin connection to be used, but this is not the case in teh<br/>
+ DAO, AFAICS.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10704">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10704">
+ <td bgcolor="#ffffff">
+ <p>Moved getting connections from the pools until just before the call to DAO base util apis. In other words, moved it until when it was needed.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-22 -->
+<!-- =========================================================================================================== -->
+<table id="FC-22" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-22] <a href="https://fortress.atlassian.net/browse/FC-22">We should be able to clear the cache through the API</a>
+ <span class="subText">Created: 31/May/13 Updated: 20/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10910-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>There are some cases where we would like to clear all or one single cache. For instance, when running atomic tests, teh cache should be cleared <b>before</b> the test, or after the test.</p>
+ <p>Currently, this is not possible.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10705">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10705">
+ <td bgcolor="#ffffff">
+ <p>I suggest to add :</p>
+ <p> /**</p>
+ <ul>
+ <li>Clear all the caches<br/>
+ */<br/>
+ public void clearAll()
+ {
+ m_ehCacheImpl.clearAll();
+ }</li>
+ </ul>
+ <p>in the CacheMgr class. That does the trick, and it does not expose the underlying EhCache instance.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10706">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">31/May/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10706">
+ <td bgcolor="#ffffff">
+ <p>OK that is fine we can do it. But this property needs to be changed to true inside fortress.properties:</p>
+ <ol>
+ <li>If for any reason echcache must be DISABLED for DSD, make sure this parameter is set to 'true' which is the default. Otherwise performance penalty will be incurred during multi-role activations.<br/>
+ disable.dsd.cache=false</li>
+ </ol>
+ <p>As part of the code change we will all this setting to be made through the build.properties.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-11309">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11309">
+ <td bgcolor="#ffffff">
+ <p>resolved</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-23 -->
+<!-- =========================================================================================================== -->
+<table id="FC-23" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-23] <a href="https://fortress.atlassian.net/browse/FC-23">Constraint not correctly processing delimiters</a>
+ <span class="subText">Created: 03/Jun/13 Updated: 03/Jun/13 Due: 04/Jun/13 Resolved: 03/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10913-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The CUtil.setConstraint utility is not correctly processing the multi attribute string input. Modify string parsing to allow for empty subattributes within constraint data struct.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10708">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10708">
+ <td bgcolor="#ffffff">
+ <p>changed call to tokenizer to return delimiters as tokens:</p>
+ <p>StringTokenizer tkn = new StringTokenizer(inputString, GlobalIds.DELIMITER, true);</p>
+ <p>which enables the correct placement to be maintained - even with empty constraint sub attrs.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-24 -->
+<!-- =========================================================================================================== -->
+<table id="FC-24" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-24] <a href="https://fortress.atlassian.net/browse/FC-24">Strip name from pw policy DN for User inquiry</a>
+ <span class="subText">Created: 03/Jun/13 Updated: 03/Jun/13 Due: 04/Jun/13 Resolved: 03/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10914-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>the pw policy subentry is stored in ldap as a DN. This creates problems with the client on inquiries. Strip the rDn from the dn and set that value in pwpolicy attribute on user entity during retrieval.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10710">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">03/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10710">
+ <td bgcolor="#ffffff">
+ <p>strip rDN from policy DN before loading into entity and returning to caller.</p>
+ <p> String szPolicy = getAttribute(le, OPENLDAP_POLICY_SUBENTRY);<br/>
+ if(VUtil.isNotNullOrEmpty(szPolicy))</p>
+ {
+ entity.setPwPolicy(getRdn(szPolicy));
+ }
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-25 -->
+<!-- =========================================================================================================== -->
+<table id="FC-25" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-25] <a href="https://fortress.atlassian.net/browse/FC-25">Remove role assignment from UserDAO add and update</a>
+ <span class="subText">Created: 04/Jun/13 Updated: 17/Jun/13 Due: 05/Jun/13 Resolved: 17/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10915-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Fortress role assignments effect both user and role entities. The UserDAO only changes user entity and does not update role. This leaves role assignment in inconsistent state. Remove capability to assign roles from add/update user and only allow in assignuser.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-26 -->
+<!-- =========================================================================================================== -->
+<table id="FC-26" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-26] <a href="https://fortress.atlassian.net/browse/FC-26">Cleanup test data</a>
+ <span class="subText">Created: 05/Jun/13 Updated: 17/Jun/13 Due: 05/Jun/13 Resolved: 17/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10917-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>cleanup test data</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-27 -->
+<!-- =========================================================================================================== -->
+<table id="FC-27" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-27] <a href="https://fortress.atlassian.net/browse/FC-27">Rename constant for user policy violation</a>
+ <span class="subText">Created: 06/Jun/13 Updated: 17/Jun/13 Due: 06/Jun/13 Resolved: 17/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10918-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>rename constant for user system policy violation.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-28 -->
+<!-- =========================================================================================================== -->
+<table id="FC-28" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-28] <a href="https://fortress.atlassian.net/browse/FC-28">ReviewMgr - Add search SDSets by name</a>
+ <span class="subText">Created: 13/Jun/13 Updated: 17/Jun/13 Resolved: 17/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-10946-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Commander need ability to search SDSets by name.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-29 -->
+<!-- =========================================================================================================== -->
+<table id="FC-29" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-29] <a href="https://fortress.atlassian.net/browse/FC-29">Add jpeg photo to User</a>
+ <span class="subText">Created: 17/Jun/13 Updated: 17/Jun/13 Resolved: 17/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add jpeg photo to userdao</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-30 -->
+<!-- =========================================================================================================== -->
+<table id="FC-30" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-30] <a href="https://fortress.atlassian.net/browse/FC-30">AdminMgr Update S/DSD method</a>
+ <span class="subText">Created: 25/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11004-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/EN-3"><strike>EN-3</strike></a></td>
+ <td>AdminMgr Update S/DSD method</td>
+ <td>Resolved</td>
+ </tr>
+</table>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>needed for commander</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-31 -->
+<!-- =========================================================================================================== -->
+<table id="FC-31" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-31] <a href="https://fortress.atlassian.net/browse/FC-31">Add ApacheDS regression tests</a>
+ <span class="subText">Created: 26/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11005-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add Apache DS regression junit test suite</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-32 -->
+<!-- =========================================================================================================== -->
+<table id="FC-32" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-32] <a href="https://fortress.atlassian.net/browse/FC-32">Bump up heap space on fortress junit tests</a>
+ <span class="subText">Created: 27/Jun/13 Updated: 28/Jun/13 Resolved: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11006-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>bump up heap allocation to 1024M</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-33 -->
+<!-- =========================================================================================================== -->
+<table id="FC-33" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-33] <a href="https://fortress.atlassian.net/browse/FC-33">Add JMX counters to Fortress DAO calls</a>
+ <span class="subText">Created: 27/Jun/13 Updated: 28/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11007-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add counter to lower level fortress dao utils to measure the numbers of the various ldap ops - add, mod, delete, search, etc</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-34 -->
+<!-- =========================================================================================================== -->
+<table id="FC-34" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-34] <a href="https://fortress.atlassian.net/browse/FC-34">Replace the use of Log4j by SLF4j</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 30/Jun/13 Resolved: 30/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11009-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The idea is to abstract the lib from the logger used by the application that embeds Fortress.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10801">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">28/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10801">
+ <td bgcolor="#ffffff">
+ <p>There are a few steps to migrate the logger usage :</p>
+ <ul class="alternate" type="square">
+ <li>first of all, add the dependencies on the SLFJ jars in build.xml/pom.xml</li>
+ <li>Replace the folowing line :<br/>
+ private static final Logger log = Logger.getLogger(CLS_NM);<br/>
+ by<br/>
+ private static final Logger LOG = LoggerFactory.getLogger( CLS_NM );</li>
+ </ul>
+ <p>(note that as its a static final field, it's uppercase)</p>
+ <ul class="alternate" type="square">
+ <li>Add the following imports, in place of the Log4j imports :<br/>
+ import org.slf4j.Logger;<br/>
+ import org.slf4j.LoggerFactory;</li>
+ </ul>
+ <ul class="alternate" type="square">
+ <li>At this point, this is pretty much done. One more step though : remove the CLS_NM constant, when it's not useful. That also means it has to be removed from the LOG.blah() calls.</li>
+ </ul>
+ <ul class="alternate" type="square">
+ <li>Use the new syntax :<br/>
+ LOG.debug( "this is a log : {}", the Log ); </li>
+ </ul>
+ </td>
+ </tr>
+ <tr id="comment-header-10802">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10802">
+ <td bgcolor="#ffffff">
+ <p>Removed log4j as compile dependency. Removed CLS_NM constant from log statements.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10804">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">30/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10804">
+ <td bgcolor="#ffffff">
+ <p>Closing issue, still need to go with new log syntax.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-35 -->
+<!-- =========================================================================================================== -->
+<table id="FC-35" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-35] <a href="https://fortress.atlassian.net/browse/FC-35">Add toString() methods to classes containing data structures</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Aug/13 Resolved: 04/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC26</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Duplicate</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11010-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>It's convenient when debugging to have the classes to implement toString()</p>
+<br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10803">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">29/Jun/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10803">
+ <td bgcolor="#ffffff">
+ <p>The following classes have to be modified :</p>
+ <ul class="alternate" type="square">
+ <li>rbac.Address</li>
+ <li>rbac.AdminRole</li>
+ <li>rbac.AdminRoleRelationship</li>
+ <li>rbac.Bind</li>
+ <li>rbac.Context</li>
+ <li>rbac.Hier</li>
+ <li>rbac.Mod</li>
+ <li>rbac.OrgUnit</li>
+ <li>rbac.OrgUnitRelationship</li>
+ <li>rbac.PermGrant</li>
+ <li>rbac.Permission</li>
+ <li>rbac.PermObj</li>
+ <li>rbac.Props</li>
+ <li>rbac.PwPolicy</li>
+ <li>rbac.Relationship</li>
+ <li>rbac.Role</li>
+ <li>rbac.RolePerm</li>
+ <li>rbac.RoleRelationship</li>
+ <li>rbac.SDSet</li>
+ <li>rbac.Session</li>
+ <li>rbac.User</li>
+ <li>rbac.UserAdminRole</li>
+ <li>rbac.UserAudit</li>
+ <li>rbac.UserRole</li>
+ </ul>
+ </td>
+ </tr>
+ <tr id="comment-header-10901">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">02/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10901">
+ <td bgcolor="#ffffff">
+ <p>The User class already has a toString() method which simply returns the User's userId field.</p>
+ <p>Is it intended, or could we improve what it produces ?</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10902">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">02/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10902">
+ <td bgcolor="#ffffff">
+ <p>it can be improved. are you suggesting all of the fields from user comprise tostring?</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10903">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10903">
+ <td bgcolor="#ffffff">
+ <p>That's an option...</p>
+ </td>
+ </tr>
+ <tr id="comment-header-10904">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10904">
+ <td bgcolor="#ffffff">
+ <p>There is already an issue for that : <a href="https://fortress.atlassian.net/browse/FC-19" title="Add toString() methods for the base objects (Role, Permissions...)" class="issue-link" data-issue-key="FC-19">FC-19</a></p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-36 -->
+<!-- =========================================================================================================== -->
+<table id="FC-36" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-36] <a href="https://fortress.atlassian.net/browse/FC-36">Create sub-packages for DAO, POJOs, Process modules</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11011-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Break fortress modules in rbac package into separate packages.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-37 -->
+<!-- =========================================================================================================== -->
+<table id="FC-37" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-37] <a href="https://fortress.atlassian.net/browse/FC-37">Create sub-modules for REST, LDAP, API, CLI, CONFIG, Ant</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11012-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Break fortress core into multiple jars. One for CLI, Ant, Rest, etc</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-38 -->
+<!-- =========================================================================================================== -->
+<table id="FC-38" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-38] <a href="https://fortress.atlassian.net/browse/FC-38">Convert Config to non-singleton</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11013-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>This task is to determine how to convert the Fortress Config component to not be a singleton.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-39 -->
+<!-- =========================================================================================================== -->
+<table id="FC-3" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-39] <a href="https://fortress.atlassian.net/browse/FC-39">Mavenize Fortress Build</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11014-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Convert the build and packaging tasks to use Maven rather than Ant. Use maven for releasing source code from GIT. Automatic publish artifacts using Maven. </p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-40 -->
+<!-- =========================================================================================================== -->
+<table id="FC-40" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-40] <a href="https://fortress.atlassian.net/browse/FC-40">Configurable LDAP connection (network or direct)</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11015-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Convert the Fortress ldap connections to be over network or to use local mode.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-41 -->
+<!-- =========================================================================================================== -->
+<table id="FC-41" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-41] <a href="https://fortress.atlassian.net/browse/FC-41">Switch to Apache LDAP API</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11016-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Use Apache LDAP API for fortress. Daotutil should provide abstraction layer to use unbound or apache.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10905">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">04/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10905">
+ <td bgcolor="#ffffff">
+ <p>On progress...</p>
+ <p>I'm currently able to add users using the Apache LDAP API.</p>
+ <p>There is more to come.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-11308">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11308">
+ <td bgcolor="#ffffff">
+ <p>still experimental</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-42 -->
+<!-- =========================================================================================================== -->
+<table id="FC-42" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-42] <a href="https://fortress.atlassian.net/browse/FC-42">Add annotations to run OpenLDAP tests</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 28/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11017-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Use annotations for OpenLDAP junit tests. Break the tests into standalone mode. Follow the apacheds model.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-43 -->
+<!-- =========================================================================================================== -->
+<table id="FC-43" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-43] <a href="https://fortress.atlassian.net/browse/FC-43">Switch to junit 4.11</a>
+ <span class="subText">Created: 28/Jun/13 Updated: 01/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11018-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>fortress to use junit 4.11</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-10900">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">01/Jul/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-10900">
+ <td bgcolor="#ffffff">
+ <p>This version requires that you add a dependency on |hamcrest-core.jar|<br/>
+ <<a href="http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.hamcrest%22%20AND%20a%3A%22hamcrest-core%22" class="external-link" rel="nofollow">http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.hamcrest%22%20AND%20a%3A%22hamcrest-core%22</a>><br/>
+ (with ant, it has to be added to the classpath)</p>
+ <p>See <a href="https://github.com/junit-team/junit/wiki/Download-and-Install" class="external-link" rel="nofollow">https://github.com/junit-team/junit/wiki/Download-and-Install</a></p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-44 -->
+<!-- =========================================================================================================== -->
+<table id="FC-44" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-44] <a href="https://fortress.atlassian.net/browse/FC-44">Fortress 1.0-RC27 Release</a>
+ <span class="subText">Created: 30/Jun/13 Updated: 30/Jun/13 Resolved: 30/Jun/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11019-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>release 27</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-45 -->
+<!-- =========================================================================================================== -->
+<table id="FC-45" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-45] <a href="https://fortress.atlassian.net/browse/FC-45">Make the PasswordPolicy code to work with ApacheDS</a>
+ <span class="subText">Created: 01/Jul/13 Updated: 01/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-46 -->
+<!-- =========================================================================================================== -->
+<table id="FC-46" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-46] <a href="https://fortress.atlassian.net/browse/FC-46">Add the missing serialVersionUID for Serializable classes</a>
+ <span class="subText">Created: 01/Jul/13 Updated: 01/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11101-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-47 -->
+<!-- =========================================================================================================== -->
+<table id="FC-47" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-47] <a href="https://fortress.atlassian.net/browse/FC-47">Improve the way Factories create instances</a>
+ <span class="subText">Created: 02/Jul/13 Updated: 02/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11102-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Currently, the various Mgr factories are creating instances for Mgr depending on the type of access we want (basically, direct access or via REST).</p>
+ <p>We can imagine that we may have more kind of access in the future (remote, SOAP <del>yukkk</del>, ... )</p>
+ <p>But in any case, I think we can simplify the way we create instances :</p>
+ <p> accessClassName = AccessMgrImpl.class.getName();<br/>
+ AccessMgr accessMgr = <br/>
+ (AccessMgr)ClassUtil.createInstance(accessClassName);</p>
+ <p>could be written :</p>
+ <p> AccessMgr accessMgr = new AccessMgrImpl();</p>
+ <p>We know everything about the class, and we don't even have to pull a constructor FQCN from the configuration, the only thing is that we will create a new instance depending on some configuration parameter.</p>
+ <p>(this is of course when the config does not provide the class name to instanciate)</p>
+ <p>I also have some concern about the fact that we may want to mix REST and other kind of access. Atm, either we have a REST access, or not, but it's global and can't be changed, as the IS_EST flag is static and final. Each context might access the Mgr in different ways (at least, this is my understanding, even if I'm pushing it a bit too far).</p>
+ <p>Does it sound reasonnable ?</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-48 -->
+<!-- =========================================================================================================== -->
+<table id="FC-48" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-48] <a href="https://fortress.atlassian.net/browse/FC-48">UserDAO employeeType incorrectly mapped</a>
+ <span class="subText">Created: 03/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11104-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>fix this code in UserDAO:</p>
+ <p> final User update( User entity )</p>
+ <p> if ( VUtil.isNotNullOrEmpty( entity.getEmployeeType() ) )</p>
+ {
+ LDAPAttribute employeeType = new LDAPAttribute( EMPLOYEE_TYPE, entity.getSn() );
+ mods.add( LDAPModification.REPLACE, employeeType );
+ }
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11307">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11307">
+ <td bgcolor="#ffffff">
+ <p>fixed</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-49 -->
+<!-- =========================================================================================================== -->
+<table id="FC-49" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-49] <a href="https://fortress.atlassian.net/browse/FC-49">Make it possible to programatically configure Fortress</a>
+ <span class="subText">Created: 04/Jul/13 Updated: 04/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11106-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Currently, all the fortress configuration is done though a configuration file. </p>
+ <p>It would be very convenient to be able to configure Fortress without depending on a configuration file.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-50 -->
+<!-- =========================================================================================================== -->
+<table id="FC-50" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-50] <a href="https://fortress.atlassian.net/browse/FC-50">UserDAO loadUserRoles & loadUserAdminRoles not properly setting USER_ASSIGN attribute</a>
+ <span class="subText">Created: 04/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11107-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>these methods:<br/>
+ private void loadUserRoles( List<UserRole> list, LDAPModificationSet mods )<br/>
+ private void loadUserAdminRoles( List<UserAdminRole> list, LDAPModificationSet mods )</p>
+ <p>need this added:</p>
+ <p> if ( attr != null )</p>
+ {
+ mods.add( LDAPModification.REPLACE, attr );
+ add this-> mods.add( LDAPModification.REPLACE, attrNm );
+ }
+ <p> }<br/>
+ }</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11305">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11305">
+ <td bgcolor="#ffffff">
+ <p>done</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-51 -->
+<!-- =========================================================================================================== -->
+<table id="FC-51" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-51] <a href="https://fortress.atlassian.net/browse/FC-51">RoleDAO update should not update role occupants</a>
+ <span class="subText">Created: 04/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11108-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Do not update roleOccupants attribute in RoleDAO.update method</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11304">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11304">
+ <td bgcolor="#ffffff">
+ <p>removed occupant update from method</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-52 -->
+<!-- =========================================================================================================== -->
+<table id="FC-52" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-52] <a href="https://fortress.atlassian.net/browse/FC-52">Create unit tests for DAOs</a>
+ <span class="subText">Created: 05/Jul/13 Updated: 05/Jul/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11109-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>We are currently testing the API though the existing managers. It would be good to also test the DAO themselves, as we may have different implementations.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-53 -->
+<!-- =========================================================================================================== -->
+<table id="FC-53" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-53] <a href="https://fortress.atlassian.net/browse/FC-53">Add a way to use different DAO implementations</a>
+ <span class="subText">Created: 05/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Emmanuel Lecharny</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11110-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>We currently have one single implementation for the DAOs, using the UnboundID API. It would be interesting to have a way to instanciate some other implementation (like one using the Apache LDAP API, or a relational database)</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11303">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11303">
+ <td bgcolor="#ffffff">
+ <p>added dao interface</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-54 -->
+<!-- =========================================================================================================== -->
+<table id="FC-54" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-54] <a href="https://fortress.atlassian.net/browse/FC-54">Upgrade default OpenLDAP installation to 2.4.35-2</a>
+ <span class="subText">Created: 05/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11111-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>flip switch in build.properties to 2.4.35-2</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11302">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11302">
+ <td bgcolor="#ffffff">
+ <p>done</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-56 -->
+<!-- =========================================================================================================== -->
+<table id="FC-56" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-56] <a href="https://fortress.atlassian.net/browse/FC-56">PermDAO update incorrectly processes admin roles</a>
+ <span class="subText">Created: 29/Jul/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11501-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The PermDAO updatePerm incorrectly process administrative roles. For example it validates against the non admin role tree and causes this exception when roles is non-null:</p>
+ <p>SecurityException=us.jts.fortress.FinderException: getRole Obj COULD NOT FIND ENTRY for dn cn=oamAdmin8,ou=Roles,ou=RBAC,dc=jts,dc=us</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11301">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11301">
+ <td bgcolor="#ffffff">
+ <p>This was fixed by adding code to PermP validate to check for admin role presence.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-57 -->
+<!-- =========================================================================================================== -->
+<table id="FC-57" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-57] <a href="https://fortress.atlassian.net/browse/FC-57">User Add NPE when ou is null</a>
+ <span class="subText">Created: 04/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11506-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The function should throw a checked security exceptoin</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11306">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11306">
+ <td bgcolor="#ffffff">
+ <p>add null check in userp.validation method</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-59 -->
+<!-- =========================================================================================================== -->
+<table id="FC-59" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-59] <a href="https://fortress.atlassian.net/browse/FC-59">add method DelAccessMgr.sessionPermissions</a>
+ <span class="subText">Created: 04/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>>Fixed</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11509-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>DelAccessMgr needs sessionPermissions method</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11300">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11300">
+ <td bgcolor="#ffffff">
+ <p>This was resolved by using the isAdmin flag in permission and passing it down into PermDAO.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-60 -->
+<!-- =========================================================================================================== -->
+<table id="FC-60" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-60] <a href="https://fortress.atlassian.net/browse/FC-60">Delegated Policy Load</a>
+ <span class="subText">Created: 19/Aug/13 Updated: 28/Aug/13 Resolved: 20/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3"><p>all</p></td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add load script for delegated policy. Change fortress junit test to work if delegated policy is loaded beforehand.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-11310">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">20/Aug/13</font>]</font></td>
+ </tr>
+ <tr id="comment-body-11310">
+ <td bgcolor="#ffffff">
+ <p>script name is DelegatedAdminManagerLoad.xml. Code added to junit tests to work if this policy has been preloaded</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-61 -->
+<!-- =========================================================================================================== -->
+<table id="FC-61" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-61] <a href="https://fortress.atlassian.net/browse/FC-61">User incorrect mapping of displayName attribute</a>
+ <span class="subText">Created: 21/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC27</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11801-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding"><table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/COM-45"><strike>COM-45</strike></a></td>
+ <td>User Detail Commit is mapping userId ...</td>
+ <td>Resolved</td>
+ </tr>
+</table>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>correctly map user displayName to displayName in fortress</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-63 -->
+<!-- =========================================================================================================== -->
+<table id="FC-63" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-63] <a href="https://fortress.atlassian.net/browse/FC-63">Add REST DelegatedAdminMgr.sessionPermissions</a>
+ <span class="subText">Created: 26/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>implement this method:</p>
+ <p>Caused by: java.lang.UnsupportedOperationException<br/>
+ at us.jts.fortress.rest.DelAccessMgrRestImpl.sessionPermissions(DelAccessMgrRestImpl.java:384)</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-64 -->
+<!-- =========================================================================================================== -->
+<table id="FC-64" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-64] <a href="https://fortress.atlassian.net/browse/FC-64">RC29 Release</a>
+ <span class="subText">Created: 28/Aug/13 Updated: 28/Aug/13 Resolved: 28/Aug/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-11905-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-65 -->
+<!-- =========================================================================================================== -->
+<table id="FC-65" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-65] <a href="https://fortress.atlassian.net/browse/FC-65">createSession with Roles improperly loads activated roles into the session</a>
+ <span class="subText">Created: 17/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>during the role activation step the user role selection is improperly loaded into the session.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-66 -->
+<!-- =========================================================================================================== -->
+<table id="FC-66" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-66] <a href="https://fortress.atlassian.net/browse/FC-66">SoD add type DSD fails for Ant admin</a>
+ <span class="subText">Created: 17/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12101-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>to fox:<br/>
+ if(sd.getType() == SDSet.SDType.STATIC)<br/>
+ adminMgr.createSsdSet( sd );<br/>
+ else<br/>
+ adminMgr.createDsdSet( sd );</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-67 -->
+<!-- =========================================================================================================== -->
+<table id="FC-67" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-67] <a href="https://fortress.atlassian.net/browse/FC-67">Add User properties to Ant admin</a>
+ <span class="subText">Created: 18/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC29</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12102-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add the ability to set user properties in ant:</p>
+ <p><user ... userProps="fortressdemo1:ROLE_TEST1"/></p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-68 -->
+<!-- =========================================================================================================== -->
+<table id="FC-68" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-68] <a href="https://fortress.atlassian.net/browse/FC-68">RC30 Release</a>
+ <span class="subText">Created: 19/Sep/13 Updated: 05/Oct/13 Resolved: 05/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12103-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>all</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-69 -->
+<!-- =========================================================================================================== -->
+<table id="FC-69" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-69] <a href="https://fortress.atlassian.net/browse/FC-69">Use global class.path in ant load scripts</a>
+ <span class="subText">Created: 01/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%"></table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>convert load scripts to use global classpath set in the build.xml rather than from local properties in the ant build file.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-70 -->
+<!-- =========================================================================================================== -->
+<table id="FC-70" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-70] <a href="https://fortress.atlassian.net/browse/FC-70">Improvements to Apache LDAP client API usage</a>
+ <span class="subText">Created: 01/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Minor bug fixes and improvements in configuration of apache ldap api usage.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-71 -->
+<!-- =========================================================================================================== -->
+<table id="FC-71" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-71] <a href="https://fortress.atlassian.net/browse/FC-71">Enmasse & Commander demo on windows platform</a>
+ <span class="subText">Created: 05/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12209-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add windows support for commander and enmasse demos</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-72 -->
+<!-- =========================================================================================================== -->
+<table id="FC-72" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-72] <a href="https://fortress.atlassian.net/browse/FC-72">RC31 Release</a>
+ <span class="subText">Created: 05/Oct/13 Updated: 06/Oct/13 Resolved: 06/Oct/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC30</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The two improvements made:</p>
+ <p>1. minor bug fixes to enable the apache ldap api to work correctly</p>
+ <p>2. tweaks to enable win platform support on enmasse & commander demo web applications</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-73 -->
+<!-- =========================================================================================================== -->
+<table id="FC-73" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-73] <a href="https://fortress.atlassian.net/browse/FC-73">Add debug mode for Ant admin scripts</a>
+ <span class="subText">Created: 13/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12215-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add switch to allow xml load utility to be attached by remote debugger</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-74 -->
+<!-- =========================================================================================================== -->
+<table id="FC-74" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-74] <a href="https://fortress.atlassian.net/browse/FC-74">Pass warnings in session for role constraint and pw policy violations</a>
+ <span class="subText">Created: 19/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12300-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-75 -->
+<!-- =========================================================================================================== -->
+<table id="FC-75" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-75] <a href="https://fortress.atlassian.net/browse/FC-75">Make jpgphoto xmltransient</a>
+ <span class="subText">Created: 19/Oct/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12301-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>For now make the jpegphoto transient so that enmasse doesn't try to xml serialize.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-76 -->
+<!-- =========================================================================================================== -->
+<table id="FC-76" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-76] <a href="https://fortress.atlassian.net/browse/FC-76">Fix local.mode</a>
+ <span class="subText">Created: 03/Nov/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12406-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>remove local.mode from the resolve target.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-77 -->
+<!-- =========================================================================================================== -->
+<table id="FC-77" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-77] <a href="https://fortress.atlassian.net/browse/FC-77">RC32 Release</a>
+ <span class="subText">Created: 03/Nov/13 Updated: 10/Nov/13 Resolved: 10/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC31</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12409-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-78 -->
+<!-- =========================================================================================================== -->
+<table id="FC-78" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-78] <a href="https://fortress.atlassian.net/browse/FC-78">Remove extra attribute values from constraints</a>
+ <span class="subText">Created: 07/Nov/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32,1.0-RC33</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12501-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>remove 'none', 'all' and any other values from constraints. Use empty value to indicate that constraint is not enforced.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-79 -->
+<!-- =========================================================================================================== -->
+<table id="FC-79" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-79] <a href="https://fortress.atlassian.net/browse/FC-79">RC32 Cleanup</a>
+ <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12600-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-80 -->
+<!-- =========================================================================================================== -->
+<table id="FC-80" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-80] <a href="https://fortress.atlassian.net/browse/FC-80">Add tenant and thread IDs to log statement</a>
+ <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12601-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add the thread id to log4j messages. Add the tenant id to log statements in junit output.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-81 -->
+<!-- =========================================================================================================== -->
+<table id="FC-81" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-81] <a href="https://fortress.atlassian.net/browse/FC-81">addActiveRole not validating temporal constraints</a>
+ <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12602-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+ <br/>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The addActiveRole method is not checking time/date constraints on roles being activated into session.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-82 -->
+<!-- =========================================================================================================== -->
+<table id="FC-82" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-82] <a href="https://fortress.atlassian.net/browse/FC-82">User-Role Temporal constraints improperly parsing raw data</a>
+ <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12603-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>When user-role constraint data is being converted from raw (as stored in ldap) to entity format it is not handling empty params correctly. Change the way the string is being parsed in order to handle empty values.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-83 -->
+<!-- =========================================================================================================== -->
+<table id="FC-83" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-83] <a href="https://fortress.atlassian.net/browse/FC-83">Add Multitenant Demo</a>
+ <span class="subText">Created: 10/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12604-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add new ant & bash scripts to kick off multi-tenant batch test/demo.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-84 -->
+<!-- =========================================================================================================== -->
+<table id="FC-84" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-84] <a href="https://fortress.atlassian.net/browse/FC-84">Remove extraneous admin bind during user authN</a>
+ <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12605-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The connection pool fortress uses ConnectionPool class from Mozilla java ldap sdk. The code performs a bind on connections that are being put back in the pool (ostensibly to clear the previous credentials). This creates unnecessary extra bind during user authentication flow. </p>
+ <p>Change the ConnectionPool class to not bind before returning to pool</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-85 -->
+<!-- =========================================================================================================== -->
+<table id="FC-85" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-85] <a href="https://fortress.atlassian.net/browse/FC-85">Add jpegphoto to ant ldap load util</a>
+ <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12606-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add jpeg photo to ant load utility.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-86 -->
+<!-- =========================================================================================================== -->
+<table id="FC-86" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-86] <a href="https://fortress.atlassian.net/browse/FC-86">RC33 Release</a>
+ <span class="subText">Created: 11/Nov/13 Updated: 11/Nov/13 Resolved: 11/Nov/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC32</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC33</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12608-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-87 -->
+<!-- =========================================================================================================== -->
+<table id="FC-87" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-87] <a href="https://fortress.atlassian.net/browse/FC-87">Change user dao bind error mapping</a>
+ <span class="subText">Created: 18/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>change error mapping on bind to use </p>
+ <p> /**</p>
+ <ul>
+ <li>The User bind operation failed on server.<br/>
+ */<br/>
+ public final static int USER_BIND_FAILED = 1037;</li>
+ </ul>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-88 -->
+<!-- =========================================================================================================== -->
+<table id="FC-88" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-88] <a href="https://fortress.atlassian.net/browse/FC-88">ARBAC Role Assign/Deassign raw data mapping error</a>
+ <span class="subText">Created: 20/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12702-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Problem description submitted via the fortress mailing list. Issue resolved by fixing UserAdminRole.getRawData()</p>
+ <p>Assign A user to a role-- Works fine<br/>
+ Call Deassign User from a role - Leads to exception the trace is mentioned as follows</p>
+ <p>LDAPException(resultCode=16 (no such attribute), errorMessage='modify/delete: ftARC: no such value')<br/>
+ at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1137)<br/>
+ at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.modify(LDAPConnection.java:1154)<br/>
+ at us.jts.fortress.ldap.UnboundIdDataProvider.modify(UnboundIdDataProvider.java:241)<br/>
+ at us.jts.fortress.rbac.dao.unboundid.UserDAO.deassign(UserDAO.java:1683)<br/>
+ at us.jts.fortress.rbac.UserP.deassign(UserP.java:728)<br/>
+ at us.jts.fortress.rbac.DelAdminMgrImpl.deassignUser(DelAdminMgrImpl.java:296)</p>
+ <p>Things i have verified <br/>
+ 1. User Exists <br/>
+ 2. Role Exists<br/>
+ 3. User is a role occupant of the mentioned role.</p>
+ <p>Any clues as to why this is happening. </p>
+ <p>Relevant piece of code.<br/>
+ //assign user<br/>
+ delAdminMgr = createAndGetDelAdminMgr();<br/>
+ UserAdminRole role = new UserAdminRole(userName, roleName);<br/>
+ try </p>
+ {
+ delAdminMgr.assignUser(role);
+ }
+ <p> catch (SecurityException e) {</p>
+ <p>}<br/>
+ //remove user </p>
+ <p> delAdminMgr = createAndGetDelAdminMgr();<br/>
+ UserAdminRole role = new UserAdminRole(userName, roleName);<br/>
+ try </p>
+ {
+ delAdminMgr.deassignUser(role);
+ }
+ <p> catch (SecurityException e) {</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-89 -->
+<!-- =========================================================================================================== -->
+<table id="FC-89" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-89] <a href="https://fortress.atlassian.net/browse/FC-89">PoolMgr use of uninitialized variables</a>
+ <span class="subText">Created: 20/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12703-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Correct PoolMgr usage of uninitialized variables:</p>
+ <p> private static String hostName;<br/>
+ private static int portId;</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-90 -->
+<!-- =========================================================================================================== -->
+<table id="FC-90" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-90] <a href="https://fortress.atlassian.net/browse/FC-90">Administrative Permissions and Objects in search result set admin flag not set on return</a>
+ <span class="subText">Created: 28/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12705-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The isAdmin flag must be set on administrative permissions and objects returned from search.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-91 -->
+<!-- =========================================================================================================== -->
+<table id="FC-91" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-91] <a href="https://fortress.atlassian.net/browse/FC-91">Update copyright to 2014</a>
+ <span class="subText">Created: 28/Dec/13 Updated: 28/Dec/13 Resolved: 28/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12706-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-92 -->
+<!-- =========================================================================================================== -->
+<table id="FC-92" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-92] <a href="https://fortress.atlassian.net/browse/FC-92">Simplify fortress openldap acls</a>
+ <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12710-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Remove the following unnecessary ACL's from OL config file:</p>
+ <ol>
+ <li>
+ <ol>
+ <li>
+ <ol>
+ <li>
+ Allow users to read permission records (needed for OAM authorization):<br/>
+ access to dn.sub="ou=Permissions,ou=RBAC,@SUFFIX@" by users read<br/>
+ access to dn.sub="ou=AdminPerms,ou=ARBAC,@SUFFIX@" by users read
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client123,@SUFFIX@" by users read<br/>
+ access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client123,@SUFFIX@" by users read</p>
+ <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client456,@SUFFIX@" by users read<br/>
+ access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client456,@SUFFIX@" by users read</p>
+ <p>access to dn.sub="ou=Permissions,ou=RBAC,ou=client789,@SUFFIX@" by users read<br/>
+ access to dn.sub="ou=AdminPerms,ou=ARBAC,ou=client789,@SUFFIX@" by users read</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-93 -->
+<!-- =========================================================================================================== -->
+<table id="FC-93" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-93] <a href="https://fortress.atlassian.net/browse/FC-93">Factory createInstance for default HOME context</a>
+ <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12711-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add simplified methods for constructing fortress managers that do not require passing HOME tenant. This is useful when multitenancy is not needed.</p>
+ <p>for example:</p>
+ <p> /**</p>
+ <ul>
+ <li>
+ Create and return a reference to
+ {@link us.jts.fortress.ReviewMgr} object using HOME context.<br/>
+ *<br/>
+ * @return instance of {@link us.jts.fortress.ReviewMgr}
+ <p>.</p>
+ </li>
+ <li>
+ @throws SecurityException in the event of failure during instantiation.<br/>
+ */<br/>
+ public static us.jts.fortress.ReviewMgr createInstance()<br/>
+ throws SecurityException
+ {
+ return createInstance( GlobalIds.HOME );
+ }
+ </li>
+ </ul>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-94 -->
+<!-- =========================================================================================================== -->
+<table id="FC-94" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-94] <a href="https://fortress.atlassian.net/browse/FC-94">RC34 Release</a>
+ <span class="subText">Created: 29/Dec/13 Updated: 29/Dec/13 Resolved: 29/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC33</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12713-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-95 -->
+<!-- =========================================================================================================== -->
+<table id="FC-95" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-95] <a href="https://fortress.atlassian.net/browse/FC-95">PermDAO does not set DN on returned entity for Add/Update operations</a>
+ <span class="subText">Created: 31/Dec/13 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12716-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Set DN to returned entity for add, update operations in PermDAO</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-96 -->
+<!-- =========================================================================================================== -->
+<table id="FC-96" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-96] <a href="https://fortress.atlassian.net/browse/FC-96">RC34 Cleanup</a>
+ <span class="subText">Created: 31/Dec/13 Updated: 31/Dec/13 Resolved: 31/Dec/13</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12717-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>update ivy xml to include the 34 released artifiacts</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-97 -->
+<!-- =========================================================================================================== -->
+<table id="FC-97" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-97] <a href="https://fortress.atlassian.net/browse/FC-97">Support 3 part domain component for suffix</a>
+ <span class="subText">Created: 19/Jan/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-12900-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add support for 3 part suffix - i.e. - dc=name1, dc=name2, dc=org</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-98 -->
+<!-- =========================================================================================================== -->
+<table id="FC-98" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-98] <a href="https://fortress.atlassian.net/browse/FC-98">Change ACL to disallow user from all but user password</a>
+ <span class="subText">Created: 24/Jan/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The ACL setting in slapd.conf for user is currently defined:<br/>
+ access to attrs=userpassword,ftModCode,ftModId,ftModifier<br/>
+ by self write<br/>
+ by * auth</p>
+ <p>change to:<br/>
+ access to attrs=userpassword<br/>
+ by self write<br/>
+ by * auth</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-99 -->
+<!-- =========================================================================================================== -->
+<table id="FC-99" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-99] <a href="https://fortress.atlassian.net/browse/FC-99">Update comments on init-slapd ant target</a>
+ <span class="subText">Created: 08/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Environment:</b></td>
+ <td bgcolor="#ffffff" valign="top" colspan="3">
+ <p>Provide detailed comments on ant init-slapd target.</p>
+ </td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-100 -->
+<!-- =========================================================================================================== -->
+<table id="FC-100" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-100] <a href="https://fortress.atlassian.net/browse/FC-100">Store JAXB context in cache</a>
+ <span class="subText">Created: 10/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Utilize cache for JAXB context for improved performance.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-101 -->
+<!-- =========================================================================================================== -->
+<table id="FC-101" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-101] <a href="https://fortress.atlassian.net/browse/FC-101">Integrate RBAC Accelerator Overlay</a>
+ <span class="subText">Created: 18/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Integrate RBAC Accelerator Overlay into Fortress</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-102 -->
+<!-- =========================================================================================================== -->
+<table id="FC-102" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-102] <a href="https://fortress.atlassian.net/browse/FC-102">Normalize permission attributes</a>
+ <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13207-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/COM-91"><strike>COM-91</strike></a></td>
+ <td>Normalize permission attributes</td>
+ <td>Resolved</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<br/>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Change perm entities to use standardized attribute names for:<br/>
+ objName, objId</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-103 -->
+<!-- =========================================================================================================== -->
+<table id="FC-103" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-103] <a href="https://fortress.atlassian.net/browse/FC-103">Fix parsing of Admin Role raw data</a>
+ <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13208-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Fix Admin Role parsing alignment issue with constraint raw data.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-104 -->
+<!-- =========================================================================================================== -->
+<table id="FC-104" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-104] <a href="https://fortress.atlassian.net/browse/FC-104">RC35 Release</a>
+ <span class="subText">Created: 19/Feb/14 Updated: 20/Feb/14 Resolved: 20/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC34</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>RC35 Release</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-105 -->
+<!-- =========================================================================================================== -->
+<table id="FC-105" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-105] <a href="https://fortress.atlassian.net/browse/FC-105">RC35 Cleanup</a>
+ <span class="subText">Created: 22/Feb/14 Updated: 28/Feb/14 Resolved: 28/Feb/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13215-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Update ivy xml to include the RC35 artifacts. Update build properties to include latest symas openldap bulds.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-106 -->
+<!-- =========================================================================================================== -->
+<table id="FC-106" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-106] <a href="https://fortress.atlassian.net/browse/FC-106">Warning class needs to implement Serializable</a>
+ <span class="subText">Created: 20/Mar/14 Updated: 20/Mar/14 Resolved: 20/Mar/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13500-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>This is needed for Fortress session serialization.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-107 -->
+<!-- =========================================================================================================== -->
+<table id="FC-107" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-107] <a href="https://fortress.atlassian.net/browse/FC-107">Some tests are failing with JAVA 8 (due to the Map order being different)</a>
+ <span class="subText">Created: 23/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Blocker</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13700-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>When running the tests with Java 8 instead of Java 7, we get a few errors, which boil down to some Map being ordered in a different way in Java 8.</p>
+ <p>In any case, no assumption should be made on a Map ordering, so this is clearly a bug that is likely to happen in the near future.</p>
+ <p>The failing test is in FortressJUnitApachedsTest.testAddActiveRole</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-12000">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">23/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12000">
+ <td bgcolor="#ffffff">
+ <p>More info:</p>
+ <p>This test case fails:<br/>
+ assignUsersSSD( "ASGN-USRS_SSDT6B TU11 SSD_T6_B", UserTestData.USERS_TU11_SSD_HIER, RoleTestData.SSD_T6_B );</p>
+ <p>The following data entries correspond to what should be present inside SdUtil.validateSSD:</p>
+ <p>User</p>
+ {userId='jtsTU11User3', internalId='null', roles=null, adminRoles=null, pwPolicy='null', cn='null', sn='null', dn='null', ou='null', description='null', beginTime='null', endTime='null', beginDate='null', endDate='null', beginLockDate='null', endLockDate='null', dayMask='null', name='null', employeeType='null', title='null', timeout=0, reset=false, locked=false, system=null, props=us.jts.fortress.rbac.Props@42ebaace, address=null, phones=null, mobiles=null, emails=null}
+ <p>RoleoamT13SSD10, date : <null, null>, time : <null, null>, lock date : <null, null>, timeout : 0, daymask : null</p>
+ <p>Set<String> rls = rMgr.authorizedRoles(user);<br/>
+ oamT13SSD1</p>
+ <p>List<SDSet> ssdSets = getSsdCache(role.getName(), user.getContextId());<br/>
+ oamT6Ssd1</p>
+ <p>Set<String> map = ssd.getMembers();<br/>
+ oamT13SSD1, oamT13SSD6, oamT13SSD9</p>
+ <p>First time through this should throw an exception:</p>
+ <p> if (map.contains(authRole))<br/>
+ {<br/>
+ matchCount++;<br/>
+ // does the match count exceed the cardinality allowed for this particular SSD set?<br/>
+ if (matchCount >= ssd.getCardinality() - 1)</p>
+ {
+ String error = "validateSSD new role [" + role.getName() + "] validates SSD Set Name:" + ssd.getName() + " Cardinality:" + ssd.getCardinality();
+ throw new SecurityException(GlobalErrIds.SSD_VALIDATION_FAILED, error);
+ }
+ <p> }</p>
+ <p>This is what is present in Java 8 env:</p>
+ <p>the map contains oamT13SSD1, oamT13SSD6, oamT13SSD9<br/>
+ the authRole is OAMT13SSD4, which is upper case</p>
+ <p>for some reason the call to Set<String> rls = rMgr.authorizedRoles(user);</p>
+ <p>returns OAMT13SSD4 instead of oamT13SSD1</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12001">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">23/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12001">
+ <td bgcolor="#ffffff">
+ <p>In Java 7, the call to Set<String> rls = rMgr.authorizedRoles(user); returns oamT13SSD1<br/>
+ In Java 8, the call to Set<String> rls = rMgr.authorizedRoles(user); returns OAMT13SSD4, oamT13SSD5</p>
+ <p>There is something wrong in the way we build the authz roles. </p>
+ </td>
+ </tr>
+ <tr id="comment-header-12009">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12009">
+ <td bgcolor="#ffffff">
+ <p>Test failures running the FortressJunitTest suite under Java 8</p>
+ <p>junit Testcase: createSessionsDSD took 0.001 sec<br/>
+ junit FAILED<br/>
+ junit us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
+ junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:602)<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:559)<br/>
+ junit <br/>
+ junit Testcase: createSessionsDSD took 0.001 sec<br/>
+ junit FAILED<br/>
+ junit us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
+ junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD role cardinality check failed user-role list size user jtsTU12User1 dsd set oamDsdTest1 card 2 listsize 0 expected:<1> but was:<0><br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:602)<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.createSessionsDSD(AccessMgrImplTest.java:559)<br/>
+ junit <br/>
+ junit Testcase: testSessionRole took 0.034 sec<br/>
+ junit Testcase: testCheckAccess took 1.872 sec<br/>
+ junit Testcase: testAddActiveRole took 0.217 sec<br/>
+ junit FAILED<br/>
+ junit us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD cardinality test failed user jtsTU8User1 role oamDSDR1 ssd oamDsdTest1 cardinality 2 count 1<br/>
+ junit junit.framework.AssertionFailedError: us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD cardinality test failed user jtsTU8User1 role oamDSDR1 ssd oamDsdTest1 cardinality 2 count 1<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.addActiveRolesDSD(AccessMgrImplTest.java:1216)<br/>
+ junit at us.jts.fortress.rbac.AccessMgrImplTest.testAddActiveRole(AccessMgrImplTest.java:983)<br/>
+ junit <br/>
+ junit Testcase: testDropActiveRole took 0.03 sec</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12010">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12010">
+ <td bgcolor="#ffffff">
+ <p>Problem 1:</p>
+ <p>The hierarchical SSD test case depended on a faulty test dataset:</p>
+ {
+ "oamT6Ssd3", /* NAME_COL */
+ "Test Case T6B", /* DESC_COL */
+ "2", /* CARDINALITY */
+ "oamT13SSD10,oamT13SSD5,oamT13SSD1", /* RELATIONSHIP_COL */}
+ <p> };</p>
+ <p>The test case iterates on roles in relationship col and depends on assignment of 2nd role in set to fail due to SSD constraint. There is problem in dataset because only two of the three roles listed are constrained. The 3rd one (oamT13SS5) is OK. This problem was masked because previously (before Java 8) the roles were iterated in this order:<br/>
+ <a href="https://fortress.atlassian.net/wiki/display/FC/oamT13SSD1%2C+oamT13SSD10%2C+oamT13SSD5">oamT13SSD1, oamT13SSD10, oamT13SSD5</a></p>
+ <p>When it hit the 2nd role, oamT13SSD10 an SSD constraint would throw an exception on assignUser which is the expected condition for this test case.</p>
+ <p>Under Java 8 the list is returned in this order:<br/>
+ <a href="https://fortress.atlassian.net/wiki/display/FC/oamT13SSD5%2C+oamT13SSD10%2C+oamT13SSD1">oamT13SSD5, oamT13SSD10, oamT13SSD1</a></p>
+ <p>Because oamT13SSD5 isn't a member of the SSD dataset, when it hits the 2nd role oamT13SSD10, an exception is not thrown and the test case fails.</p>
+ <p>Because the members of SSD are a set, and a set is by its very definition an unordered list of elements, we cannot predetermine the order. This means every member must be in the SSD set (or inherited by a role in the SSD set). There is not a 3rd role that can be selected from the role test set that provides this condition.</p>
+ <p>The workaround is to remove the 3rd role from the test data set which means only 2 roles will be returned, and since these two roles always satisfy the test case, it fixes the problem while maintaining the test conditions.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12011">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">25/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12011">
+ <td bgcolor="#ffffff">
+ <p>similarly this test case:</p>
+ <p> addActiveRolesDSD( "ADD-ACT-RLS-USRS_DSDT6B TU11 DSD_T6_B", UserTestData.USERS_TU11_SSD_HIER,<br/>
+ RoleTestData.DSD_T6_D );</p>
+ <p>was failing because this dataset was wrong but was masked because before java 7 returned in an order that ensured success due to mismatching role not getting called:</p>
+ {
+ "oamT6Dsd3", /* NAME_COL */
+ "Test Case T6D", /* DESC_COL */
+ "2", /* WORKS FOR ADD ACTIVE ROLE DSD TESTS */
+ "oamT13DSD10,oamT13DSD5,oamT13DSD1", /* RELATIONSHIP_COL */
+ }
+ <p>change dataset to remove the role that does not violate constraint:</p>
+ {
+ "oamT6Dsd3", /* NAME_COL */
+ "Test Case T6D", /* DESC_COL */
+ "2", /* WORKS FOR ADD ACTIVE ROLE DSD TESTS */
+ "oamT13DSD10,oamT13DSD1", /* RELATIONSHIP_COL */
+ }
+ <p>and test case passes under Java 8</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12012">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">25/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12012">
+ <td bgcolor="#ffffff">
+ <p>Excellent ! I would not be able to find the cause of those problems...</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-108 -->
+<!-- =========================================================================================================== -->
+<table id="FC-108" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-108] <a href="https://fortress.atlassian.net/browse/FC-108">Add RBAC Accelerator client to Fortress</a>
+ <span class="subText">Created: 23/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13701-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add the Fortress Accelerator interface to Fortress so that it can call the extended LDAP operations for createSession, checkAccess, addActiveRole, etc.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-109 -->
+<!-- =========================================================================================================== -->
+<table id="FC-109" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-109] <a href="https://fortress.atlassian.net/browse/FC-109">Review the LOG statement for better performances</a>
+ <span class="subText">Created: 24/Apr/14 Updated: 25/Apr/14 Resolved: 25/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13702-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Currently, we have a lot of logs like :<br/>
+ LOG.debug( "addOrgUnits ou <span class="error">[" + entity.getName() + "]</span> successful" );</p>
+ <p>Even if the debug level is not set, a String will be constructed and the getName() method will be callse. We can have a more efficient LOG by using :</p>
+ <p>LOG.debug( "addOrgUnits ou <a href="https://fortress.atlassian.net/wiki/display/FC/%7B%7D">{}</a> successful", entity.getName() );</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-12002">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12002">
+ <td bgcolor="#ffffff">
+ <p>Just to make sure I have this right, statements like this:<br/>
+ LOG.debug( "toGraph child=" + child + ", parent=" + parent );</p>
+ <p>will be changed to this:<br/>
+ LOG.debug( "toGraph child={}, parent={}", child, parent );</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12003">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12003">
+ <td bgcolor="#ffffff">
+ <p>But what about this:</p>
+ <p> LOG.info( "loadGraph initializing ADMIN ROLE context <span class="error">[" + inHier.getContextId() + "]</span>" );</p>
+ <p>If log level is set to info, there isn't any value in converting to this:</p>
+ <p> LOG.info( "loadGraph initializing ADMIN ROLE context {}", inHier.getContextId());</p>
+ <p>right?</p>
+ <p>or what about this one:</p>
+ <p> LOG.debug( "toGraph" );</p>
+ <p>any value in changing to:</p>
+ <p> LOG.debug( "{}", "toGraph" );</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12004">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12004">
+ <td bgcolor="#ffffff">
+ <p>And one more.</p>
+ <p>are there any benefit to doing this:</p>
+ <p> if ( LOG.isDebugEnabled() )<br/>
+ {<br/>
+ LOG.debug( "{} controls{}={}", methodName, i, controlsi );<br/>
+ }</p>
+ <p>over simply this?</p>
+ <p> LOG.debug( "{} controls{}</a>={}", methodName, i, controlsi );</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12005">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12005">
+ <td bgcolor="#ffffff">
+ <p>Each parameter is injected in {}, in the order they appear. The limit is 2.</p>
+ <p>When you have no parameter, you can just do that :<br/>
+ LOG.debug( "toGraph" ); </p>
+ </td>
+ </tr>
+ <tr id="comment-header-12006">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12006">
+ <td bgcolor="#ffffff">
+ <p>In any case, it's still valuable to convert the LOG to use {}. If someone wants to disable info, why would we construct a String that will never be exposed ?</p>
+ <p>When you have more than 2 parameters, you have no other ways than doing something like :</p>
+ <p>if (LOG.isDebugEnabled()) </p>
+ {
+ LOG.debug( ... )
+ }
+ <p>This way, you avoid building the String if debug is disabled.</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12007">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">24/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12007">
+ <td bgcolor="#ffffff">
+ <p>Was concerned a limit of two and ran a test:</p>
+ <p>Logger LOG = LoggerFactory.getLogger( FortressConsole.class );<br/>
+ Logger LOG = LoggerFactory.getLogger( FortressConsole.class );<br/>
+ LOG.info( "test log 1, 1:{}", "one" );<br/>
+ LOG.info( "test log 2, 1:{}, 2:{}", "one", "two");<br/>
+ LOG.info( "test log 3, 1:{}, 2:{}, 3:{}", "one", "two", "three");<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}", "one", "two", "three", "four" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}", "one", "two", "three", "four", "five" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}", "one", "two", "three", "four", "five", "six" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}", "one", "two", "three", "four", "five", "six", "seven" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}", "one", "two", "three", "four", "five", "six", "seven", "eight" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" );<br/>
+ LOG.info( "test log 4, 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}, 10:{}", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" );</p>
+ <p>produced the hoped for output:</p>
+ <p>main (INFO ) test log 1, 1:one<br/>
+ main (INFO ) test log 2, 1:one, 2:two<br/>
+ main (INFO ) test log 3, 1:one, 2:two, 3:three<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine<br/>
+ main (INFO ) test log 4, 1:one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten</p>
+ </td>
+ </tr>
+ <tr id="comment-header-12008">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny</a><font size="-2">[<font color="#336699">24/Apr/14</font>]</font>
+ </td>
+ </tr>
+ <tr id="comment-body-12008">
+ <td bgcolor="#ffffff">
+ <p>Ah, great, they fixed the limited number of arguments ! Probably because they now use the ellipsis notation, when they weren't in a previous version.</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-110 -->
+<!-- =========================================================================================================== -->
+<table id="FC-110" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-110] <a href="https://fortress.atlassian.net/browse/FC-110">ObjectClass description in Javadoc could use different tags</a>
+ <span class="subText">Created: 26/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Trivial</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13703-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Many of the ObjectClass in Javadoc are using this formatting :</p>
+ <ul>
+ <li><ul></li>
+ <li><li> ------------------------------------------</li>
+ <li><li> <code>objectclass ( 1.3.6.1.4.1.38088.3.2</code></li>
+ <li><li> <code>NAME 'ftProperties'</code></li>
+ <li><li> <code>DESC 'Fortress Properties AUX Object Class'</code></li>
+ <li><li> <code>AUXILIARY</code></li>
+ <li><li> <code>MAY ( ftProps ) ) </code></li>
+ <li><li> ------------------------------------------</li>
+ <li></ul></li>
+ </ul>
+ <p>It results in a presentation which is not really what one would expect.</p>
+ <p>It would be better to use <pre>...</pre> like this :</p>
+ <ul>
+ <li><pre></li>
+ <li>------------------------------------------</li>
+ <li>objectclass ( 1.3.6.1.4.1.38088.3.2</li>
+ <li>NAME 'ftProperties'</li>
+ <li>DESC 'Fortress Properties AUX Object Class'</li>
+ <li>AUXILIARY</li>
+ <li>MAY ( ftProps )</li>
+ <li>)</li>
+ <li>------------------------------------------</li>
+ <li></pre></li>
+ </ul>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-111 -->
+<!-- =========================================================================================================== -->
+<table id="FC-111" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-111] <a href="https://fortress.atlassian.net/browse/FC-111">The safeText method is probably not useful, and can be faster</a>
+ <span class="subText">Created: 26/Apr/14 Updated: 29/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Emmanuel Lecharny</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13704-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>When we want to validate an entity before injecting it in the server, we call the RegExUtil.safeText() method.</p>
+ <p>It's checking something the server will already check (each value injected in the server will be controlled). Of course, we can set limits like the max length, but this can be done when defining the AttributeType (using the </p>
+ {NNN}
+ <p> notation).</p>
+ <p>Otherwise, the way the regexp is evaluated is costly : we compile the gexep every time, when it could be done only once.</p>
+ <p> Pattern safeTextPattern = Pattern.compile(safeTextPatternStr);</p>
+ <p>can be done globally.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-12013">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12013">
+ <td bgcolor="#ffffff">
+ <p>When I move to static</p>
+ <p> Pattern safeTextPattern = Pattern.compile(safeTextPatternStr);</p>
+ <p>Get this exception at runtime. Not opposed to moving away from regx to attribute type notation. How would that work here?</p>
+ <p>nt] <br/>
+ startAnt BUILD FAILED<br/>
+ startAnt /home/smckinn/GIT/fortressDev/openldap-fortress-core/ldap/setup/refreshLDAPData.xml:11: java.lang.ExceptionInInitiFortressAdmin 2014-04-27 09:55:47,507 (INFO ) DEBUG MODE 1<br/>
+ startAnt FortressAdmin 2014-04-27 09:55:47,507 (INFO ) addSuffixes name=jts description=JoshuaTree Software<br/>
+ startAnt alizerError<br/>
+ startAnt at org.openldap.fortress.util.attr.VUtil.safeText(VUtil.java:173)<br/>
+ startAnt at org.openldap.fortress.ldap.suffix.SuffixP.validate(SuffixP.java:135)<br/>
+ startAnt at org.openldap.fortress.ldap.suffix.SuffixP.add(SuffixP.java:70)<br/>
+ startAnt at org.openldap.fortress.ant.FortressAntTask.addSuffixes(FortressAntTask.java:1602)<br/>
+ startAnt at org.openldap.fortress.ant.FortressAntTask.execute(FortressAntTask.java:802)<br/>
+ startAnt at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)<br/>
+ startAnt at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/>
+ startAnt at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br/>
+ startAnt at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br/>
+ startAnt at java.lang.reflect.Method.invoke(Method.java:601)<br/>
+ startAnt at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)<br/>
+ startAnt at org.apache.tools.ant.Task.perform(Task.java:348)<br/>
+ startAnt at org.apache.tools.ant.Target.execute(Target.java:390)<br/>
+ startAnt at org.apache.tools.ant.Target.performTasks(Target.java:411)<br/>
+ startAnt at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)<br/>
+ startAnt at org.apache.tools.ant.Project.executeTarget(Project.java:1368)<br/>
+ startAnt at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)<br/>
+ startAnt at org.apache.tools.ant.Project.executeTargets(Project.java:1251)<br/>
+ startAnt at org.apache.tools.ant.Main.runBuild(Main.java:809)<br/>
+ startAnt at org.apache.tools.ant.Main.startAnt(Main.java:217)<br/>
+ startAnt at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)<br/>
+ startAnt at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)<br/>
+ startAnt Caused by: java.lang.NullPointerException<br/>
+ startAnt at java.util.regex.Pattern.<init>(Pattern.java:1336)<br/>
+ startAnt at java.util.regex.Pattern.compile(Pattern.java:1022)<br/>
+ startAnt at org.openldap.fortress.util.attr.RegExUtil.<clinit>(RegExUtil.java:37)<br/>
+ startAnt ... 22 more<br/>
+ startAnt </p>
+ </td>
+ </tr>
+ <tr id="comment-header-12014">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny <font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12014">
+ <td bgcolor="#ffffff"><p>What is the content of safeTextPatternStr ?</p></td>
+ </tr>
+ <tr id="comment-header-12015">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">27/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12015"><td bgcolor="#ffffff"><p>regXSafetext=^A-Za-z0-9-</p></td>
+ </tr>
+ <tr id="comment-header-12100">
+ <td bgcolor="#f0f0f0">Comment by Emmanuel Lecharny<font size="-2">[<font color="#336699">29/Apr/14</font>]</font></td>
+ </tr>
+ <tr id="comment-body-12100"><td bgcolor="#ffffff"><p>It should be ^[A-Za-z0-9-]*, no ?</p></td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-112 -->
+<!-- =========================================================================================================== -->
+<table id="FC-112" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-112] <a href="https://fortress.atlassian.net/browse/FC-112">Convert all package names, maven group and licenses to org.openldap</a>
+ <span class="subText">Created: 26/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13705-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/COM-98"><strike>COM-98</strike></a></td>
+ <td>Convert all package names, maven grou...</td>
+ <td>Resolved</td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/EN-15"><strike>EN-15</strike></a></td>
+ <td>Convert all package names, maven grou...</td>
+ <td>Resolved</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-113 -->
+<!-- =========================================================================================================== -->
+<table id="FC-113" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-113] <a href="https://fortress.atlassian.net/browse/FC-113">RC36 Release</a>
+ <span class="subText">Created: 27/Apr/14 Updated: 28/Apr/14 Resolved: 28/Apr/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC35</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13711-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-114 -->
+<!-- =========================================================================================================== -->
+<table id="FC-114" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-114] <a href="https://fortress.atlassian.net/browse/FC-114">Fix javadoc in Session Class</a>
+ <span class="subText">Created: 29/Apr/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-13800-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>This class has public methods that need to be documented.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-115 -->
+<!-- =========================================================================================================== -->
+<table id="FC-115" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-115] <a href="https://fortress.atlassian.net/browse/FC-115">createSession with roles has problem related to DSD policies.</a>
+ <span class="subText">Created: 18/May/14 Updated: 18/May/14 Resolved: 18/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14000-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Create session with roles changed to validate constraints after the requested role list has been built. </p>
+ <p>The reason is if user has been assigned two roles that conflict with a single DSD policy, on who's behalf createSession is being called with just one of those roles requested being passed in, failure occurs because the requested role 'may' have been forced deactive from user's actual list during validate constraint check. </p>
+ <p>Currently (and because) Fortress has no way of adjudicating which conflicting role 'wins' during constraint validation checking, it will simply deactivate the first role it finds that violates a particular DSD policy.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-116 -->
+<!-- =========================================================================================================== -->
+<table id="FC-116" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-116] <a href="https://fortress.atlassian.net/browse/FC-116">CreateSession with default roles</a>
+ <span class="subText">Created: 18/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14001-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-117 -->
+<!-- =========================================================================================================== -->
+<table id="FC-117" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-117] <a href="https://fortress.atlassian.net/browse/FC-117">CacheMgr classloader issues</a>
+ <span class="subText">Created: 20/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14100-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Change to following for Tomcat context realm support:<br/>
+ // This call will create a new CacheManager, or throw exception if the it already exists, or if the configuration file is not found on classloader.</p>
+ <p>m_ftCacheImpl = new CacheMgr( new CacheManager( ClassUtil.resourceAsStream( cacheConfig ) ) );</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-118 -->
+<!-- =========================================================================================================== -->
+<table id="FC-118" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-118] <a href="https://fortress.atlassian.net/browse/FC-118">Add support for LDAP Groups</a>
+ <span class="subText">Created: 23/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14103-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add support for LDAP groups (CRUD) and assignments to users.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-119 -->
+<!-- =========================================================================================================== -->
+<table id="FC-119" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-119] <a href="https://fortress.atlassian.net/browse/FC-119">admin console add/update user work</a>
+ <span class="subText">Created: 24/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14104-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The add and update user functions in adminConsole are test functions but they still should be usable for general purpose admin. This ticket clears up a couple of minor bugs.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-120 -->
+<!-- =========================================================================================================== -->
+<table id="FC-120" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-120] <a href="https://fortress.atlassian.net/browse/FC-120">Group console problems with update</a>
+ <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14105-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>The update user functions in group console are test functions but still should be usable for general purpose admin. This ticket fixes update problems.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+
+<!-- =========================================================================================================== -->
+<!-- FC-121 -->
+<!-- =========================================================================================================== -->
+<table id="FC-121" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-121] <a href="https://fortress.atlassian.net/browse/FC-121">Clean up group exception processing</a>
+ <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14106-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-122 -->
+<!-- =========================================================================================================== -->
+<table id="FC-122" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-122] <a href="https://fortress.atlassian.net/browse/FC-122">Make Group object class and attribute names configurable</a>
+ <span class="subText">Created: 25/May/14 Updated: 25/May/14 Resolved: 25/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14107-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add to fortress properties configurations to control LDAP group name, and attribute names.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-123 -->
+<!-- =========================================================================================================== -->
+<table id="FC-123" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-123] <a href="https://fortress.atlassian.net/browse/FC-123">Add Group unit tests</a>
+ <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14200-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+</tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add group test cases that use ant loader. Also cleanup ant group entity processing.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-124 -->
+<!-- =========================================================================================================== -->
+<table id="FC-124" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-124] <a href="https://fortress.atlassian.net/browse/FC-124">Add and delete group properties using ant load</a>
+ <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14201-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>add capability for ant load to add and remove group properties</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-125 -->
+<!-- =========================================================================================================== -->
+<table id="FC-125" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-125] <a href="https://fortress.atlassian.net/browse/FC-125">Control group funcs with delegated access control</a>
+ <span class="subText">Created: 26/May/14 Updated: 26/May/14 Resolved: 26/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14204-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Enable delegated access control over group manager functions</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-126 -->
+<!-- =========================================================================================================== -->
+<table id="FC-126" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-126] <a href="https://fortress.atlassian.net/browse/FC-126">Add toString for entities</a>
+ <span class="subText">Created: 26/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14205-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>the fortress entities should override toString for display purposes</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-127 -->
+<!-- =========================================================================================================== -->
+<table id="FC-127" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-127] <a href="https://fortress.atlassian.net/browse/FC-127">Add search group by users</a>
+ <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14206-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add findByUsers to groupmgr. Cleanup and refine tests and entity processing.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-128 -->
+<!-- =========================================================================================================== -->
+<table id="FC-128" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-128] <a href="https://fortress.atlassian.net/browse/FC-128">Fix Accelerator test cases</a>
+ <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Minor</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14208-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>fix a few minor problems with accelerator test cases not keeping up with changes on the server.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-129 -->
+<!-- =========================================================================================================== -->
+<table id="FC-129" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-129] <a href="https://fortress.atlassian.net/browse/FC-129">Fortress use sentry distribution</a>
+ <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14209-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>change the sentry distribution classification to use 'dist':</p>
+ <p> <dependency org="org.openldap" name="sentry" rev="1.0-RC37" conf="default->master"><br/>
+ <artifact name="sentry" e:classifier="dist" type="jar"/><br/>
+ </dependency></p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-12300">
+ <td bgcolor="#f0f0f0">Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">28/May/14</font>]</font>
+ </td>
+ </tr>
+ <tr id="comment-body-12300"><td bgcolor="#ffffff">
+ <p>change setting in build.xml</p>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-130 -->
+<!-- =========================================================================================================== -->
+<table id="FC-130" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-130] <a href="https://fortress.atlassian.net/browse/FC-130">Fortress default suffix change to dc=openldap,dc=org</a>
+ <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14210-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>change the default suffix name from dc=jts, dc=us to dc=openldap, dc=org</p><br/>
+ </td>
+ </tr>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-131 -->
+<!-- =========================================================================================================== -->
+<table id="FC-131" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-131] <a href="https://fortress.atlassian.net/browse/FC-131">RC37 Release</a>
+ <span class="subText">Created: 28/May/14 Updated: 28/May/14 Resolved: 28/May/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC36</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14211-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-132 -->
+<!-- =========================================================================================================== -->
+<table id="FC-132" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-132] <a href="https://fortress.atlassian.net/browse/FC-132">RC37 Cleanup</a>
+ <span class="subText">Created: 28/May/14 Updated: 09/Aug/14 Resolved: 09/Aug/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14218-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Update ivy xml to include the RC37 artifacts</p><br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-133 -->
+<!-- =========================================================================================================== -->
+<table id="FC-133" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-133] <a href="https://fortress.atlassian.net/browse/FC-133">Fix Accelerator CreateSession negative test case</a>
+ <span class="subText">Created: 03/Jun/14 Updated: 03/Jun/14 Resolved: 03/Jun/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14300-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>fix negative test case in testCreateSession()</p><br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-134 -->
+<!-- =========================================================================================================== -->
+<table id="FC-134" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-134] <a href="https://fortress.atlassian.net/browse/FC-134">replace bootstrap props with group vals</a>
+ <span class="subText">Created: 14/Jun/14 Updated: 05/Jul/14 Resolved: 05/Jul/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14305-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>use ant replacement for the following group mgr values:</p>
+ <p>1. group object class name:<br/>
+ <replace file="$</p>
+ {dst.bootstrap.conf}" token="@GROUP_OBJECT_CLASS@" value="${group.objectclass}"/><br/>
+ 2. group protocol attribute name:<br/>
+ <replace file="${dst.bootstrap.conf}
+ <p>" token="@GROUP_PROTOCOL@" value="$</p>
+ {group.protocol}
+ <p>"/><br/>
+ 3. grop props attribute name: <br/>
+ <replace file="$</p>
+ {dst.bootstrap.conf}
+ <p>" token="@GROUP_PROPERTIES@" value="$</p>
+ {group.properties}
+ <p>"/></p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-135 -->
+<!-- =========================================================================================================== -->
+<table id="FC-135" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-135] <a href="https://fortress.atlassian.net/browse/FC-135">add objectId to accel checkAccess</a>
+ <span class="subText">Created: 26/Jun/14 Updated: 26/Jun/14 Resolved: 26/Jun/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14404-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/RA-22"><strike>RA-22</strike></a></td>
+ <td>Add ObjectId to checkAccess request</td>
+ <td>Done</td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/RA-26"><strike>RA-26</strike></a></td>
+ <td>add objectId to accelerator checkAcce...</td>
+ <td>Done</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea"><p>Add objectId support to RBAC accelerator checkAccess operation.</p><br/></td>
+ </tr>
+</table>
+<br/>
+
+<!-- =========================================================================================================== -->
+<!-- FC-136 -->
+<!-- =========================================================================================================== -->
+<table id="FC-136" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-136] <a href="https://fortress.atlassian.net/browse/FC-136">Add sessionRoles to AccelMgr</a>
+ <span class="subText">Created: 29/Jun/14 Updated: 05/Jul/14 Resolved: 05/Jul/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<br />
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14408-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/RA-24"><strike>RA-24</strike></a></td>
+ <td>create sessionRoles operations - java...</td>
+ <td>Done</td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/RA-27"><strike>RA-27</strike></a></td>
+ <td>create sessionRoles operations - server</td>
+ <td>Done</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Add the sessionRoles method to AccelMgr interface. This calls the accelerator sessionRoles extended operation.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-137 -->
+<!-- =========================================================================================================== -->
+<table id="FC-137" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-137] <a href="https://fortress.atlassian.net/browse/FC-137">Add description to Permission entity</a>
+ <span class="subText">Created: 29/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14409-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%" valign="top"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top" class="noPadding">
+ <table cellpadding="0" cellspacing="0" border="0" width="100%" class="blank">
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br/></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td>
+ <a href="https://fortress.atlassian.net/browse/RA-25">RA-25</a></td><td>create sessionPermissions operation</td><t>To Do
+ <td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Permission names can be terse thus hard to understand what they mean during setup.</p>
+ <p>The description field will allow users of the system to place human readable permission names onto these entities. This label can then be shown on administrative interfaces to help the user understand what they granting.</p>
+ <p>For example permission:</p>
+ <p>objNm : customer<br/>
+ opNm : read<br/>
+ description : allow user to inquire the customer record</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Comments</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%" class="grid" style="margin: 0;">
+ <tr id="comment-header-12502">
+ <td bgcolor="#f0f0f0">
+ Comment by Shawn McKinney [Administrator]<font size="-2">[<font color="#336699">29/Jun/14</font>]</font>
+ </td>
+ </tr>
+ <tr id="comment-body-12502">
+ <td bgcolor="#ffffff">
+ <p>The description must be added before the sessionPermissions extended operation can be completed.</p>
+ </td>
+ </tr>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-138 -->
+<!-- =========================================================================================================== -->
+<table id="FC-138" class="tableBorder" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" width="100%" colspan="2" valign="top">
+ <h3 class="formtitle">
+ [FC-138] <a href="https://fortress.atlassian.net/browse/FC-138">Remove public default constructors from DAOs</a>
+ <span class="subText">Created: 29/Jun/14 Updated: 29/Jun/14 Resolved: 29/Jun/14</span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%"><a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a></td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >
+ Task
+ </td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap>Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" >Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="30%" >Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%" nowrap>0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14410-value" class="value" bgcolor="#ffffff" valign="top" colspan="3" nowrap>None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td bgcolor="#ffffff" valign="top" nowrap width="80%" colspan="3">Not Specified</td>
+ </tr>
+</table>
+<table class="grid" cellpadding="0" cellspacing="0" border="0" width="100%">
+</table>
+<table cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
+ <tr>
+ <td bgcolor="#bbbbbb" width="1%" nowrap align="center"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+</table>
+<table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tr>
+ <td id="descriptionArea">
+ <p>Was originally intent as package private default constructors to prevent outside classes from constructions. With a move towards pluggable DAO impl's (unbound and apache), this is no longer possible to do because fortress dependent classes ('P' objects) reside in a separate package.</p>
+ <br/>
+ </td>
+ </tr>
+</table>
+</br>
+<!-- =========================================================================================================== -->
+<!-- FC-139 -->
+<!-- =========================================================================================================== -->
+<table id="FC-139" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-139] <a href="https://fortress.atlassian.net/browse/FC-139">AcceleratorDAO CheckAccess sending empty objectId in request</a>
+ <span class="subText">
+ <font size="-2">Created: 30/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14</font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea"><p>The objectId should not be encoded in request if empty.</p><br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-140 -->
+<!-- =========================================================================================================== -->
+<table id="FC-140" class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-140] <a href="https://fortress.atlassian.net/browse/FC-140">RBAC Overlay DB dir not setup</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 30/Jun/14 Updated: 30/Jun/14 Resolved: 30/Jun/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea"><p>correct RBAC accelerator setup to create RBAC db.</p><br></td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-141 -->
+<!-- =========================================================================================================== -->
+<table id="FC-141" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-141] <a href="https://fortress.atlassian.net/browse/FC-141">RC38 Release</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 05/Jul/14 Updated: 05/Jul/14 Resolved: 05/Jul/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC37</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14503-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-142 -->
+<!-- =========================================================================================================== -->
+<table id="FC-142" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-142] <a href="https://fortress.atlassian.net/browse/FC-142">RC38 Cleanup</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 06/Jul/14 Updated: 06/Jul/14 Resolved: 06/Jul/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC38</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>None</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+<tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14507-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-143 -->
+<!-- =========================================================================================================== -->
+<table id="FC-143" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-143] <a href="https://fortress.atlassian.net/browse/FC-143">Add SSL to Unbound connection pool</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 02/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC38</td></tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14700-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None
+ </td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
+ <td class="noPadding" bgcolor="#ffffff" valign="top">
+ <table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/SEN-24"><strike>SEN-24</strike></a></td>
+ <td>Add SSL to Unbound connection pool</td>
+ <td>Resolved</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea"><p>Update unbound connection pool to support SSL</p><br></td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-144 -->
+<!-- =========================================================================================================== -->
+<table id="FC-144" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-144] <a href="https://fortress.atlassian.net/browse/FC-144">Add Tomcat SSL to demo</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
+ <td class="noPadding" bgcolor="#ffffff" valign="top">
+ <table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/FC-145"><strike>FC-145</strike></a></td>
+ <td>Add SSL to REST client</td>
+ <td>Resolved</td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/SEN-25"><strike>SEN-25</strike></a></td>
+ <td>Add Tomcat SSL to demo</td>
+ <td>Resolved</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-145 -->
+<!-- =========================================================================================================== -->
+<table id="FC-145" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-145] <a href="https://fortress.atlassian.net/browse/FC-145">Add SSL to REST client</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">New Feature</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
+ <td class="noPadding" bgcolor="#ffffff" valign="top">
+ <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/FC-144"><strike>FC-144</strike> </td>
+ <td>Add Tomcat SSL to demo</td>
+ <td>Resolved</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+</tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea"><p>Add capability for Fortress REST client to connect SSL with EnMasse Server</p><br></td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-146 -->
+<!-- =========================================================================================================== -->
+<table id="FC-146" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-146] <a href="https://fortress.atlassian.net/browse/FC-146">RC39 Release</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 09/Aug/14 Updated: 09/Aug/14 Resolved: 09/Aug/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC38</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-147 -->
+<!-- =========================================================================================================== -->
+<table id="FC-147" border="0" width="100%" cellpadding="0" cellspacing="0">
+<tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-147] <a href="https://fortress.atlassian.net/browse/FC-147">RC39 Cleanup</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 11/Aug/14 Updated: 11/Aug/14 Resolved: 11/Aug/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC40</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-14810-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-148 -->
+<!-- =========================================================================================================== -->
+<table id="FC-148" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-148] <a href="https://fortress.atlassian.net/browse/FC-148">Extend password max age for demo users</a>
+ <span class="subText">
+ <font size="-2">
+ Created: 05/Sep/14 Updated: 05/Sep/14 Resolved: 05/Sep/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC40</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Task</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>extend to: maxAge="7776000"</p>
+ <br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-149 -->
+<!-- =========================================================================================================== -->
+<table id="FC-149" align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%"> <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>Bug fixes and enhancements to apache DAO modules in preparation for unbound replacement.</p><br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table class="tableBorder" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3 class="formtitle">
+ [FC-149] <a href="https://fortress.atlassian.net/browse/FC-149">AuditMgr.getUserAuthZs incorrectly handles failures</a>
+ <span class="subText">
+ <font size="-2"
+ Created: 18/Sep/14 Updated: 18/Sep/14 Resolved: 18/Sep/14
+ </font>
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Resolved</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC40</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Fixed</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-15100-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top">
+ <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td>
+ <a href="https://fortress.atlassian.net/browse/COM-115"><strike>COM-115</strike></a>
+ </td>
+ <td>Audit AuthZ lists all as failures</td>
+ <td>Resolved</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Description</b></font> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>getUserAuthZs does not work in terms of success or failure. Need to remap:</p>
+ <p>Use:<br>
+ private static final String REQASSERTION = "reqAssertion";</p>
+ <p>field in auditCompare objectclass. It will contain the following if authorization failed:<br>
+ attributeValue = "AuthZ Failed";</p>
+ <p>Change the DAO method to compare to the attributeValue and if true, set success to false, otherwise set success to true.</p>
+ <br>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-150 -->
+<!-- =========================================================================================================== -->
+<table id="FC-150" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3>
+ [FC-150] <a href="https://fortress.atlassian.net/browse/FC-150">AuditMgr.getUserAuthZ cannot pull back faileOnly</a>
+ <span><fot size="-2">Created: 18/Sep/14 Updated: 18/Sep/14</font></span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Status:</b></td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%"><b>Project:</b></td>
+ <td width="80%">Fortress Core</td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC40</td>
+ </tr>
+ </tbody>
+</table>
+<table class="grid" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Bug</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-15102-value" class="value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Issue Links:</b></td>
+ <td bgcolor="#ffffff" valign="top">
+ <table class="blank" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="4" bgcolor="#f0f0f0"><b>Relates</b><br></td>
+ </tr>
+ <tr>
+ <td>relates to</td>
+ <td><a href="https://fortress.atlassian.net/browse/COM-116">COM-116</a></td>
+ <td>Disable the audit authZ list failedOn...</td>
+ <td>Open</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table align="center" border="0" width="100%" cellpadding="2" cellspacing="0">
+ <tbody>
+ <tr>
+ <td align="center" bgcolor="#bbbbbb" nowrap="" width="1%">
+ <font color="#ffffff"><b>Description</b></font>
+ </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td id="descriptionArea">
+ <p>This search filter:</p>
+ <p>filter += "(" + REQASSERTION + "=" + GlobalIds.AUTH_Z_FAILED_VALUE + ")";</p>
+ <p>in AuditDAO.getAllAuthZs does not work. It appears the reqAssertion attribute cannot be searched on within the auditCompare object class. Have tested with ldapbrowser and does not pull back entries. Will need to come up with a work around.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<br>
+
+<!-- =========================================================================================================== -->
+<!-- FC-151 -->
+<!-- =========================================================================================================== -->
+<TABLE id="FC-151" border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td colspan="2" bgcolor="#f0f0f0" valign="top" width="100%">
+ <h3>
+ [FC-151] <a href="https://fortress.atlassian.net/browse/FC-151">UnboundID SDK removal preparations</a>
+ <span>
+ Created: 19/Oct/14 Updated: 19/Oct/14
+ </span>
+ </h3>
+ </td>
+ </tr>
+ <tr>
+ <td width="20%">
+ <b>Status:</b>
+ </td>
+ <td width="80%">Open</td>
+ </tr>
+ <tr>
+ <td width="20%">
+ <b>Project:</b>
+ </td>
+ <td width="80%">
+ <a href="https://fortress.atlassian.net/secure/BrowseProject.jspa?id=10000">Fortress Core</a>
+ </td>
+ </tr>
+ <tr>
+ <td><b>Component/s:</b></td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><b>Affects Version/s:</b></td>
+ <td>1.0-RC39</td>
+ </td>
+ </tr>
+ <tr>
+ <td><b>Fix Version/s:</b></td>
+ <td>1.0-RC40</td>
+ </tr>
+ </tbody>
+</table>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Type:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Improvement</td>
+ <td bgcolor="#f0f0f0"><b>Priority:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top">Major</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" valign="top" width="20%"><b>Reporter:</b></td>
+ <td bgcolor="#ffffff" valign="top" width="30%">Shawn McKinney [Administrator]</a></td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Assignee:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Shawn McKinney [Administrator]</a></td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Resolution:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">Unresolved</td>
+ <td bgcolor="#f0f0f0" width="20%"><b>Votes:</b></td>
+ <td bgcolor="#ffffff" nowrap="" valign="top" width="30%">0</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Labels:</b></td>
+ <td id="labels-15200-value" colspan="3" bgcolor="#ffffff" nowrap="" valign="top">None</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Remaining Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Time Spent:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ <tr>
+ <td bgcolor="#f0f0f0" width="20%"><b>Original Estimate:</b></td>
+ <td colspan="3" bgcolor="#ffffff" nowrap="" valign="top" width="80%">Not Specified</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/source/fortress/news.md b/source/fortress/news.md
new file mode 100644
index 0000000..36fd694
--- /dev/null
+++ b/source/fortress/news.md
@@ -0,0 +1,139 @@
+---
+title: News
+---
+
+# Fortress News
+
+
+<h2 class="news">Apache Fortress 2.0.5 Released <em>posted on May 26th, 2020</em></h2>
+
+The Apache Directory Project announces the twelfth release of Fortress - 2.0.5.
+
+This maintenance release contains the following bug fixes and enhancements:
+
+ * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12348279">Fortress 2.0.5 Release Notes</a>
+
+<h2 class="news">Apache Fortress 2.0.4 Released <em>posted on December 13th, 2019</em></h2>
+
+The Apache Directory Project announces the eleventh release of Fortress - 2.0.4.
+
+This maintenance release contains many bug fixes and enhancements.
+
+ * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12344368">Fortress 2.0.4 JIRA Release Notes</a>
+
+<h2 class="news">Apache Fortress 2.0.3 Released <em>posted on November 12th, 2018</em></h2>
+
+The Apache Directory Project announces the tenth release of Fortress - 2.0.3.
+
+This maintenance release contains two new Access Manager APIs, support of JSON and bug fixes.
+
+The Release notes:
+
+ * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12344047">Fortress 2.0.3 JIRA Release Notes</a>
+
+Trying Apache Fortress with ApacheDS and/or OpenLDAP Quickstarts is like having training wheels for LDAP:
+
+ * <a href="https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md">Readme Docker ApacheDS</a>
+ * <a href="https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md">Readme Docker OpenLDAP</a>
+
+<h2 class="news">Apache Fortress 2.0.2 Released <em>posted on September 12th, 2018</em></h2>
+
+The Apache Directory Project announces the ninth release of Fortress - 2.0.2.
+
+This maintenance release contains enhanced coverage for Attribute-Based Access Control.
+
+ * <a href="https://issues.apache.org/jira/browse/FC-239">[FC-239]</a> - Some additional methods to manage role constraints.
+
+The Release notes:
+
+ * <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12343768">Fortress 2.0.2 JIRA Release Notes</a>
+
+<h2 class="news">Apache Fortress 2.0.1 Released <em>posted on July 20th, 2018</em></h2>
+
+The Apache Directory Project announces the eighth release of Fortress - 2.0.1.
+
+New features include
+
+ * <a href="https://issues.apache.org/jira/browse/FC-108">[FC-108]</a> - Unix RFC2307bis posixAccount (User) and posixGroup (Role) auxiliary object classes.
+ * <a href="https://issues.apache.org/jira/browse/FC-235">[FC-235]</a> - Enforcement of arbitrary constraints during role activation with dynamic attributes like location, organization and account.
+
+The Release notes have the complete list of 21 fixes and enchancements: <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315921&version=12338782">2.0.1 JIRA Release Notes</a>
+
+<h2 class="news">Apache Fortress 2.0.0 Released <em>posted on June 26th, 2017</em></h2>
+
+The Apache Directory Project announces the seventh release of Fortress - 2.0.0 GA. This major release requires Java version 8. It adds formal support of ApacheDS giving full IETF password policy coverage for both it and OpenLDAP. There are Docker images preconfigured with Apache DS & OpenLDAP for rapid deployment and testing.
+
+
+<h2 class="news">Apache Fortress 2.0.0 Released <em>posted on June 26th, 2017</em></h2>
+
+The Apache Directory Project announces the seventh release of Fortress - 2.0.0 GA. This major release requires Java version 8. It adds formal support of ApacheDS giving full IETF password policy coverage for both it and OpenLDAP. There are Docker images preconfigured with Apache DS & OpenLDAP for rapid deployment and testing.
+
+Apache Fortress 2.0.0 enhancements include:
+
+ * Java 8 requirement
+ * Usage of Apache LDAP API v1.0.0
+ * FC-209 Missing object classes when create permission attribute and sets
+ * FC-210 Programtically determine which methods have ARBAC checks
+ * FC-211 Support ApacheDS password policies
+ * FC-212 ApacheDS in Docker
+
+The report pulled from JIRA: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0 resolved issues</a>
+
+<h2 class="news">Apache Fortress 2.0.0-RC2 Released <em>posted on May 4th, 2017</em></h2>
+
+The Apache Directory Project announces the sixth release of Fortress. This is a minor release, the second release candidate for a 2.0 GA and includes a move to require Java version 8. There are a number of other enhancements:
+
+ * FC-201 jgrapht 1.0.0 requires Java 8
+ * FC-202 dir-fortress-core-docker-test to use latest slapd install procs
+ * FC-203 propmr modifiers
+
+The complete list: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0-RC2%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0-RC2 resolved issues</a>
+
+<h2 class="news">Apache Fortress 2.0.0-RC1 Released <em>posted on November 7th, 2016</em></h2>
+
+The Apache Directory Project announces the fifth release of Fortress. This major revision has a couple of changes that have broken backward compatibility with 1.x:
+
+ * FC-183 Use Apache IANA Number of OID - The LDAP schema uses the Apache Directory's IANA base number instead of the one from JoshuaTree. Requires updating existing fortress impls to upgrade schema using latest
+ * FC-194 Change password representation from a char[] to a String. Applies to all methods using a password in the arguments. If using the fortress-realm, ensure the tomcat instance has the latest proxy jar also.
+
+Some other major enhancements include:
+
+ * FC-144 - Ability to assign groups to roles
+ * FC-116 - Need the ability to get user specific attributes for fine grained access determinations
+ * FC-181 - Multitenancy for Realm and Web
+
+The complete list: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20FC%20AND%20fixVersion%20%3D%202.0.0-RC1%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC">2.0.0-RC1 resolved issues</a>
+
+<h2 class="news">Apache Fortress 1.0.1 Released <em>posted on July 22nd, 2016</em></h2>
+
+The Apache Directory Project announces the fourth release of Fortress.
+
+This maintenance release includes the following enhancements:
+
+ * Fortress Core use of a non-static configurator
+ * Fortress Core to use the Apache LDAP API 1.0.0-RC1
+ * Fortress Rest to use Apache CXF 3.1.6 and Spring 4.3.1
+ * Fortress Web to use Apache Wicket 7.3.0 and Spring 4.3.1
+
+<h2 class="news">Apache Fortress 1.0.0 Released <em>posted on April 15th, 2016</em></h2>
+
+The Apache Directory Project announces the third release of Fortress which provides role-based access control, delegated administration and password policies using LDAP servers like ApacheDS and OpenLDAP.
+
+<h2 class="news">Apache Fortress 1.0-RC42 Released <em>posted on March 28th, 2016</em></h2>
+
+The Apache Directory Project announces the second release of Fortress which includes the Core, Realm, Rest and Web components.
+
+Dozens of features and bug fixes have been added since the last release.
+ * [JIRA Report for fix version 1.0-RC42](https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%201.0.0-RC42%20%20AND%20project%20%3D%20FC)
+
+This is the first time we've released other packages of Realm, Rest and Web components. A 1.0 GA release will follow in coming weeks.
+
+<h2 class="news">Apache Fortress Core 1.0-RC40 released ! <em>posted on April 15th, 2015</em></h2>
+
+The Apache Directory Project is proud to announce the very first release of Fortress Core, the core library of the Fortress project.
+
+<h2 class="news">Apache Fortress Added as a sub-project of Apache Directory <em>posted on October 25th, 2014</em></h2>
+
+The Apache Directory Team is proud to announce the addition of the Apache Fortress project as a sub-project.
+
+Apache Fortress provides an RBAC management and enforcement system that builds on existing open source applications like ApacheDS, OpenLDAP and Apache Tomcat.
diff --git a/source/fortress/overview.md b/source/fortress/overview.md
new file mode 100644
index 0000000..33b6603
--- /dev/null
+++ b/source/fortress/overview.md
@@ -0,0 +1,120 @@
+---
+title: Fortress Overview
+---
+
+# Apache Fortress Overview
+
+FORTRESS is a standards-based authorization system, that provides role-based access control, delegated administration and password policy services using an LDAP backend.
+
+## What's in it?
+
+Included are the following components:
+
+* Core - Java Authorization SDK
+* Realm - Java EE security for Apache Tomcat
+* Rest - HTTP protocol wrappers for the APIs using Apache CXF
+* Web - HTML pages and framework for the APIs using Apache Wicket
+
+It's released under terms of the Apache License 2.0.
+
+## How Does It Work?
+
+Fortress is a Role-Based Access Control security system. It uses a directory server to store the information about users, roles, permissions, etc. Out-of-the-box it supports either ApacheDS or OpenLDAP servers but works with any LDAPv3 compliant system.
+
+To learn how to install, setup and configure with either of the supported servers, check out the quickstarts:
+
+* [QUICKSTARTS](installation.html)
+
+## Other Guides
+
+### API usage
+Probably the best place to start is the javadoc. To understand how RBAC works, look at the interfaces like AccessMgr, AdminMgr and ReviewMgr. For ARBAC add 'Del' to the name - for delegated. DelAdminMgr, DelAccessMgr, etc. For password policies, PwPolicyMgr.
+
+### Configuration
+Next is to understand how the runtime works. As you might expect, Fortress requires a large number of parameters that bind it to a runtime environment. For example the LDAP server's coordinates, hostname, port, suffix, service account credentials and more. The configuration subsystem pulls these parameters from a variety of locations.
+
+* [README-CONFIG.md](https://github.com/apache/directory-fortress-core/blob/master/README-CONFIG.md) - How the Fortress Config subsystem works
+
+### Multitenancy
+The Fortress APIs and data storage is fully multitenant. To understand how that works.
+
+* [README-MULTITENANCY.md](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md) - How Fortress Multitenancy works
+
+## What technologies at play?
+
+Fortress products run on open system hardware and software platforms supporting LDAPv3, HTTP & Java.
+
+## What standards apply?
+
+The following standards are implemented...
+
+### ANSI Role-Based Access Control (INCITS 359)
+
+There is more to RBAC than assigning users to groups and applying ACL policies within directories or databases. [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) systems provide selective Role activation/deactivation, role hierarchies, and constraints over separation of duty. The [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) component provides APIs to add, update, delete, and search the directory data
+
+More info can be found on [Intro to ANSI RBAC Page](user-guide/1-intro-rbac.html)
+
+### [Java EE Platform](http://java.net/projects/javaee-spec/pages/Home) (tm) Security
+
+Used for SSL, X.509 mutual authentication, form-based container authentication, authorization and SSO. Works within compliant Java Web apps like Fortress Rest and Web.
+
+### Administrative Role-Based Access Control ([ARBAC02](http://profsandhu.com/journals/tissec/p113-oh.pdf))
+
+The ARBAC model explains how [RBAC](http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf) can be extended with organizational controls to govern policies regarding the security administration process. ARBAC helps by allowing administrative tasks be delegated to end users who fall outside typical datacenter operations.
+
+### IETF Password Policies
+
+Fortress fully supports password policies of both ApacheDS and OpenLDAP. It adds by integrating with its administrative and access control APIs. These APIs enable outside apps to participate and manipulate OpenLDAP password policies without understanding the specifics of how they work. Fortress provides services for setting up new policies and ensuring password policies are tracked and enforced across all avenues.
+
+### Auditing
+
+Fortress audits use OpenLDAP's slapd access log overlay.
+
+The Fortress audits rely on slapd events to track its data exchanges performed within its own APIs. Change event tracking includes adds, updates, and deletes of Fortress entities. Read and search events tracked include user authentication, authorization, and policy interrogations. Full historical data change tracking is maintained and may be searched later with APIs to be used for monitoring, reporting, and undo. The log may be retrieved later to synch with outside database for long-term regulatory and compliance concerns.
+
+### Temporal Constraints
+
+The Fortress Temporal model allows Users and Roles to carry time and date Constraints which govern when activations may occur. Role constraints are checked on every call into Fortress. The user constraint applied only at session creation.
+
+### ANSI RBAC Policy-Enhanced (INCITS-494-2012)
+
+One day.
+
+## What services are available?
+
+Over one hundred services divided across the Manager components.
+
+A description of these managers follow along with their associated javadoc links that describe the apis...
+
+###RBAC Managers
+
+* [AccessMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AccessMgr.html) - Performs runtime access control operations on objects that are provisioned RBAC entities that reside in LDAP directory.
+* [AdminMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AdminMgr.html) - Performs administrative functions to provision Fortress RBAC entities into the LDAP directory.
+* [ReviewMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/ReviewMgr.html) - The review functions on RBAC entities in LDAP.
+
+###ARBAC Managers
+
+* [DelAccessMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelAccessMgr.html) - Runtime delegated access control operations on objects that are provisioned Fortress ARBAC entities that reside in LDAP.
+* [DelAdminMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelAdminMgr.html) - Policy administration of Fortress ARBAC entities in LDAP.
+* [DelReviewMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/DelReviewMgr.html) - Policy review ops of ARBAC entities in LDAP.
+
+###PW Policies Manager
+
+* [PwPolicyMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/PwPolicyMgr.html) - Used to perform admin and review functions on the PWPOLICIES data sets.
+
+###Audit Manager
+
+* [AuditMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/AuditMgr.html) - Methods used to search OpenLDAP's slapd access log for fortress events.
+
+###Config Manager
+
+* [ConfigMgr.html](https://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/ConfigMgr.html) - CRUD methods used to manage properties stored within LDAP.
+
+## Where is it?
+
+Source is managed by Apache's GIT repo:
+
+* [Fortress Core](https://gitbox.apache.org/repos/asf/directory-fortress-core.git)
+* [Fortress Web](https://gitbox.apache.org/repos/asf/directory-fortress-commander.git)
+* [Fortress Rest](https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git)
+* [Fortress Realm](https://gitbox.apache.org/repos/asf/directory-fortress-realm.git)
diff --git a/source/fortress/testimonials.md b/source/fortress/testimonials.md
new file mode 100644
index 0000000..29d9f26
--- /dev/null
+++ b/source/fortress/testimonials.md
@@ -0,0 +1,405 @@
+---
+title: Testimonials
+---
+
+# Testimonials
+
+## Credits
+This work was contributed by Yudhi Karunia Surtan of PT. Global Digital Niaga (blibli.com). Thanks to him and his team for their efforts in helping others use Fortress.
+
+## Introduction
+
+This document contains an overview for combining a CAS-based SSO module with fortress-based authorization, using a declarative URL filtering mechanism.
+
+###Detailed description of the project
+
+I created this solution a few years ago because at the time I was looking for an IAM and SSO solution, and there were no open source solutions that provided everything that I needed.
+
+Basically, the idea was, I needed a framework where the developer didn't have to programmatically add authorization calls to their code, or use annotations, or any other kind of *if condition* statement. With this solution, I can have a declarative mechanism that is still capable of making advanced dynamic authorization decisions, even if the user hasn't been logged in before or has any of the proper roles activated to their session. I can do this because I control the authorization and it has been centralized in the server, and that server can activate whatever user roles needed to to allow access to the runtime environment.
+
+I searched all available open source solutions and finally decided to combine Apereo CAS and Apache Fortress into a single solution. Apereo CAS does the authentication and Apache Fortress will handle authorization.
+
+I went this route because Apereo CAS is very good way to handle the Single Sign-On and Single Sign-Out problems, but it lacks authorization capabilities, because there aren't standardized solutions in that space yet. Apache Fortress is good at authorization because it uses standard RBAC. However, Apache Fortress doesn't have an SSO solution yet. That is why I think both should be combined because they complement each other. Unfortunately, there aren't yet good documentation resources available to combine these which is why I created this one, so other developers can follow my team's lead and make their life easier by providing good security for their webapps.
+
+The solution I present to you here has operated successfully inside production environments since 2015 and so it's quite mature. I write this how-to document to explain how it works. It's intended as a guide for you to follow as well.
+
+Here are the technology stacks used within my extended framework:
+
+ * Apereo CAS -> 4.2.x
+ * Apache Fortress Enmasse (rest) -> 1.0.0
+ * Apache Fortress Proxy -> 1.0.0
+ * Apache Ignite -> 1.7.0
+ * Spring Framework -> 4.2.x-RELEASE
+
+There are two areas of development focus. One to handle the server side and the other for the client. The client is shared with my dev team for managing security within their web applications.
+
+ 1. CAS Server side development: Includes creating own implementation for AbstractUsernamePasswordAuthenticationHandler and implemening an Apache Ignite Service Registry for CAS
+ 2. CAS Client side development: Includes create own implementation for WebExpressionVoter and CasAuthenticationProvider
+
+## Code Descriptions
+
+The following sections contain code and xml snippets describing how the CAS and Fortress integration was accomplished.
+
+###Server side development:
+
+####1. The Authentication Handler
+
+ The interesting part for this solution is how to maintain both the Apereo CAS and Apache Fortress sessions. Luckily, CAS is using a token for maintaining their session and that token is also designed to have some extended attributes included with it. Using this knowledge, we can modify the profile given by CAS Server to the client. Let's have a look what I've done with combining the Apereo CAS and Apache Fortress sessions in the code that follows.
+
+ :::Java
+
+ /*
+ * Copyright 2017 to PT. Global Digital Niaga(Blibli.com)
+ *
+ * Licensed under the Apache License, Version 2.0; you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+ package com.gdn.iam.cas;
+
+ import java.io.StringWriter;
+ import java.security.GeneralSecurityException;
+ import java.util.HashMap;
+ import java.util.Map;
+
+ import javax.xml.bind.JAXBContext;
+ import javax.xml.bind.JAXBException;
+ import javax.xml.bind.Marshaller;
+
+ import org.apache.directory.fortress.core.AccessMgr;
+ import org.apache.directory.fortress.core.model.Session;
+ import org.apache.directory.fortress.core.model.User;
+ import org.jasig.cas.authentication.HandlerResult;
+ import org.jasig.cas.authentication.PreventedException;
+ import org.jasig.cas.authentication.UsernamePasswordCredential;
+ import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+
+ public class IamAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler {
+
+ private static final Logger LOG = LoggerFactory.getLogger(IamAuthenticationHandler.class);
+
+ private AccessMgr accessManager;
+ private JAXBContext jaxbContext;
+ private Marshaller marshaller;
+
+ public IamAuthenticationHandler() {
+ try {
+ jaxbContext = JAXBContext.newInstance(Session.class);
+ marshaller = jaxbContext.createMarshaller();
+ } catch (JAXBException e) {
+ LOG.error("cannot bind Session with jaxb context", e);
+ }
+ }
+
+ @Override
+ protected HandlerResult authenticateUsernamePasswordInternal(
+ UsernamePasswordCredential usernamePasswordCredential)
+ throws GeneralSecurityException, PreventedException {
+ String username = usernamePasswordCredential.getUsername();
+ String password = usernamePasswordCredential.getPassword();
+ Session iamSession = null;
+ String iamXmlSession = null;
+ try {
+ LOG.trace("trying to authenticate username : {}, password : {}",
+ new Object[] {username, password});
+ iamSession = accessManager.createSession(new User(username, password.toCharArray()), false);
+ LOG.trace("iam session : {}", iamSession);
+ if (iamSession != null) {
+ StringWriter writer = new StringWriter();
+ marshaller.marshal(iamSession, writer);
+ iamXmlSession = writer.toString();
+ LOG.trace("iam xml session : {}", iamXmlSession);
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put("iamSession", iamXmlSession);
+ return createHandlerResult(usernamePasswordCredential,
+ principalFactory.createPrincipal(username, attributes), null);
+ }
+ } catch (org.apache.directory.fortress.core.SecurityException e) {
+ String errorMessage = "IAM authentication failed for [" + username + "]";
+ LOG.trace(errorMessage);
+ throw new GeneralSecurityException(errorMessage);
+ } catch (JAXBException e) {
+ String errorMessage = "cannot marshalling session with value : " + iamSession == null ? "null"
+ : iamSession.toString();
+ LOG.trace(errorMessage);
+ throw new GeneralSecurityException(errorMessage);
+ }
+ LOG.trace("returning default handler");
+ return createHandlerResult(usernamePasswordCredential,
+ principalFactory.createPrincipal(username), null);
+ }
+
+ public AccessMgr getAccessManager() {
+ return accessManager;
+ }
+
+ public void setAccessManager(AccessMgr accessManager) {
+ this.accessManager = accessManager;
+ }
+
+ }
+
+
+ In the above source code you can see how I construct a new principal by creating a new attribute map with values contained withing the Apache Fortress Session xml.
+
+#### 2. The Attribute Populator
+
+ In order to populate fortress and pass it on to the client we need to override the casServiceValidationSuccess.jsp file, located at WEB-INF/view/jsp/protocol/2.0/, since its default view won't populating the necessary attributes. Here is how I was able to accomplish that:
+
+ :::XML
+
+ <%@ page session="false" contentType="application/xml; charset=UTF-8" %>
+ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+ <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
+ <!-- cas 2 validation success -->
+ <cas:authenticationSuccess>
+ <cas:user>${fn:escapeXml(assertion.primaryAuthentication.principal.id)}</cas:user>
+ <c:if test="${not empty assertion.primaryAuthentication.principal.attributes}">
+ <cas:attributes>
+ <c:forEach var="attr" items="${assertion.primaryAuthentication.principal.attributes}" >
+ <cas:${fn:escapeXml(attr.key)}><![CDATA[${attr.value}]]></cas:${fn:escapeXml(attr.key)}>
+ </c:forEach>
+ </cas:attributes>
+ </c:if>
+ <c:if test="${not empty pgtIou}">
+ <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
+ </c:if>
+ <c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
+ <cas:proxies>
+ <c:forEach var="proxy" items="${assertion.chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
+ <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
+ </c:forEach>
+ </cas:proxies>
+ </c:if>
+ </cas:authenticationSuccess>
+ </cas:serviceResponse>
+
+One thing that I love about CAS, even if you correctly extracted the attribute at this page (or maybe you just got hacked at this page), CAS is able to protect the returned attributes by changing the services registry configuration. see the HTTPSandIMAPS-10000001.json file. I’ve put ReturnAllAttributeReleasePolicy type for debuging all the attributes returned, you can change it later to make your application more secure as well.
+
+####3. Apache Ignite For Ticket Replication
+
+ To have a production readiness we need to somehow manage a high availability requirement, so we're not just using a single cas server. That is why we needed to have a centralized or distributed ticket repository, to allow cas to scale. To scale the ticket repository, I chose Apache Ignite for distributing the tickets. To Implement is very simple, and is also written about in Apereo CAS documentation.
+
+###Client side development:
+
+####1. The Spring Voter
+
+ Spring is a great framework, they allow you to add your own interceptors to use your own implementation. WebExpressionVoter is the class you need to extend in order to override the normal spring decision mechanism. Usually you will use xml + regex for registering the condition. However, xml + regex is not the approach I wanted for my development team. See below code snippet, to understand what I did to make this more dynamic.
+
+ :::Java
+ @Override
+ @SuppressWarnings("static-access")
+ public int vote(Authentication authentication, FilterInvocation fi,
+ Collection<ConfigAttribute> attributes) {
+ Authentication securityContextAuthentication =
+ SecurityContextHolder.getContext().getAuthentication();
+ int result = super.vote(securityContextAuthentication, fi, attributes);
+ if (System.getenv(IAM_SECURITY_PARAMETER) != null) {
+ LOG.warn("iam security is disable, enable all access mode is enable");
+ return result;
+ } else {
+ LOG.debug("authentication = {}",
+ ToStringBuilder.reflectionToString(securityContextAuthentication));
+ LOG.debug("super vote for : {}", result);
+ if (super.ACCESS_GRANTED == result) {
+ String requestMethod = fi.getRequest().getMethod().toLowerCase();
+ String filterUrl = getFilterUrl(fi.getHttpRequest());
+ if (filterUrl == null) {
+ return result;
+ }
+ try {
+ CasAuthenticationToken casAuthenticationToken =
+ ((CasAuthenticationToken) securityContextAuthentication);
+ LOG.debug("assertion : {}",
+ ToStringBuilder.reflectionToString(casAuthenticationToken.getAssertion()));
+ String iamSessionXml = (String) casAuthenticationToken.getAssertion().getAttributes()
+ .get(IAM_SESSION_ATTRIBUTE_KEY);
+ LOG.debug("iam session xml == {}", iamSessionXml);
+ Session iamSession = sessionCache.getIfPresent(casAuthenticationToken.getKeyHash());
+ if (iamSession == null) {
+ Unmarshaller unmarshaller = null;
+ try {
+ unmarshaller = context.createUnmarshaller();
+ } catch (JAXBException ex) {
+ LOG.warn("cannot create unmarshaller : ", ex);
+ }
+ iamSession = (Session) unmarshaller.unmarshal(new StringReader(iamSessionXml));
+ sessionCache.put(casAuthenticationToken.getKeyHash(), iamSession);
+ }
+ StringBuilder sessionPermissionKeyBuilder = new StringBuilder(iamSession.getSessionId()).append(filterUrl).append(requestMethod);
+ Boolean isAllowed = accessCache.getIfPresent(sessionPermissionKeyBuilder.toString());
+ if(isAllowed == null) {
+ isAllowed = accessManager.checkAccess(iamSession, new Permission(filterUrl, requestMethod));
+ accessCache.put(sessionPermissionKeyBuilder.toString(), isAllowed);
+ }
+ LOG.debug("{} is {} to access {} with method {}",
+ new Object[] {securityContextAuthentication.getName(),
+ isAllowed ? "granted" : "denied", filterUrl, requestMethod});
+ if (isAllowed) {
+ return super.ACCESS_GRANTED;
+ }
+ } catch (Exception e) {
+ LOG.error("catch exception when communicate with iam server", e);
+ }
+ }
+ return super.ACCESS_DENIED;
+ }
+ }
+
+ Yep, I'm calling fortress to check if the user is allowed to access fortress permissions or not.
+
+#####2. UserDetail Populator
+
+ Spring uses the implementation of AbstractCasAssertionUserDetailsService to populate user details following successful authentication, you can see the example at IamUserDetails code, here is the snipet of that class:
+
+ :::Java
+ @Override
+ protected UserDetails loadUserDetails(final Assertion assertion) {
+ List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
+ LOG.debug("user asssertion : {}", ToStringBuilder.reflectionToString(assertion));
+ boolean accountNonExpired = true;
+ boolean credentialsNonExpired = true;
+ boolean accountNonLocked = true;
+ boolean enabled = true;
+ for (String attribute : this.attributes) {
+ String value = (String) assertion.getPrincipal().getAttributes().get(attribute);
+ LOG.debug("value = {}", value);
+ if (value != null) {
+ LOG.debug("adding default authorization to user");
+ grantedAuthorities.add(new SimpleGrantedAuthority(ROLE_USER));
+
+ Unmarshaller unmarshaller = null;
+ Session iamSession = null;
+ try {
+ unmarshaller = context.createUnmarshaller();
+ iamSession = (Session) unmarshaller.unmarshal(new StringReader(value));
+ for (UserRole role : iamSession.getRoles()) {
+ LOG.debug("adding {} authorization to user", role.getName().toUpperCase());
+ grantedAuthorities.add(new SimpleGrantedAuthority(role.getName().toUpperCase()));
+ }
+ } catch (Exception ex) {
+ LOG.error("cannot generate user details", ex);
+ }
+ }
+ }
+ LOG.debug(
+ "accountNonExpired : {}, credentialsNonExpired : {}, accountNonLocked : {}, enabled : {}",
+ new Object[] {accountNonExpired, credentialsNonExpired, accountNonLocked, enabled});
+ return new User(assertion.getPrincipal().getName().toLowerCase().trim(), NON_EXISTENT_PASSWORD_VALUE, enabled,
+ accountNonExpired, credentialsNonExpired, accountNonLocked, grantedAuthorities);
+ }
+
+ You can change the implementation later for your needs.
+
+#####3. Network Might Be a Problem
+
+ Since this is running inside a production environment, we needed to consider that sometimes there might be a trouble over our network that causes problems and requires retries. That is why it's important to allow a little delay time in our application. Here's an example of how allow a small delay, in order to allow temorary network glitches and slowdowns to work themselves out.
+
+ :::Java
+ /*
+ * Copyright 2017 to PT. Global Digital Niaga(Blibli.com)
+ *
+ * Licensed under the Apache License, Version 2.0; you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+ package com.gdn.iam.spring.security;
+
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.security.cas.authentication.CasAuthenticationProvider;
+ import org.springframework.security.core.Authentication;
+ import org.springframework.security.core.AuthenticationException;
+
+ public class GdnCasAuthenticationProvider extends CasAuthenticationProvider {
+
+ private static transient Logger LOG = LoggerFactory.getLogger(GdnCasAuthenticationProvider.class);
+ private long sleepForDistributeTicketTime = 300;
+
+ @Override
+ public Authentication authenticate(Authentication authentication) throws AuthenticationException {
+ try {
+ LOG.trace(
+ "will try to sleep for waiting ticket to be distributed to other node, sleep time : {}",
+ getSleepForDistributeTicketTime());
+ Thread.sleep(getSleepForDistributeTicketTime());
+ } catch (InterruptedException e) {
+ LOG.error("something wrong when sleeping", e);
+ }
+ return super.authenticate(authentication);
+ }
+
+ public long getSleepForDistributeTicketTime() {
+ return sleepForDistributeTicketTime;
+ }
+
+ public void setSleepForDistributeTicketTime(long sleepForDistributeTicketTime) {
+ this.sleepForDistributeTicketTime = sleepForDistributeTicketTime;
+ }
+
+ }
+
+###Descriptions of authentication flow
+
+ The CAS authentication flow will be the same, no changes are required in terms of that authentication flow. Furthermore, you can see that flow at Apereo CAS 4.2.x documentation page.
+
+ The main difference now is we don't put the ticket registry inside an in-memory database, we put it inside an Apache Ignite cache, so when other nodes are there it can replicate the ticket between them which increases efficiencies.
+
+###Descriptions of authorization flow
+
+ Spring Security usually has the authorization role configuration inside your spring context xml file or using annotations in source. This is the only difference between plain spring security and that using my extended framework solution. We put the configuration inside of Fortress. Everytime the user changes the URL, it will check the user has access to that specific URL and not through the extended voter class. If the user is authorized then the app will give them the correct page, otherwise it will route to 40X http error status page.
+
+###Instructions to test
+
+ For testing this example, you need to understand that Apache Fortress configuration is necessary to find fortress.properties on the classpath so it might be good if you put that configuration file at the same classpath, for instance, if you are using tomcat remove all the fortress.properties inside the classes directory and put it on $TOMCAT_HOME/lib/ folder. Make sure get Apache Fortress running at the first step. Here are the detailed instructions for testing this example:
+
+####Server Section
+
+#####1. Read and find the instructions at:
+
+ * https://github.com/apache/directory-fortress-core
+ * https://github.com/apache/directory-fortress-enmasse
+ * https://github.com/apache/directory-fortress-commander
+
+ and configure your Apache Fortress properly.
+
+#####2. Clone the project from link at *Where to download* section below, change the configuration properly inside *cas-fortress-servers/src/main/resourcesz8 folder and package it using
+
+ :::Maven
+ mvn clean package.
+
+ Copy the war file from cas-fortress-server/target into the web-container deploy directory.
+
+#####3. Start your web-container and you get cas fortress integrated.
+
+####Client Section
+
+ * Simply put the war file inside the web-container deploy directory.
+ * Open and login to your commander(fortress-web)
+ * Create a user with role ROLE_USER (you can change to what ever role). The role need to align with spring-security.xml for this statement <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />. This is the mandatory role, with this role we are seperate between the anonymous role and authenticate one.
+ * Create a permission object containing your restricted url, for instance http://localhost:8080/cas-fortress-client/profile and http://localhost:8080/cas-fortress-client/catalog.
+ * Map the permission object and role at permission tab at your commander. Currently we only support get for both of the url.
+ * Start your web-container and play with your cas-fortress-client later on.
+
+###Where to download
+
+ * https://github.com/bliblidotcom/cas-fortress-example
+
+##Next Steps
+
+ Next should be implementing ARBAC solution. Since I don't allow people to create conditional statements inside their application code to check for roles, buttons or page elements that should be not accessible for specific users will appear on their pages, even they can't perform that particular action. This causes some confusion in terms or usability for my users. With ARBAC I believe I can do a whitelist for the page attributes and increase the usability for the user.
diff --git a/source/fortress/user-guide.md b/source/fortress/user-guide.md
new file mode 100644
index 0000000..b2a6597
--- /dev/null
+++ b/source/fortress/user-guide.md
@@ -0,0 +1,34 @@
+---
+title: User's Guide
+---
+
+# Fortress User's Guide
+
+This guide is primarily for people new to Fortress. It will guide through basic concepts.
+
+## About this guide
+
+Learn what RBAC is and how to download, install and configure an Apache Fortress instance using ApacheDS or OpenLDAP as the datastore. Over time we'll add documents covering more advanced topics.
+
+## Table of contents
+
+* [1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004](user-guide/1-intro-rbac.html)
+ * [1.1 - ANSI RBAC Explained](user-guide/1.1-rbac-explained.html)
+ * [1.2 - What ANSI RBAC is not](user-guide/1.2-what-is-not-rbac.html)
+ * [1.3 - What ANSI RBAC is](user-guide/1.3-what-rbac-is.html)
+ * [1.4 - Why is ANSI RBAC Important?](user-guide/1.4-why-rbac-is-important.html)
+ * [1.5 - How to implement ANSI RBAC](user-guide/1.5-how-to-impl-rbac.html)
+ * [1.6 - Where to go for more info](user-guide/1.6-go-for-more.html)
+* [2 - Multitenancy](user-guide/2-multitenancy.html)
+ * [2.1 - Fortress Multitenancy](user-guide/2.1-fortress-multitenancy.html)
+ * [2.2 - Traditional Multi-Instances architecture](user-guide/2.2-tradi-multi-instances.html)
+ * [2.3 - Multitenancy under the covers](user-guide/2.3-multitenancy-under-covers.html)
+ * [2.4 - Apache Fortress Core Multitenancy Configuration](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md)
+ * [2.5 - Apache Fortress Web Multitenancy Configuration](https://github.com/apache/directory-fortress-commander/blob/master/README-MULTITENANCY.md)
+* [3 - Fortress Configuration](user-guide/3-configuration.html)
+* 4 - Install
+ * [4.1 - Apache Fortress Core & ApacheDS QUICKSTART](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-APACHEDS.md)
+ * [4.2 - Apache Fortress Core & ApacheDS QUICKSTART on DOCKER](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-APACHEDS.md)
+ * [4.3 - Apache Fortress Core & OpenLDAP QUICKSTART](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-SLAPD.md)
+ * [4.4 - Apache Fortress Core & OpenLDAP QUICKSTART on DOCKER](https://github.com/apache/directory-fortress-core/blob/master/README-QUICKSTART-DOCKER-SLAPD.md)
+ * [4.5 - Apache Fortress Web & Tomcat QUICKSTART](https://github.com/apache/directory-fortress-commander/blob/master/README-QUICKSTART.md)
diff --git a/source/fortress/user-guide/1-intro-rbac.md b/source/fortress/user-guide/1-intro-rbac.md
new file mode 100644
index 0000000..701f00f
--- /dev/null
+++ b/source/fortress/user-guide/1-intro-rbac.md
@@ -0,0 +1,20 @@
+---
+title: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 1.1-rbac-explained.html
+navNextText: 1.1 - ANSI RBAC Explained
+---
+
+# 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+
+![ANSI RBAC Specification](images/ANSIRBAC-Spec_0.png)
+
+## Table of content
+
+* [1.1 - ANSI RBAC Explained](1.1-rbac-explained.html)
+* [1.2 - What ANSI RBAC is not](1.2-what-is-not-rbac.html)
+* [1.3 - What ANSI RBAC is](1.3-what-rbac-is.html)
+* [1.4 - Why is ANSI RBAC Important?](1.4-why-rbac-is-important.html)
+* [1.5 - How to implement ANSI RBAC](1.5-how-to-impl-rbac.html)
+* [1.6 - Where to go for more info](1.6-go-for-more.html)
diff --git a/source/fortress/user-guide/1.1-rbac-explained.md b/source/fortress/user-guide/1.1-rbac-explained.md
new file mode 100644
index 0000000..1effed8
--- /dev/null
+++ b/source/fortress/user-guide/1.1-rbac-explained.md
@@ -0,0 +1,15 @@
+---
+title: 1.1 - ANSI RBAC Explained
+navPrev: 1-intro-rbac.html
+navPrevText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 1.2-what-is-not-rbac.html
+navNextText: 1.2 - What ANSI RBAC is not
+---
+
+# 1.1 - ANSI RBAC Explained
+
+![ANSI RBAC Specification](images/ANSIRBAC-Spec_0.png)
+
+Misnomers abound as to what constitutes a working Role-Based Access Control (RBAC) system. With ANSI RBAC, Groups are not Roles and resource connections not Sessions. This paper explains what ANSI RBAC is and how it can be applied to existing problem domains. It dispels longstanding myths persistent within the enterprise. Additionally readers receive tips on how to implement their own successful RBAC program and where to go to get a fully compliant ANSI RBAC system that may be used as a reference implementation.
diff --git a/source/fortress/user-guide/1.2-what-is-not-rbac.md b/source/fortress/user-guide/1.2-what-is-not-rbac.md
new file mode 100644
index 0000000..d0778c5
--- /dev/null
+++ b/source/fortress/user-guide/1.2-what-is-not-rbac.md
@@ -0,0 +1,36 @@
+---
+title: 1.2 - What ANSI RBAC is not
+navPrev: 1.1-rbac-explained.html
+navPrevText: 1.1 - ANSI RBAC Explained
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 1.3-what-rbac-is.html
+navNextText: 1.3 - What ANSI RBAC is
+---
+
+# 1.2 - What ANSI RBAC is not
+
+* User Groups (i.e. LDAP _groupOfUniqueNames_). In RBAC, Roles are many-to-many mappings between User and Permission entities. Furthermore the assignments and grants may be interrogated, added or removed at any time. Roles should fall within a hierarchy which facilitate control over assets, encourages reuse and reduces the number of entitlements that have to be maintained.
+
+ [RFC 4519 LDAP](http://tools.ietf.org/html/rfc4519): Schema for User Applications June 2006
+
+ ( 2.5.6.17 NAME 'groupOfUniqueNames'
+ SUP top
+ STRUCTURAL
+ MUST ( uniqueMember $
+ cn )
+ MAY ( businessCategory $
+ seeAlso $
+ owner $
+ ou $
+ o $
+ description ) )
+
+ *groupOfUniqueNames is not RBAC*
+
+* Resource connections (i.e. LDAP connection). Allowing your LDAP or DB system to calculate entitlements based on user group assignments violates the concept of least privilege. RBAC compliant systems add a role activation step to signon that provides control over what a user can do at a point in time within a particular application.
+
+* User-to-Entitlement Access Control List. Bypassing roles and mapping entitlements directly to users will undermine the ability to control and determine who has access to what resources. It also makes it difficult to figure out what access needs to be granted or revoked and when.
+
+* Outdated or obsolete. Contrary to what is often told, the RBAC model is still a viable means in which to manage security within the enterprise. Employ finer-grained attribute-based or dynamic access controls as needed but ANSI RBAC is still the foundation for sound enterprise IT security strategies.
+
diff --git a/source/fortress/user-guide/1.3-what-rbac-is.md b/source/fortress/user-guide/1.3-what-rbac-is.md
new file mode 100644
index 0000000..e3d6064
--- /dev/null
+++ b/source/fortress/user-guide/1.3-what-rbac-is.md
@@ -0,0 +1,47 @@
+---
+title: 1.3 - What ANSI RBAC is
+navPrev: 1.2-what-is-not-rbac.html
+navPrevText: 1.2 - What ANSI RBAC is not
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 1.4-why-rbac-is-important.html
+navNextText: 1.4 - Why is ANSI RBAC Important?
+---
+
+# 1.3 - What ANSI RBAC is
+
+There is more to RBAC than using a Role object during policy enforcement.
+
+* ANSI INCITS 359-2001, [http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf](http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf) - The ANSI specification describes RBAC and provides functional specifications in Z-notation.
+
+<CENTER>
+![ANSI RBAC](images/ANSIRBAC-Spec.png)
+</CENTER>
+
+* <b>RBAC0</b> - Users, Roles, Permissions (Objects-Operations), Sessions - Form the Core of ANSI RBAC. Role activation and Permissions mapped to Object->Operation pairing are key facets of the basic ANSI RBAC model.
+
+<CENTER>
+![The Core](images/RbacCore.png)
+</CENTER>
+
+* <b>RBAC1</b> - Hierarchical Roles - Encourages proper role engineering. Parent roles are Business Roles while child roles map to IT Roles. Role hierarchies should be many-to-many or multi-inheritance.
+
+<CENTER>
+![Hierarchical RBAC](images/RbacHier.png)
+</CENTER>
+
+* <b>RBAC2</b> - Static Separation of Duties - Used to limit the privilege of users to within normal boundaries. SSD constraints are applied at role assignment time.
+
+<CENTER>
+![Static Separation of Duties](images/RbacSSD.png)
+</CENTER>
+
+* <b>RBAC3</b> - Dynamic Separation of Duties - Enforces constraints on what functions may used together at any point in time. DSD constraints may be used to enforce strict controls during multi-step approval processes. DSD constraints are applied at role activation time.
+
+<CENTER>
+![Dynamic Separation of Duties](images/RbacDSD.png)
+</CENTER>
+
+* Well defined APIs that can be shared across projects and application development teams.
+
+* Well defined data model. Easily created and replicated across the enterprise.
diff --git a/source/fortress/user-guide/1.4-why-rbac-is-important.md b/source/fortress/user-guide/1.4-why-rbac-is-important.md
new file mode 100644
index 0000000..33ef70c
--- /dev/null
+++ b/source/fortress/user-guide/1.4-why-rbac-is-important.md
@@ -0,0 +1,19 @@
+---
+title: 1.4 - Why is ANSI RBAC Important?
+navPrev: 1.3-what-rbac-is.html
+navPrevText: 1.3 - What ANSI RBAC is
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 1.5-how-to-impl-rbac.html
+navNextText: 1.5 - How to implement ANSI RBAC
+---
+
+# 1.4 - Why is ANSI RBAC Important?
+
+* Enforces the concept of least privilege. Granting users business functionality doesn't imply entitlements may be used at any time. For example a bank teller shouldn't withdrawal money from customer accounts outside of normal business hours or freelance contractors don't require access to production resources to do their jobs.
+
+* Enables Regulatory Compliance. Who has been granted authority to the most important resources? How can we be certain that terminiated employees and customers no longer have access to controlled resources?
+
+* Enforces separation of duty policies. For example traders must not be regulators or purchasing agents cannot approve transactions.
+
+* Eases administration costs due to elimination of redundant resources. Enable business units to be delegated administrative tasks.
diff --git a/source/fortress/user-guide/1.5-how-to-impl-rbac.md b/source/fortress/user-guide/1.5-how-to-impl-rbac.md
new file mode 100644
index 0000000..43c63c6
--- /dev/null
+++ b/source/fortress/user-guide/1.5-how-to-impl-rbac.md
@@ -0,0 +1,54 @@
+---
+title: 1.5 - How to implement ANSI RBAC
+navPrev: 1.4-why-rbac-is-important.html
+navPrevText: 1.4 - Why is ANSI RBAC Important?
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 1.6-go-for-more.html
+navNextText: 1.6 - Where to go for more info
+---
+
+# 1.5 - How to implement ANSI RBAC
+
+* Learn using the SPEC
+
+* Pick a technology stack you are comfortable with based on current knowledge, SLAs, data storage, and support requirements.
+
+* Design a very simple RBAC data model. Eight objects are all that is needed.
+ * User, Role, Permission, Object, Operation, User-Role, Session, Constraints
+
+* Design a simple RBAC software model.
+ * Top layer called a Manager and contains a stable public API that external apps may call.
+ * Three managers, System, Admin, Review are all that is needed.
+ * The implementation the manager interface contains must be able to be be swapped out for another complete RBAC system without impacting dependent apps.
+ * External applications use RBAC Manager API to map to internal entitlement systems.
+ * Middle layer for RBAC system is optional and may be used for processing fine-grained data validations rules
+ * Bottom layer for accessing the actual data.
+ * Implementation may be swapped for other back ends without impacting Manager.
+ * LDAP, JDBC, Hibernate, JAX-WS, JAX-RS other technologies may be used here to manage the data
+
+* Don't ignore the Audit
+ * View before and after images of the data
+
+* Code first as a POC. Start with the core - RBAC0. Get it right first.
+
+* Test driven development and automation key contributors to successful outcome.
+ * Engage IT teams.
+ * Analyze existing IT entitlements.
+ * Use established role mining techniques.
+
+* Map existing IT entitlements to RBAC system using established role engineering techniques
+
+* Use parent roles as Business Roles and child roles as IT Roles.
+
+* Deploy RBAC system into application environment using established standards. Use declarative policy enforcement points like JEE security for coarse-grained, Spring for fine-grained.
+
+* Application teams own mapping between Business and IT roles.
+
+* Model administrative controls on ARBAC. More on ARBAC coming soon...
+
+<CENTER>
+ ![Administrative RBAC](images/ARbac.png)
+</CENTER>
+
+* Roll-out (Slow and steady starting out)
diff --git a/source/fortress/user-guide/1.6-go-for-more.md b/source/fortress/user-guide/1.6-go-for-more.md
new file mode 100644
index 0000000..bef6803
--- /dev/null
+++ b/source/fortress/user-guide/1.6-go-for-more.md
@@ -0,0 +1,15 @@
+---
+title: 1.6 - Where to go for more info
+navPrev: 1.5-how-to-impl-rbac.html
+navPrevText: 1.5 - How to implement ANSI RBAC
+navUp: 1-intro-rbac.html
+navUpText: 1 - An Introduction to Role-Based Access Control ANSI INCITS 359-2004
+navNext: 2-multitenancy.html
+navNextText: 2 - Multitenancy
+---
+
+# 1.6 - Where to go for more info
+
+* Download the ANSI RBAC specification: [http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf](http://profsandhu.com/journals/tissec/ANSI+INCITS+359-2004.pdf)
+
+* Download working ANSI RBAC reference implementation, like Fortress !
diff --git a/source/fortress/user-guide/2-multitenancy.md b/source/fortress/user-guide/2-multitenancy.md
new file mode 100644
index 0000000..6d8e7cd
--- /dev/null
+++ b/source/fortress/user-guide/2-multitenancy.md
@@ -0,0 +1,20 @@
+---
+title: 2 - Multitenancy
+navPrev: 1.6-go-for-more.html
+navPrevText: 1.6 - Where to go for more info
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 2.1-fortress-multitenancy.html
+navNextText: 2.1 - Fortress Multitenancy
+---
+
+# 2 - Multitenancy
+
+To setup and use Fortress in multi-tenant fashion follow these instructions:
+* [README for Apache Fortress Multitenancy Configuration](https://github.com/apache/directory-fortress-core/blob/master/README-MULTITENANCY.md)
+
+More info follows...
+
+* [2.1 - Fortress Multitenancy](2.1-fortress-multitenancy.html)
+* [2.2 - Traditional Multi-Instances architecture](2.2-tradi-multi-instances.html)
+* [2.3 - Multitenancy under the covers](2.3-multitenancy-under-covers.html)
diff --git a/source/fortress/user-guide/2.1-fortress-multitenancy.md b/source/fortress/user-guide/2.1-fortress-multitenancy.md
new file mode 100644
index 0000000..1125ecb
--- /dev/null
+++ b/source/fortress/user-guide/2.1-fortress-multitenancy.md
@@ -0,0 +1,26 @@
+---
+title: 2.1 - Fortress Multitenancy
+navPrev: 2-multitenancy.html
+navPrevText: 2 - Multitenancy
+navUp: 2-multitenancy.html
+navUpText: 2 - Multitenancy
+navNext: 2.2-tradi-multi-instances.html
+navNextText: 2.2 - Traditional Multi-Instances architecture
+---
+
+# 2.1 - Fortress Multitenancy
+
+## Multitenancy Defined
+
+(From Wikipedia)
+
+Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.
+
+Multitenancy is also regarded as one of the essential attributes of cloud computing.[1]
+
+
+## After Fortress
+
+Multi-tenancy allows many clients to share the same ldap infrastructure thus enjoy increased operational efficiency.
+
+![Multitenant Fortress Network Diagram](images/multitenant-fortressnetworkdiagram600.png)
diff --git a/source/fortress/user-guide/2.2-tradi-multi-instances.md b/source/fortress/user-guide/2.2-tradi-multi-instances.md
new file mode 100644
index 0000000..3b92582
--- /dev/null
+++ b/source/fortress/user-guide/2.2-tradi-multi-instances.md
@@ -0,0 +1,26 @@
+---
+title: 2.2 - Traditional Multi-Instances architecture
+navPrev: 2.1-fortress-multitenancy.html
+navPrevText: 2.1 - Fortress Multitenancy
+navUp: 2-multitenancy.html
+navUpText: 2 - Multitenancy
+navNext: 2.3-multitenancy-under-covers.html
+navNextText: 2.3 - Multitenancy under the covers
+---
+
+# 2.2 - Traditional Multi-Instances architecture
+
+## Multitenancy Defined
+
+(From Wikipedia)
+
+Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). Multitenancy is contrasted with a multi-instance architecture where separate software instances (or hardware systems) are set up for different client organizations. With a multitenant architecture, a software application is designed to virtually partition its data and configuration, and each client organization works with a customized virtual application instance.
+
+Multitenancy is also regarded as one of the essential attributes of cloud computing.[1]
+
+
+## Before Fortress
+
+Client data had to be maintained on separate instances of LDAP server.
+
+![Multitenancy](images/MultiInstance-TraditionalNetworkDiagram2.png)
diff --git a/source/fortress/user-guide/2.3-multitenancy-under-covers.md b/source/fortress/user-guide/2.3-multitenancy-under-covers.md
new file mode 100644
index 0000000..bc93380
--- /dev/null
+++ b/source/fortress/user-guide/2.3-multitenancy-under-covers.md
@@ -0,0 +1,19 @@
+---
+title: 2.3 - Multitenancy under the covers
+navPrev: 2.2-tradi-multi-instances.html
+navPrevText: 2.2 - Traditional Multi-Instances architecture
+navUp: 2-multitenancy.html
+navUpText: 2 - Multitenancy
+navNext: 3-configuration.html
+navNextText: 3 - Fortress Configuration
+---
+
+# 2.3 - Multitenancy under the covers
+
+## Under the covers
+
+The Fortress data design allows clients to share a single server instance because each has its own storage area set aside in the back end database. This increases operational efficiency of the hosting service provider’s data center without sacrificing data isolation on behalf of the clients who use it.
+
+<CENTER>
+![](images/fortressmultitenantldapschema600.png)
+</center>
\ No newline at end of file
diff --git a/source/fortress/user-guide/3-configuration.md b/source/fortress/user-guide/3-configuration.md
new file mode 100644
index 0000000..2ec6911
--- /dev/null
+++ b/source/fortress/user-guide/3-configuration.md
@@ -0,0 +1,14 @@
+---
+title: 3 - Fortress Configuration
+navPrev: 2.3-multitenancy-under-covers.html
+navPrevText: 2.3 - Multitenancy under the covers
+navUp: ../user-guide.html
+navUpText: User Guide
+---
+
+# 3.1 - Fortress Configuration
+
+In order to use the API, you must configure it. As it will connect to a remote LDAP server. Follow the installation instructions to learn how it's done.
+
+More info here on how it works:
+* [README for Apache Fortress Configuration Subsystem](https://github.com/apache/directory-fortress-core/blob/master/README-CONFIG.md)
diff --git a/source/fortress/vision.md b/source/fortress/vision.md
new file mode 100644
index 0000000..c71f132
--- /dev/null
+++ b/source/fortress/vision.md
@@ -0,0 +1,11 @@
+---
+title: Vision
+---
+
+# Architectural Vision
+
+Fortress provides an authorization system that builds on existing open source applications.
+
+<CENTER>
+ <IMG src="../../images/Fortress-IAMServer-v2.png" alt="Screenshot"/>
+</CENTER>
diff --git a/source/issue-tracking.md b/source/issue-tracking.md
new file mode 100644
index 0000000..650d426
--- /dev/null
+++ b/source/issue-tracking.md
@@ -0,0 +1,29 @@
+---
+title: Issue Tracking
+---
+
+# Issue Tracking
+
+Our project uses [JIRA](http://www.atlassian.com/software/jira), a Java EE based issue tracking and project management application.
+
+![JIRA](images/jira-space-logo.gif)
+
+Issues, bugs, and feature requests should be submitted to the following issue tracking system.
+
+<DIV class="note" markdown="1">
+ As a general advice, server bugs must be added into DIRSERVER, not DIR.
+ The DIR token should be used for general problems like documentation errors, and general problems not related to the server itself.
+ Following this advice will help us a lot to improve bug tracking and resolution :-)
+</DIV>
+
+| Directory Sub-Project | JIRA key | Link to issue tracking system |
+|:-:|:-:|---|
+| ApacheDS | DIRSERVER | [http://issues.apache.org/jira/browse/DIRSERVER](http://issues.apache.org/jira/browse/DIRSERVER) |
+| LDAP API | DIRAPI | [http://issues.apache.org/jira/browse/DIRAPI](http://issues.apache.org/jira/browse/DIRAPI) |
+| Shared | DIRSHARED | [http://issues.apache.org/jira/browse/DIRSHARED](http://issues.apache.org/jira/browse/DIRSHARED) |
+| Studio | DIRSTUDIO | [http://issues.apache.org/jira/browse/DIRSTUDIO](http://issues.apache.org/jira/browse/DIRSTUDIO) |
+| Kerberos | DIRKRB | [http://issues.apache.org/jira/browse/DIRKRB](http://issues.apache.org/jira/browse/DIRKRB) |
+| General (documentation, site) | DIR | [http://issues.apache.org/jira/browse/DIR](http://issues.apache.org/jira/browse/DIR) |
+| Triplesec | DIRTSEC | [http://issues.apache.org/jira/browse/DIRTSEC](http://issues.apache.org/jira/browse/DIRTSEC) |
+| Fortress | FC | [http://issues.apache.org/jira/browse/FC](http://issues.apache.org/jira/browse/FC) |
+| SCIMple | SCIMPLE | [http://issues.apache.org/jira/browse/SCIMPLE](http://issues.apache.org/jira/browse/SCIMPLE) |
diff --git a/source/kerby/__index.md b/source/kerby/__index.md
new file mode 100644
index 0000000..f2b4454
--- /dev/null
+++ b/source/kerby/__index.md
@@ -0,0 +1,44 @@
+---
+type: kerby
+title: Welcome to Apache Kerby
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="left">
+ <h1>Apache Kerby™</h1>
+ <h2>A Kerberos Protocol and KDC Implementation</h2>
+ </div>
+ <div class="right">
+ <img src="../images/kerby_logo.png" width="125" height="125" border="0"/>
+ </div>
+</div>
+
+<div class="description">
+ Apache Kerby™ is a Java Kerberos binding. It provides a rich, intuitive and interoperable implementation, library, KDC and various facilities that integrates PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.<br/>
+</div>
+<!-- div class="download-link">
+ <a href="/kerby/downloads.html" class="download_badge"><b>Download Apache<br>Kerby {{< param version_kerby >}}</b></a>
+</div-->
+
+<div class="news">
+
+## The Initiatives/Goals
+
+* Aims to become the preferred Kerberos server implementation in java, with rich facilities that integrate Kerberos, PKI and token (OAuth2) on both client and server sides.
+* Provides client API to interact with any KDC server.
+* Provides an embeddable and standalone KDC server that supports various backends for storing principals and keys.
+* Comes with in-memory, Mavibot(MVCC BTree), JSON, LDAP and Zookeeper backends to store data.
+* Embedded KDC server allows easy integration into products for unit testing or production deployment.
+* Supports FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
+* Supports PKINIT mechanism to allow clients to request tickets using x509 certificate credentials.
+* Supports Token Preauth mechanism to allow clients to request tickets using JWT tokens.
+* Supports OTP mechanism to allow clients to request tickets using One Time Password.
+* Provides support for JAAS, GSSAPI and SASL frameworks that applications can leverage.
+* Minimal dependencies, SLF4J is the only external dependency in the core part.
+
+</div>
+
+<div class="news">
+ {{< grabpage "kerby/news.md" >}}
+</div>
diff --git a/source/kerby/developer-guide.md b/source/kerby/developer-guide.md
new file mode 100644
index 0000000..e59dcd3
--- /dev/null
+++ b/source/kerby/developer-guide.md
@@ -0,0 +1,75 @@
+---
+title: Developer's Guide
+---
+
+# Developer's Guide
+
+This is a simple guide to help developers get going.
+
+## Source Repository
+
+To get the source, you will need to have git installed. Just type the following command to get the latest development version:
+
+ git clone https://gitbox.apache.org/repos/asf/directory-kerby.git
+
+
+## Git Mirror
+
+The git repository is mirrored to Github: <https://github.com/apache/directory-kerby/>.
+
+## Build Requirements:
+
+* JDK 1.7+
+* Maven 3.0 or later
+* Internet connection for first build (to fetch all Maven and Kerby dependencies)
+
+##Where to run Maven from?
+
+It should be run at the top directory of Kerby.
+
+##Maven build goals:
+
+* Clean : mvn clean
+* Compile : mvn compile
+* Run tests : mvn test
+* Create JAR : mvn package
+* Install JAR in M2 cache : mvn install
+* Deploy JAR to Maven repo : mvn deploy
+* Build distribution : mvn package [-Pdist]
+* Run findbugs : mvn compile findbugs:findbugs
+* Run benchmarks : mvn integration-test -Pbenchmark
+
+##Build options:
+
+* To run findbugs without running tests :
+
+ $ mvn clean package -DskipTests findbugs:findbugs [site]
+
+* Building distributions without running tests :
+
+ $ mvn package -Pdist -DskipTests
+
+(tar package in /kerby/kerby-dist/kdc-dist/target/ & /kerby/kerby-dist/tool-dist/target/)
+
+* Generate javadoc without running tests:
+
+ $ mvn clean package -DskipTests javadoc:javadoc
+
+* Checkstyle plugin & pmd plugin are run by default.
+To prevent them from running, add option [-Pnochecks], such as:
+
+ $ mvn package -Pnochecks
+
+## Setup Intellij
+
+1. File -> Import Project...
+2. Choose 'directory-kerby' as root directory
+3. Import project from external model -> Maven
+4. Finish
+
+
+## Issue Tracker
+
+Jira: https://issues.apache.org/jira/browse/DIRKRB
+
+
diff --git a/source/kerby/download-old-versions.md b/source/kerby/download-old-versions.md
new file mode 100644
index 0000000..c006707
--- /dev/null
+++ b/source/kerby/download-old-versions.md
@@ -0,0 +1,39 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+<CENTER>
+
+| Version| Download Link | Javadoc & XRef | Date |
+|:-:|:-:|:-:|:-:|
+| Apache KERBY 1.1.1| [Download](https://archive.apache.org/dist/directory/kerby/dist/1.1.1/)
+| Apache KERBY 1.0.1| [Download](https://archive.apache.org/dist/directory/kerby/dist/1.0.1/)
+
+</CENTER>
+
+We encourage you to verify the integrity of the downloaded file using:
+
+* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+* the checksum file
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+
+Alternatively, you can verify the checksums of the files (see the [How to verify downloaded files](https://www.apache.org/info/verification.html) page).
diff --git a/source/kerby/download/download-archive.md b/source/kerby/download/download-archive.md
new file mode 100644
index 0000000..5a1a651
--- /dev/null
+++ b/source/kerby/download/download-archive.md
@@ -0,0 +1,74 @@
+---
+title: Downloads for Archive
+---
+
+# Downloads of Archive packages
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-bin.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-bin.zip">
+ <strong>
+ [preferred]/[...]/apache-kerby-{{< param version_kerby >}}-bin.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://archive.apache.org/dist/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.zip.asc">ASC</a>-<a href="https://archive.apache.org/dist/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.zip.sha512">SHA-512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.tar.gz">
+ <strong>
+ [preferred]/[...]/apache-kerby-{{< param version_kerby >}}-bin.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://archive.apache.org/dist/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.tar.gz.asc">ASC</a>-<a href="https://archive.apache.org/dist/directory/kerby/dist/{{< param version_kerby >}}/apache-kerby-{{< param version_kerby >}}-bin.tar.gz.sha512">SHA-512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-kerby-{{< param version_kerby >}}-bin.zip{{< /download-verify >}}
diff --git a/source/kerby/download/download-sources.md b/source/kerby/download/download-sources.md
new file mode 100644
index 0000000..7c19a3d
--- /dev/null
+++ b/source/kerby/download/download-sources.md
@@ -0,0 +1,48 @@
+---
+title: Downloads for Sources
+---
+
+# Downloads for Archive
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-source-release.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-source-release.zip">
+ <strong>
+ [preferred]/[...]/kerby-all-{{< param version_kerby >}}-source-release.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/kerby/dist/{{< param version_kerby >}}/kerby-all-{{< param version_kerby >}}-source-release.zip.sha512">SHA-512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-kerby-{{< param version_kerby >}}-src.zip{{< /download-verify >}}
+
diff --git a/source/kerby/downloads.md b/source/kerby/downloads.md
new file mode 100644
index 0000000..989ef74
--- /dev/null
+++ b/source/kerby/downloads.md
@@ -0,0 +1,47 @@
+---
+title: Kerby Downloads
+---
+
+# Downloads
+
+## Jar Download
+
+###
+
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
+
+## Maven Dependency
+
+The Apache Kerby is also available as a Maven dependency:
+
+### Kerby Client API:
+
+ <dependency>
+ <groupId>org.apache.kerby</groupId>
+ <artifactId>kerb-client-api-all</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+### Kerby Server API:
+
+ <dependency>
+ <groupId>org.apache.kerby</groupId>
+ <artifactId>kerb-server-api-all</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+### Kerby ASN1:
+
+ <dependency>
+ <groupId>org.apache.kerby</groupId>
+ <artifactId>kerby-asn1</artifactId>
+ <version>2.0.1</version>
+ </dependency>
+
+### Kerby Simple KDC:
+
+ <dependency>
+ <groupId>org.apache.kerby</groupId>
+ <artifactId>kerb-simplekdc</artifactId>
+ <version>2.0.1</version>
+ </dependency>
diff --git a/source/kerby/features.md b/source/kerby/features.md
new file mode 100644
index 0000000..5f45ff1
--- /dev/null
+++ b/source/kerby/features.md
@@ -0,0 +1,51 @@
+---
+title: Features
+---
+
+# Kerby Features
+
+Kerby is an implementation of Kerberos V5 protocol in pure Java. It provides a rich, intuitive and interoperable library, KDC and various facilities that integrate PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.
+Following features are (already) supported:
+
+* Kerberos libraries:
+ * Client
+ * KDC server
+ * Kadmin
+ * Credential cache and keytab utilities
+
+* Standalone KDC server
+
+* Support for various backends:
+ * In-memory
+ * Mavibot (MVCC BTree)
+ * LDAP
+ * JSON
+ * Zookeeper
+
+* Embeddable KDC server allows easy integration into products for unit testing or production deployment.
+
+* FAST/Preauthentication framework, to allow popular and useful authentication mechanisms.
+
+* Token Preauth mechanism, to allow clients to request tickets using JWT tokens.
+
+* Client can request a TGT with:
+ * User plain password credential
+ * User keyTab
+ * User token credential
+
+* Client can request a service ticket with:
+ * user TGT credential for a server
+ * user AccessToken credential for a server
+
+* Network support including UDP and TCP transport with two implementations:
+ * Default implementation based on the JRE without depending on other libraries.
+ * Netty based implementation for better throughput, lower latency.
+
+* Tools:
+ * kdcinit: Initialize and prepare KDC, like choose storage type, setting up necessary principals (tgs, kadmin) etc.
+ * kadmin: Command-line interface to administer Kerby.
+ * kinit: Obtains and caches initial ticket-granting tickets for principals.
+ * klist: Lists the Kerberos principals and tickets held in a credentials cache, or the keys held in a keytab file.
+
+* Support for JAAS, GSSAPI and SASL frameworks, allowing applications to leverage the authentication mechanisms provided by Kerby.
+
diff --git a/source/kerby/issues.md b/source/kerby/issues.md
new file mode 100644
index 0000000..9ecd0e6
--- /dev/null
+++ b/source/kerby/issues.md
@@ -0,0 +1,18 @@
+---
+title: Kerby Issues
+---
+
+# Kerby Issue tracking
+
+Our project uses [JIRA](https://issues.apache.org/jira/browse/DIRKRB/), a Java EE based issue tracking and project management application.
+
+![JIRA](../images/jira-space-logo.gif)
+
+Issues, bugs, and feature requests should be submitted to the following issue tracking system :
+
+
+| Directory Sub-Project | JIRA key | Link to issue tracking system |
+|:-:|:-:|---|
+| Kerby | DIRKRB | [http://issues.apache.org/jira/browse/DIRKRB](http://issues.apache.org/jira/browse/DIRKRB) |
+
+Umbrella JIRA: it's tracked in the master JIRA DIRKRB-102(issues.apache.org/jira/browse/DIRKRB-102), and find tasks there.
\ No newline at end of file
diff --git a/source/kerby/kerby-asn1.md b/source/kerby/kerby-asn1.md
new file mode 100644
index 0000000..bdca67b
--- /dev/null
+++ b/source/kerby/kerby-asn1.md
@@ -0,0 +1,373 @@
+---
+title: Kerby ASN1
+---
+
+# Kerby ASN1
+
+### ASN1 hierarcy
+
+![](hierarchy.png)
+
+### A ASN1 parser with easy and simple API
+
+ // encoding
+ Asn1Integer aValue = new Asn1Integer(8899);
+ byte[] encoded = aValue.encode();
+
+ // decoding
+ byte[] contentToDecode = ...
+ Asn1Integer decodedValue = new Asn1Integer();
+ decodedValue.decode(contentToDecode);
+ Integer value = decodedValue.getValue();
+
+
+### Data-driven ASN1 encoding/decoding framework and parser
+
+With the following definition from Kerberos protocol
+
+ AuthorizationData ::= SEQUENCE OF SEQUENCE {
+ ad-type [0] Int32,
+ ad-data [1] OCTET STRING
+ }
+
+
+You can model AuthzDataEntry as follows
+
+ public class AuthorizationDataEntry extends KrbSequenceType {
+ /**
+ * The possible fields
+ */
+ protected enum AuthorizationDataEntryField implements EnumType {
+ AD_TYPE,
+ AD_DATA;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
+
+ /** The AuthorizationDataEntry's fields */
+ private static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+ new ExplicitField(AuthorizationDataEntryField.AD_TYPE, Asn1Integer.class),
+ new ExplicitField(AuthorizationDataEntryField.AD_DATA, Asn1OctetString.class)
+ };
+
+ /**
+ * Creates an AuthorizationDataEntry instance
+ */
+ public AuthorizationDataEntry() {
+ super(fieldInfos);
+ }
+
+ /**
+ * @return The AuthorizationType (AD_TYPE) field
+ */
+ public AuthorizationType getAuthzType() {
+ Integer value = getFieldAsInteger(AuthorizationDataEntryField.AD_TYPE);
+ return AuthorizationType.fromValue(value);
+ }
+
+ /**
+ * Sets the AuthorizationType (AD_TYPE) field
+ * @param authzType The AuthorizationType to set
+ */
+ public void setAuthzType(AuthorizationType authzType) {
+ setFieldAsInt(AuthorizationDataEntryField.AD_TYPE, authzType.getValue());
+ }
+
+ /**
+ * @return The AuthorizationType (AD_DATA) field
+ */
+ public byte[] getAuthzData() {
+ return getFieldAsOctets(AuthorizationDataEntryField.AD_DATA);
+ }
+
+ /**
+ * Sets the AuthorizationData (AD_DATA) field
+ * @param authzData The AuthorizationData to set
+ */
+ public void setAuthzData(byte[] authzData) {
+ setFieldAsOctets(AuthorizationDataEntryField.AD_DATA, authzData);
+ }
+ }
+
+And then define AuthorizationData simply
+
+ public class AuthorizationData extends KrbSequenceOfType<AuthorizationDataEntry> {
+
+ }
+
+
+Then you can process with above definitions, encode and decode, without caring about the details.
+
+Think about how to implement the following more complex and pratical sample from [ITU-T Rec. X.680 ISO/IEC 8824-1](http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf):
+
+ A.1 ASN.1 description of the record structure
+ The structure of the hypothetical personnel record is formally described below using ASN.1 specified in
+ ITU-T Rec. X.680 | ISO/IEC 8824-1 for defining types.
+
+ PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET {
+ Name Name,
+ title [0] VisibleString,
+ number EmployeeNumber,
+ dateOfHire [1] Date,
+ nameOfSpouse [2] Name,
+ children [3] IMPLICIT
+ SEQUENCE OF ChildInformation DEFAULT {}
+ }
+
+ ChildInformation ::= SET {
+ name Name,
+ dateOfBirth [0] Date
+ }
+
+ Name ::= [APPLICATION 1] IMPLICIT SEQUENCE {
+ givenName VisibleString,
+ initial VisibleString,
+ familyName VisibleString
+ }
+
+EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER
+Date ::= [APPLICATION 3] IMPLICIT VisibleString -- YYYYMMDD
+```
+Similarly as above, we can have (from the unit test codes):
+
+ public class PersonnelRecord extends Asn1TaggingSet {
+ protected enum PersonnelRecordField implements EnumType {
+ NAME,
+ TITLE,
+ NUMBER,
+ DATE_OF_HIRE,
+ NAME_OF_SPOUSE,
+ CHILDREN;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
+
+ static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+ new ExplicitField(PersonnelRecordField.NAME, -1, Name.class),
+ new ExplicitField(PersonnelRecordField.TITLE, 0, Asn1VisibleString.class),
+ new ExplicitField(PersonnelRecordField.NUMBER, -1, EmployeeNumber.class),
+ new ExplicitField(PersonnelRecordField.DATE_OF_HIRE, 1, Date.class),
+ new ExplicitField(PersonnelRecordField.NAME_OF_SPOUSE, 2, Name.class),
+ new ImplicitField(PersonnelRecordField.CHILDREN, 3, Children.class)
+ };
+
+ public PersonnelRecord() {
+ super(0, fieldInfos, true, true);
+ }
+
+ public void setName(Name name) {
+ setFieldAs(PersonnelRecordField.NAME, name);
+ }
+
+ public Name getName() {
+ return getFieldAs(PersonnelRecordField.NAME, Name.class);
+ }
+
+ public void setTitle(String title) {
+ setFieldAs(PersonnelRecordField.TITLE, new Asn1VisibleString(title));
+ }
+
+ public String getTitle() {
+ return getFieldAsString(PersonnelRecordField.TITLE);
+ }
+
+ public void setEmployeeNumber(EmployeeNumber employeeNumber) {
+ setFieldAs(PersonnelRecordField.NUMBER, employeeNumber);
+ }
+
+ public EmployeeNumber getEmployeeNumber() {
+ return getFieldAs(PersonnelRecordField.NUMBER, EmployeeNumber.class);
+ }
+
+ public void setDateOfHire(Date dateOfHire) {
+ setFieldAs(PersonnelRecordField.DATE_OF_HIRE, dateOfHire);
+ }
+
+ public Date getDateOfHire() {
+ return getFieldAs(PersonnelRecordField.DATE_OF_HIRE, Date.class);
+ }
+
+ public void setNameOfSpouse(Name spouse) {
+ setFieldAs(PersonnelRecordField.NAME_OF_SPOUSE, spouse);
+ }
+
+ public Name getNameOfSpouse() {
+ return getFieldAs(PersonnelRecordField.NAME_OF_SPOUSE, Name.class);
+ }
+
+ public void setChildren(Children children) {
+ setFieldAs(PersonnelRecordField.CHILDREN, children);
+ }
+
+ public Children getChildren() {
+ return getFieldAs(PersonnelRecordField.CHILDREN, Children.class);
+ }
+
+ public static class Children extends Asn1SequenceOf<ChildInformation> {
+ public Children(ChildInformation ... children) {
+ super();
+ for (ChildInformation child : children) {
+ addElement(child);
+ }
+ }
+
+ public Children() {
+ super();
+ }
+ }
+
+ public static class ChildInformation extends Asn1SetType {
+ protected enum ChildInformationField implements EnumType {
+ CHILD_NAME,
+ DATE_OF_BIRTH;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
+
+ static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
+ new ExplicitField(ChildInformationField.CHILD_NAME, -1, Name.class),
+ new ExplicitField(ChildInformationField.DATE_OF_BIRTH, 0, Date.class)
+ };
+
+ public ChildInformation() {
+ super(tags);
+ }
+
+ public void setName(Name name) {
+ setFieldAs(ChildInformationField.CHILD_NAME, name);
+ }
+
+ public Name getName() {
+ return getFieldAs(ChildInformationField.CHILD_NAME, Name.class);
+ }
+
+ public void setDateOfBirth(Date date) {
+ setFieldAs(ChildInformationField.DATE_OF_BIRTH, date);
+ }
+
+ public Date getDateOfBirth() {
+ return getFieldAs(ChildInformationField.DATE_OF_BIRTH, Date.class);
+ }
+ }
+
+ public static class Name extends Asn1TaggingSequence {
+
+ protected enum NameField implements EnumType {
+ GIVENNAME,
+ INITIAL,
+ FAMILYNAME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
+
+ static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
+ new ExplicitField(NameField.GIVENNAME, -1, Asn1VisibleString.class),
+ new ExplicitField(NameField.INITIAL, -1, Asn1VisibleString.class),
+ new ExplicitField(NameField.FAMILYNAME, -1, Asn1VisibleString.class)
+ };
+
+ public Name() {
+ super(1, tags, true, true);
+ }
+
+ public Name(String givenName, String initial, String familyName) {
+ this();
+ setGivenName(givenName);
+ setInitial(initial);
+ setFamilyName(familyName);
+ }
+
+ public void setGivenName(String givenName) {
+ setFieldAs(NameField.GIVENNAME, new Asn1VisibleString(givenName));
+ }
+
+ public String getGivenName() {
+ return getFieldAsString(NameField.GIVENNAME);
+ }
+
+ public void setInitial(String initial) {
+ setFieldAs(NameField.INITIAL, new Asn1VisibleString(initial));
+ }
+
+ public String getInitial() {
+ return getFieldAsString(NameField.INITIAL);
+ }
+
+ public void setFamilyName(String familyName) {
+ setFieldAs(NameField.FAMILYNAME, new Asn1VisibleString(familyName));
+ }
+
+ public String getFamilyName() {
+ return getFieldAsString(NameField.FAMILYNAME);
+ }
+ }
+
+ public static class EmployeeNumber extends Asn1Tagging<Asn1Integer> {
+ public EmployeeNumber(Integer value) {
+ super(2, new Asn1Integer(value), true, true);
+ }
+
+ public EmployeeNumber() {
+ super(2, new Asn1Integer(), true, true);
+ }
+ }
+
+ public static class Date extends Asn1Tagging<Asn1VisibleString> {
+ public Date(String value) {
+ super(3, new Asn1VisibleString(value), true, true);
+ }
+ public Date() {
+ this(null);
+ }
+ }
+ }
+
+### Asn1 API and parsing/dumping facilities
+* ASN1 dumping tool to help analyze ASN1 encoding stream or packet. It can be used to exercise the framework with all kinds of testing binary inputs.
+* The shortcut API for ASN1 parser, encoding, decoding.
+
+### Notes
+* Extensive tests coverage for BER & DER encoding and decoding
+* Fully self-contained, no extra dependency
+
+### License
+Apache V2 License
+
diff --git a/source/kerby/news.md b/source/kerby/news.md
new file mode 100644
index 0000000..7f9e431
--- /dev/null
+++ b/source/kerby/news.md
@@ -0,0 +1,138 @@
+---
+title: News
+---
+
+# News
+<h2 class="news">Apache Kerby 2.0.1 released <em>posted on June 3, 2020</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+2.0.1.
+
+The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12344836).
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Kerby 2.0.0 released <em>posted on Jan 14, 2019</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+2.0.0.
+
+The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12342433).
+
+Downloads are available [here](downloads.html)
+<h2 class="news">Apache Kerby 1.1.1 released <em>posted on May 25th, 2018</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+1.1.1.
+
+The issues fixed are available [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310910&version=12342211).
+
+Downloads are available [here](downloads.html)
+<h2 class="news">Apache Kerby 1.1.0 released <em>posted on November 27th, 2017</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+1.1.0. This is a new major release of Apache Kerby, which implements
+cross-realm support, and also includes a GSSAPI module.
+
+The issues fixed are available [here](https://issues.apache.org/jira/projects/DIRKRB/versions/12341144).
+
+Downloads are available [here](downloads.html)
+<h2 class="news">Apache Kerby 1.0.1 released <em>posted on September 4th, 2017</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+1.0.1. The issues fixed are available [here](https://issues.apache.org/jira/projects/DIRKRB/versions/12340574).
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Kerby 1.0.0 released <em>posted on May 13th, 2017</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby
+1.0.0. The issues fixed are available [here](https://issues.apache.org/jira/browse/DIRKRB/fixforversion/12332775).
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Kerby 1.0.0-RC2 released <em>posted on March 14th, 2016</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby 1.0.0-RC2.
+
+105 JIRA issues were resolved and with the following Features and important changes since 1.0.0-RC1:
+
+1. Anonymous PKINIT support(BETA): allows a client to obtain anonymous credentials without authenticating as any particular principal.
+
+2. Finished token support:
+ * Add ability to encrypt and sign using non-RSA keys;
+ * Get the verify key for signed JWT token from kdc config;
+ * Token issuer must be trusted as one of preconfigured issuers;
+ * Add support for decrypting JWT tokens in the KDC.
+
+3. PKIX CMS/X509 support.
+
+4. BER encoding support.
+
+5. Improved the ASN1 framework:
+ * Separate Asn1 parser;
+ * Support decoding of primitive but constructed encoded types;
+ * Allow to define explicit and implicit fields more easily for collection types;
+ * Providing an API to use some useful ASN1 functions by consolidating existing utilities
+
+6. Dump support for Asn1.
+ * provide an ASN1 dumping tool for troubleshooting
+
+7. Separate KrbClient, KrbTokenClient, and KrbPkinitClient APIs.
+
+<h2 class="news">Apache Kerby 1.0.0-RC1 released <em>posted on September 16th, 2015</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Kerby 1.0.0-RC1, the
+first release candidate towards a 1.0 version.
+
+Downloads are available [here](downloads.html)
+
+Apache Kerby 1.0.0-RC1 Release Notes
+====================================
+
+In this release 236 JIRA issues were resolved and the following features are supported:
+
+1. Kerberos libraries:
+ * Client
+ * KDC server
+ * Kadmin
+ * Credential cache and keytab utilities
+
+2. Standalone KDC server .
+
+3. Support for various identity backends:
+ * In-memory
+ * JSON
+ * LDAP
+ * Mavibot(MVCC BTree)
+ * Zookeeper
+
+4. Embedded KDC server allows easy integration into products for unit tests or production deployment.
+
+5. FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
+
+6. Token Preauth mechanism to allow clients to request tickets using JWT tokens.
+
+7. Client can request a TGT with:
+ * User plain password credential
+ * User keyTab
+ * User token credential
+
+8. Client can request a service ticket with:
+ * user TGT credential for a server
+ * user AccessToken credential for a server
+
+9. Network support including UDP and TCP transport with two implementations:
+ * Default implementation based on the JRE without depending on other libraries.
+ * Netty based implementation for better throughput, lower latency.
+
+10. Tools:
+ * kdcinit: Initialize and prepare KDC, like choose storage type, setting up necessary principals (tgs, kadmin) etc.
+ * kadmin: Command-line interfaces to administration system.
+ * kinit: Obtains and caches an initial ticket-granting ticket for principal.
+ * klist: Lists the Kerby principal and tickets held in a credentials cache, or the keys held in a keytab file.
+
+11. Support for JAAS, GSSAPI and SASL frameworks that applications can leverage the authentication mechanisms provided by Kerby.
+
+12. Building support: checking style and find bugs.
+
diff --git a/source/kerby/overview.md b/source/kerby/overview.md
new file mode 100644
index 0000000..e58e895
--- /dev/null
+++ b/source/kerby/overview.md
@@ -0,0 +1,17 @@
+---
+title: Overview
+---
+
+## The Initiatives/Goals
+
+* Aims to become the preferred Kerberos server implementation in java, with rich facilities that integrate Kerberos, PKI and token (OAuth2) on both client and server sides.
+* Provides client API to interact with any KDC server.
+* Provides an embeddable and standalone KDC server that supports various backends for storing principals and keys.
+* Comes with in-memory, Mavibot(MVCC BTree), JSON, LDAP and Zookeeper backends to store data.
+* Embedded KDC server allows easy integration into products for unit testing or production deployment.
+* Supports FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
+* Supports PKINIT mechanism to allow clients to request tickets using x509 certificate credentials.
+* Supports Token Preauth mechanism to allow clients to request tickets using JWT tokens.
+* Supports OTP mechanism to allow clients to request tickets using One Time Password.
+* Provides support for JAAS, GSSAPI and SASL frameworks that applications can leverage.
+* Minimal dependencies, SLF4J is the only external dependency in the core part.
diff --git a/source/kerby/tutorials.md b/source/kerby/tutorials.md
new file mode 100644
index 0000000..0728aab
--- /dev/null
+++ b/source/kerby/tutorials.md
@@ -0,0 +1,8 @@
+---
+title: Tutorials
+---
+
+## Apache Kerby Tutorials
+
+* [Testing Kerberos with Web Services using Apache Kerby](http://coheigea.blogspot.ie/2015/11/testing-kerberos-with-web-services.html)
+* [Integrating JSON Web Tokens with Kerberos using Apache Kerby](http://coheigea.blogspot.ie/2017/09/integrating-json-web-tokens-with.html)
diff --git a/source/kerby/user-guide.md b/source/kerby/user-guide.md
new file mode 100644
index 0000000..2522822
--- /dev/null
+++ b/source/kerby/user-guide.md
@@ -0,0 +1,25 @@
+---
+title: Kerby User's Guide
+---
+
+# Kerby User's Guide
+
+This is a simple guide to help users and developers to go through the concepts.
+
+## Table of contents
+
+* [1 - How to begin](user-guide/1-how-to-begin.html)
+* [2 - APIs](user-guide/2-kerberos-library.html)
+ * [2.1 - KrbClient APIs](user-guide/2.1-krbclient-apis.html)
+ * [2.2 - Kadmin](user-guide/2.2-kadmin.html)
+ * [2.3 - KdcServer](user-guide/2.3-kdcserver.html)
+ * [2.4 - SimpleKdcServer](user-guide/2.4-simplekdcserver.html)
+* [3 - Tools](user-guide/3-tools.html)
+ * [3.1 - kdcinit](user-guide/3.1-kdcinit.html)
+ * [3.2 - kadmin](user-guide/3.2-kadmin.html)
+ * [3.3 - kinit](user-guide/3.3-kinit.html)
+ * [3.4 - klist](user-guide/3.4-klist.html)
+* [4 - Identity Backend](user-guide/4-identity-backend.html)
+* [5 - Kerberos Crypto and Encryption Types](user-guide/5-crypto-and-encryption-types.html)
+* [6 - Network Support](user-guide/6-network-support.html)
+* [7 - Dependency](user-guide/7-dependency.html)
diff --git a/source/kerby/user-guide/1-how-to-begin.md b/source/kerby/user-guide/1-how-to-begin.md
new file mode 100644
index 0000000..25d0c6f
--- /dev/null
+++ b/source/kerby/user-guide/1-how-to-begin.md
@@ -0,0 +1,78 @@
+---
+title: 1 - How To Begin
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 2-kerberos-library.html
+navNextText: 2 - Kerberos library
+---
+
+# 1 - How to begin
+This chapter helps you to set up a Apache Kerby kdc server, with the minimal configuration options being explained. That should be enough to get a running server.
+
+## How to play with the standalone KDC:
+
+The distribution of Kerby.
+
+### To run with a standalone kdc server, kinit and kadmin
+
+* Generate libraries for distribution:
+
+ $ mvn package -Pdist
+
+* Run kdcinit:
+
+ $ cd kerby-dist/kdc-dist
+ $ sh bin/kdcinit.sh [server-conf-dir] [keytab]
+
+ The admin principal will be exported into [keytab], it will be used by kadmin tool for the authentication.
+
+* Start kerby-kdc-server:
+
+ $ cd kerby-dist/kdc-dist
+ $ sh bin/start-kdc.sh [server-conf-dir] [work-dir]
+
+* Run kadmin to add principals:
+
+ $ cd kerby-dist/kdc-dist
+ $ sh bin/kadmin.sh [server-conf-dir] [-k keytab]
+
+ The keytab file is created by the kdcinit.
+ In kadmin, you can type "?" for help.
+
+* Run kinit:
+
+ $ cd kerby-dist/tool-dist
+ $ sh bin/kinit.sh [-conf client-conf-dir] [principal-name]
+
+* Run klist:
+
+ $ cd kerby-dist/tool-dist
+ $ sh bin/klist.sh -c [credentials-cache]
+
+ If you don't specify [server-conf-dir], it will be set as /etc/kerby. In [server-conf-dir], there should be kdc.conf, backend.conf.
+ And if you don't specify [client -conf-dir], it will be set as /etc/, there should be krb5.conf.
+
+An example of kdc.conf:
+
+ [kdcdefaults]
+ kdc_host = localhost
+ kdc_tcp_port = 8015
+ kdc_realm = EXAMPLE.COM
+
+An example of json backend backend.conf:
+
+ kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.JsonIdentityBackend
+ backend.json.dir = /tmp/kerby/jsonbackend
+
+An example of zookeeper backend backend.conf:
+
+ kdc_identity_backend = org.apache.kerby.kerberos.kdc.identitybackend.ZookeeperIdentityBackend
+ data_dir = /tmp/kerby/zookeeper/data
+ data_log_dir = /tmp/kerby/zookeeper/datalog
+
+An example of krb5.conf:
+
+ [libdefaults]
+ kdc_realm = EXAMPLE.COM
+ kdc_tcp_port = 8015
+
diff --git a/source/kerby/user-guide/2-kerberos-library.md b/source/kerby/user-guide/2-kerberos-library.md
new file mode 100644
index 0000000..cf90796
--- /dev/null
+++ b/source/kerby/user-guide/2-kerberos-library.md
@@ -0,0 +1,22 @@
+---
+title: 2 - Kerberos library
+navPrev: 1-how-to-begin.html
+navPrevText: 1 - How To Begin
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 2.1-krbclient-apis.html
+navNextText: 2.1 - KrbClient APIs
+---
+
+# 2 - Kerberos library
+Kerby provides the KrbClient API, Kadmin API, Kerberos Server API and the simplified kdc server APIs.
+
+## Table of content
+
+* [2.1 - KrbClient API](2.1-krbclient-apis.html)
+* [2.2 - Kadmin](2.2-kadmin.html)
+* [2.3 - KdcServer](2.3-kdcserver.html)
+* [2.4 - SimpleKdcServer](2.4-simplekdcserver.html)
+
+
+Please look at [github](https://github.com/apache/directory-kerby) for details.
diff --git a/source/kerby/user-guide/2.1-krbclient-apis.md b/source/kerby/user-guide/2.1-krbclient-apis.md
new file mode 100644
index 0000000..60bc20b
--- /dev/null
+++ b/source/kerby/user-guide/2.1-krbclient-apis.md
@@ -0,0 +1,42 @@
+---
+title: 2.1 - KrbClient APIs
+navPrev: 2-kerberos-library.html
+navPrevText: 2 - Kerberos library
+navUp: 2-kerberos-library.html
+navUpText: 2 - Kerberos library
+navNext: 2.2-kadmin.html
+navNextText: 2.2 - Kadmin
+---
+
+# 2.1 - KrbClient APIs
+A Krb client API for applications to interact with KDC.
+
+### Initiate a KrbClient
+* Initiate a KrbClient with prepared KrbConfig.
+<pre>
+KrbClient krbClient = new KrbClient(krbConfig);
+</pre>
+* Initiate a KrbClient with with conf dir.
+<pre>
+KrbClient krbClient = new KrbClient(confDir);
+</pre>
+
+### Request a TGT
+* Request a TGT with user plain password credential
+<pre>
+requestTgtWithPassword(principal, password);
+</pre>
+* Request a TGT with user token credential
+<pre>
+requestTgtWithToken(token, armorCache);
+</pre>
+
+### Request a service ticket
+* Request a service ticket with user TGT credential for a server
+<pre>
+requestServiceTicketWithTgt(tgt, serverPrincipal);
+</pre>
+* Request a service ticket with user AccessToken credential for a server
+<pre>
+requestServiceTicketWithAccessToken(accessToken, serverPrincipal, armorCache);
+</pre>
diff --git a/source/kerby/user-guide/2.2-kadmin.md b/source/kerby/user-guide/2.2-kadmin.md
new file mode 100644
index 0000000..97e3aa9
--- /dev/null
+++ b/source/kerby/user-guide/2.2-kadmin.md
@@ -0,0 +1,77 @@
+---
+title: 2.2 - Kadmin
+navPrev: 2.1-krbclient-apis.html
+navPrevText: 2.1 - KrbClient APIs
+navUp: 2-kerberos-library.html
+navUpText: 2 - Kerberos library
+navNext: 2.3-kdcserver.html
+navNextText: 2.3 - KdcServer
+---
+
+# 2.2 - Kadmin
+Server side admin facilities.
+
+
+
+## Local mode
+### Initiate a LocalKadminImpl
+* Initiate a LocalKadminImpl with prepared KdcConfig and BackendConfig.
+<pre>
+LocalKadmin kadmin = new LocalKadminImpl(kdcConfig, backendConfig);
+</pre>
+* Initiate a LocalKadmin with confDir.
+<pre>
+LocalKadmin kadmin = new LocalKadminImpl(confDir);
+</pre>
+* Initiate a LocalKadmin with kdcSetting and backend.
+<pre>
+LocalKadmin kadmin = new LocalKadminImpl(kdcSetting, backend);
+</pre>
+
+### Principal operating
+* Add principle with principal name.
+<pre>
+addPrincipal(principal);
+</pre>
+* Add principle with principal name and password.
+<pre>
+addPrincipal(principal, password);
+</pre>
+* Add principle with principal name and kOptions.
+<pre>
+addPrincipal(principal, kOptions);
+</pre>
+* Add principle with principal name, password and kOptions.
+<pre>
+addPrincipal(principal, password kOptions);
+</pre>
+* Delete principle with principal name.
+<pre>
+deletePrincipal(principal);
+</pre>
+* Modify principle with principal name and kOptions.
+<pre>
+modifyPrincipal(principal, kOptions);
+</pre>
+* Rename principle.
+<pre>
+renamePrincipal(oldPrincipalName, newPrincipalName);
+</pre>
+* Get principle with principal name.
+<pre>
+getPrincipal(principalName);
+</pre>
+* Get all the principles.
+<pre>
+getPrincipals();
+</pre>
+* Update password with principal name and new password.
+<pre>
+updatePassword(principal, newPassword);
+</pre>
+* Export all identity keys to the specified keytab file.
+<pre>
+exportKeyTab(keyTabFile);
+</pre>
+
+
diff --git a/source/kerby/user-guide/2.3-kdcserver.md b/source/kerby/user-guide/2.3-kdcserver.md
new file mode 100644
index 0000000..17cc6c0
--- /dev/null
+++ b/source/kerby/user-guide/2.3-kdcserver.md
@@ -0,0 +1,64 @@
+---
+title: 2.3 - KdcServer
+navPrev: 2.2-kadmin.html
+navPrevText: 2.2 - Kadmin
+navUp: 2-kerberos-library.html
+navUpText: 2 - Kerberos library
+navNext: 2.4-simplekdcserver.html
+navNextText: 2.4 - SimpleKdcServer
+---
+
+# 2.3 - KdcServer
+Kerberos Server API.
+
+
+
+### Initiate kdc server
+* Initiate a kdc server with prepared confDir.
+<pre>
+KdcServer server = new KdcServer(confDir);
+</pre>
+
+### Start and set kdc server
+* Start kdc server.
+<pre>
+start();
+</pre>
+* Set KDC realm for ticket request
+<pre>
+setKdcRealm(realm);
+</pre>
+* Set KDC host.
+<pre>
+setKdcHost(kdcHost);
+</pre>
+* Set KDC tcp port.
+<pre>
+setKdcTcpPort(kdcTcpPort);
+</pre>
+* Set KDC udp port. Only makes sense when allowUdp is set.
+<pre>
+setKdcUdpPort(kdcUdpPort);
+</pre>
+* Set to allow TCP or not.
+<pre>
+setAllowTcp(allowTcp);
+</pre>
+* Set to allow UDP or not.
+<pre>
+setAllowUdp(allowUdp);
+</pre>
+* Allow to debug so have more logs.
+<pre>
+enableDebug();
+</pre>
+* Allow to hook customized kdc implementation.
+<pre>
+setInnerKdcImpl(innerKdcImpl);
+</pre>
+
+### Stop kdc server
+* Start kdc server.
+<pre>
+stop();
+</pre>
diff --git a/source/kerby/user-guide/2.4-simplekdcserver.md b/source/kerby/user-guide/2.4-simplekdcserver.md
new file mode 100644
index 0000000..1b5119c
--- /dev/null
+++ b/source/kerby/user-guide/2.4-simplekdcserver.md
@@ -0,0 +1,77 @@
+---
+title: 2.4 - SimpleKdcServer
+navPrev: 2.3-kdcserver.html
+navPrevText: 2.3 - KdcServer
+navUp: 2-kerberos-library.html
+navUpText: 2 - Kerberos library
+navNext: 3-tools.html
+navNextText: 3 - tools
+---
+
+# 2.4 - SimpleKdcServer
+A simplified Kdc server. It can be imported by other project to work as a kdc server.
+
+### Kdc server
+</pre>
+* Start simple kdc server.
+<pre>
+start();
+</pre>
+* Set KDC realm for ticket request
+<pre>
+setKdcRealm(realm);
+</pre>
+* Set KDC host.
+<pre>
+setKdcHost(kdcHost);
+</pre>
+* Set KDC tcp port.
+<pre>
+setKdcTcpPort(kdcTcpPort);
+</pre>
+* Set KDC udp port. Only makes sense when allowUdp is set.
+<pre>
+setKdcUdpPort(kdcUdpPort);
+</pre>
+* Set to allow TCP or not.
+<pre>
+setAllowTcp(allowTcp);
+</pre>
+* Set to allow UDP or not.
+<pre>
+setAllowUdp(allowUdp);
+
+### Kadmin
+</pre>
+* Create principle with principal name.
+<pre>
+createPrincipal(principal);
+</pre>
+* Add principle with principal name and password.
+<pre>
+createPrincipal(principal, password);
+</pre>
+* Create principles with principal names.
+<pre>
+createPrincipals(principals);
+</pre>
+* Creates principals and export their keys to the specified keytab file.
+<pre>
+createAndExportPrincipals(keytabFile principals);
+</pre>
+* Delete principle with principal name.
+<pre>
+deletePrincipal(principal);
+</pre>
+</pre>
+* Delete principles with principal names.
+<pre>
+deletePrincipals(principals);
+</pre>
+</pre>
+* Export principles to keytab file.
+<pre>
+exportPrincipals(keytabFile);
+</pre>
+
+
diff --git a/source/kerby/user-guide/3-tools.md b/source/kerby/user-guide/3-tools.md
new file mode 100644
index 0000000..c5d0bc2
--- /dev/null
+++ b/source/kerby/user-guide/3-tools.md
@@ -0,0 +1,19 @@
+---
+title: 3 - Tools
+navPrev: 2.4-simplekdcserver.html
+navPrevText: 2.4 - SimpleKdcServer
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 3.1-kdcinit.html
+navNextText: 3.1 - kdcinit
+---
+
+# 3 - Tools
+Kerby provides tools including both client side and server side.
+
+## Table of content
+
+* [3.1 - kdcinit](3.1-kdcinit.html)
+* [3.2 - kadmin](3.2-kadmin.html)
+* [3.3 - kinit](3.3-kinit.html)
+* [3.4 - klist](3.4-klist.html)
\ No newline at end of file
diff --git a/source/kerby/user-guide/3.1-kdcinit.md b/source/kerby/user-guide/3.1-kdcinit.md
new file mode 100644
index 0000000..c3c8354
--- /dev/null
+++ b/source/kerby/user-guide/3.1-kdcinit.md
@@ -0,0 +1,20 @@
+---
+title: 3.1 - kdcinit
+navPrev: 3-tools.html
+navPrevText: 3 - tools
+navUp: 3-tools.html
+navUpText: 3 - tools
+navNext: 3.2-kadmin.html
+navNextText: 3.2 - kadmin
+---
+
+# 3.1 - kdcinit
+
+### SYNOPSIS
+
+kdcinit [conf_dir] [keytab]
+
+### DESCRIPTION
+
+kdcinit is used by admin to initialize and prepare all kinds of KDC side materials, like initializing concrete back end,
+setting necessary principals (tgs, kadmin) and etc.
diff --git a/source/kerby/user-guide/3.2-kadmin.md b/source/kerby/user-guide/3.2-kadmin.md
new file mode 100644
index 0000000..11a8fb8
--- /dev/null
+++ b/source/kerby/user-guide/3.2-kadmin.md
@@ -0,0 +1,37 @@
+---
+title: 3.2 - kadmin
+navPrev: 3.1-kdcinit.html
+navPrevText: 3.1 - kdcinit
+navUp: 3-tools.html
+navUpText: 3 - tools
+navNext: 3.3-kinit.html
+navNextText: 3.3 - kinit
+---
+
+# 3.2 - kadmin
+
+### SYNOPSIS
+
+kadmin [conf-dir] [-c cache_name] | [-k keytab_name]
+
+### DESCRIPTION
+
+kadmin is command-line interfaces to the Kerberos V5 administration system. kadmin provides for the maintenance of Kerberos principals, password policies, and service key tables (keytabs).
+
+### Commands
+
+* add_principal
+
+* modify_principal
+
+* rename_principal
+
+* delete_principal
+
+* change_password
+
+* get_principal
+
+* ktadd
+
+* ktremove
diff --git a/source/kerby/user-guide/3.3-kinit.md b/source/kerby/user-guide/3.3-kinit.md
new file mode 100644
index 0000000..5976812
--- /dev/null
+++ b/source/kerby/user-guide/3.3-kinit.md
@@ -0,0 +1,19 @@
+---
+title: 3.3 - kinit
+navPrev: 3.2-kadmin.html
+navPrevText: 3.2 - kadmin
+navUp: 3-tools.html
+navUpText: 3 - tools
+navNext: 3.4-klist.html
+navNextText: 3.4 - klist
+---
+
+# 3.3 - kinit
+
+### SYNOPSIS
+
+kinit [-conf conf_dir] [principal]
+
+### DESCRIPTION
+
+kinit obtains and caches an initial ticket-granting ticket for principal.
\ No newline at end of file
diff --git a/source/kerby/user-guide/3.4-klist.md b/source/kerby/user-guide/3.4-klist.md
new file mode 100644
index 0000000..a383bae
--- /dev/null
+++ b/source/kerby/user-guide/3.4-klist.md
@@ -0,0 +1,19 @@
+---
+title: 3.4 - klist
+navPrev: 3.3-kinit.html
+navPrevText: 3.3 - kinit
+navUp: 3-tools.html
+navUpText: 3 - tools
+navNext: 4-identity-backend.html
+navNextText: 4 - Identity Backend
+---
+
+# 3.4 - klist
+
+### SYNOPSIS
+
+klist [-c cache_name] | [-k keytab_name]
+
+### DESCRIPTION
+
+klist lists the Kerberos principal and Kerberos tickets held in a credentials cache, or the keys held in a keytab file.
\ No newline at end of file
diff --git a/source/kerby/user-guide/4-identity-backend.md b/source/kerby/user-guide/4-identity-backend.md
new file mode 100644
index 0000000..579e2e8
--- /dev/null
+++ b/source/kerby/user-guide/4-identity-backend.md
@@ -0,0 +1,27 @@
+---
+title: 4 - Identity Backend
+navPrev: 3.4-klist.html
+navPrevText: 3.4 - klist
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 5-crypto-and-encryption-types.html
+navNextText: 5 - Kerberos Crypto and Encryption Types
+---
+
+# 4 - Identity Backend
+A standalone KDC server that can integrate various identity back ends including:
+
+* MemoryIdentityBackend.
+ * It is default Identity Backend, and no cofiguration is needed. This backend is for no permanent storage requirements.
+
+* JsonIdentityBackend.
+ * It implemented by Gson which is used to convert Java Objects into their JSON representation and convert a JSON string to an equivalent Java object. A json file will be created in "backend.json.file". This backend is for small, easy, development and test environment.
+
+* ZookeeperIdentityBackend.
+ * Currently it uses an embedded Zookeeper. In follow up it will be enhanced to support standalone Zookeeper cluster for replication and reliability. Zookeeper backend would be a good choice for high reliability, high performance and high scalability requirement and scenarios.
+
+* LdapIdentityBackend.
+ * The Ldap server can be standalone or embedded using ApacheDS server as the backend. It is used when there is exist ldap server.
+
+* MavibotBackend.
+ * A backend based on Apache Mavibot(an MVCC BTree library).
\ No newline at end of file
diff --git a/source/kerby/user-guide/5-crypto-and-encryption-types.md b/source/kerby/user-guide/5-crypto-and-encryption-types.md
new file mode 100644
index 0000000..a00661b
--- /dev/null
+++ b/source/kerby/user-guide/5-crypto-and-encryption-types.md
@@ -0,0 +1,34 @@
+---
+title: 5 - Kerberos Crypto and Encryption Types
+navPrev: 4-identity-backend.html
+navPrevText: 4 - Identity Backend
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 6-network-support.html
+navNextText: 6 - Network Support
+---
+
+# 5 - Kerberos Crypto and Encryption Types
+
+Supported des, des3, rc4, aes, camellia encryption and corresponding checksum types
+Interoperates with MIT Kerberos and Microsoft AD
+Independent of Kerberos code in JRE, but rely on JCE
+
+| Encryption Type | Description |
+| --------------- | ----------- |
+| des-cbc-crc | DES cbc mode with CRC-32 (weak) |
+| des-cbc-md4 | DES cbc mode with RSA-MD4 (weak) |
+| des-cbc-md5 | DES cbc mode with RSA-MD5 (weak) |
+| des3-cbc-sha1 des3-hmac-sha1 des3-cbc-sha1-kd | Triple DES cbc mode with HMAC/sha1 |
+| des-hmac-sha1 | DES with HMAC/sha1 (weak) |
+| aes256-cts-hmac-sha1-96 aes256-cts AES-256 | CTS mode with 96-bit SHA-1 HMAC |
+| aes128-cts-hmac-sha1-96 aes128-cts AES-128 | CTS mode with 96-bit SHA-1 HMAC |
+| arcfour-hmac rc4-hmac arcfour-hmac-md5 | RC4 with HMAC/MD5 |
+| arcfour-hmac-exp rc4-hmac-exp arcfour-hmac-md5-exp | Exportable RC4 with HMAC/MD5 (weak) |
+| camellia256-cts-cmac camellia256-cts | Camellia-256 CTS mode with CMAC |
+| camellia128-cts-cmac camellia128-cts | Camellia-128 CTS mode with CMAC |
+| des | The DES family: des-cbc-crc, des-cbc-md5, and des-cbc-md4 (weak) |
+| des3 | The triple DES family: des3-cbc-sha1 |
+| aes | The AES family: aes256-cts-hmac-sha1-96 and aes128-cts-hmac-sha1-96 |
+| rc4 | The RC4 family: arcfour-hmac |
+| camellia | The Camellia family: camellia256-cts-cmac and camellia128-cts-cmac |
diff --git a/source/kerby/user-guide/6-network-support.md b/source/kerby/user-guide/6-network-support.md
new file mode 100644
index 0000000..8d0adfc
--- /dev/null
+++ b/source/kerby/user-guide/6-network-support.md
@@ -0,0 +1,18 @@
+---
+title: 6 - Network Support
+navPrev: 5-crypto-and-encryption-types.html
+navPrevText: 5 - Kerberos Crypto and Encryption Types
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 7-dependency.html
+navNextText: 7 - Dependency
+---
+
+# 6 - Network Support
+
+* Include UDP and TCP transport.
+* Default KDC server implementation.
+ * The Networking Classes in the JDK is used.
+* Netty based KDC server implementation.
+ * Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
+ * With better throughput, lower latency.
\ No newline at end of file
diff --git a/source/kerby/user-guide/7-dependency.md b/source/kerby/user-guide/7-dependency.md
new file mode 100644
index 0000000..9b61c1c
--- /dev/null
+++ b/source/kerby/user-guide/7-dependency.md
@@ -0,0 +1,14 @@
+---
+title: 7 - Dependency
+navPrev: 6-network-support.html
+navPrevText: 6 - Network Support
+navUp: ../user-guide.html
+navUpText: User Guide
+---
+
+# 7 - Dependency
+
+* The core part is ensured to only depend on the JRE and SLF4J. Every external dependency is taken carefully and maintained separately.
+* [Nimbus JOSE + JWT](http://connect2id.com/products/nimbus-jose-jwt), needed by token-provider and TokenPreauth mechanism.
+* [Netty](http://netty.io/), needed by netty based KDC server.
+* [Zookeeper](https://zookeeper.apache.org/), needed by zookeeper identity backend.
\ No newline at end of file
diff --git a/source/kerby/vision.md b/source/kerby/vision.md
new file mode 100644
index 0000000..fd7d762
--- /dev/null
+++ b/source/kerby/vision.md
@@ -0,0 +1,7 @@
+---
+title: Kerby - Vision
+---
+
+# Vision
+
+Kerby is an implementation of Kerberos V5 protocol in pure Java.
diff --git a/source/mailing-lists-and-irc.md b/source/mailing-lists-and-irc.md
new file mode 100644
index 0000000..306a205
--- /dev/null
+++ b/source/mailing-lists-and-irc.md
@@ -0,0 +1,59 @@
+---
+title: Mailing lists and IRC
+---
+
+# Mailing lists and IRC
+
+## Mailing list etiquette
+
+Please consider the following before posting Emails to the lists:
+
+* No posts with html.
+* No cross posting.
+* Change the subject when appropriate (meaning when the conversation topic has shifted to something other than the old subject line).
+* Start threads with tags for tracking different kinds of subjects. So far we have the following for the dev list:
+ * [ApacheDS]
+ * [Studio]
+ * [Site]
+ * [Fortress]
+ * [Kerby]
+ * [SCIMple]
+ * [Community]
+ * [Release]
+ * [VOTE]
+ * [OT]
+
+An article by Eric Steven Raymond very worth reading is found here: [How To Ask Questions The Smart Way](http://www.catb.org/esr/faqs/smart-questions.html).
+
+
+## Project mailing lists
+
+These are the mailing lists that have been established for this project. We haven't a distinguished mailing list for each of the sub-projects : if you have questions about Escimo, Mavibot or ApacheDS, for instance, you have to use the Directory Users or Developpers mailing list.
+
+### Subscribing
+
+Subscribing to one of the existing mailing lists is only a matter of sending an empty mail (no subject, no content) to **(mailing list name)**-subscribe@directory.apache.org. You can find the list of mailing list names in the table below. For instance, to subscribe to the **dev** mailing list, send a mail to **dev-subscribe@directory.apache.org**.
+
+### Unsubscribing
+
+Unsubscribing from one of the existing mailing lists is only a matter of sending an empty mail (no subject, no content) to **(mailing list name)**-unsubscribe@directory.apache.org. You can find the list of mailing list names in the table below. For instance, to unsubscribe from the **dev** mailing list, send a mail to **dev-unsubscribe@directory.apache.org**.
+
+### Existing Mailing lists
+
+For each list, there is a subscribe, unsubscribe, and an archive link:
+
+| Name | Description | Subscribe | Unsubscribe | Post | Archive |
+|---|---|:-:|:-:|:-:|:-:|
+| **dev** | The Directory Developers List | [Subscribe](mailto:dev-subscribe@directory.apache.org) | [Unsubscribe](mailto:dev-unsubscribe@directory.apache.org) | [Post](mailto:dev@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-dev) |
+| **users** | The Directory Users List| [Subscribe](mailto:users-subscribe@directory.apache.org) | [Unsubscribe](mailto:users-unsubscribe@directory.apache.org) | [Post](mailto:users@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-users) |
+| **commits** | The Directory Commits List | [Subscribe](mailto:commits-subscribe@directory.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@directory.apache.org) | — | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-commits) |
+| **api** | The LDAP API List | [Subscribe](mailto:api-subscribe@directory.apache.org) | [Unsubscribe](mailto:api-unsubscribe@directory.apache.org) | [Post](mailto:api@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-api) |
+| **fortress** | The Fortress List | [Subscribe](mailto:fortress-subscribe@directory.apache.org) | [Unsubscribe](mailto:fortress-unsubscribe@directory.apache.org) | [Post](mailto:fortress@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-fortress) |
+| **kerby** | The Kerby List | [Subscribe](mailto:kerby-subscribe@directory.apache.org) | [Unsubscribe](mailto:kerby-unsubscribe@directory.apache.org) | [Post](mailto:kerby@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-kerby) |
+| **scimple** | The SCIMple List | [Subscribe](mailto:scimple-subscribe@directory.apache.org) | [Unsubscribe](mailto:scimple-unsubscribe@directory.apache.org) | [Post](mailto:scimple@directory.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/directory-scimple) |
+
+## IRC channels
+
+* Users IRC channel: [#apache-directory @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory)
+* Developers IRC channel: [#apache-directory-dev @ irc://irc.freenode.net](irc://irc.freenode.net/apache-directory-dev)
+* Fortress IRC channel: [#apache-fortress @ irc://irc.freenode.net](irc://irc.freenode.net/apache-fortress)
diff --git a/source/mavibot/__index.md b/source/mavibot/__index.md
new file mode 100644
index 0000000..a33557e
--- /dev/null
+++ b/source/mavibot/__index.md
@@ -0,0 +1,25 @@
+---
+type: mavibot
+title: Welcome to Apache Mavibot
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="left">
+ <h1>Apache Mavibot™</h1>
+ <h2>MVCC BTree Java Implementation</h2>
+ <div class="description">
+ Mavibot™ is a <em>Multi Version Concurrency Control</em> (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the Apache Directory Server), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+ </div>
+ <div class="download-link">
+ <a href="/mavibot/downloads.html" class="download_badge"><b>Download Apache<br>Mavibot {{< param version_mavibot >}}</b></a>
+ </div>
+ </div>
+ <div class="right">
+ <img src="../images/hero-mavibot.jpg" width="377" height="287" border="0"/>
+ </div>
+</div>
+
+<div class="news">
+ {{< grabpage "mavibot/news.md" >}}
+</div>
diff --git a/source/mavibot/coding-standards.md b/source/mavibot/coding-standards.md
new file mode 100644
index 0000000..504737e
--- /dev/null
+++ b/source/mavibot/coding-standards.md
@@ -0,0 +1,154 @@
+---
+title: Mavibot Coding Standards
+---
+
+# Mavibot Coding Standards
+
+Welcome to you fellow developer. You've maybe been elected committer on the project, or want to contribute some code / patch? This is great news! However, in order to be able to share your 'vision' with your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enforce the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enforce the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
+
+```java
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+```
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A description of this class/interface
+* an *author* tag which should be :
+
+```java
+@author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+```
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting your name and e-mail, you will intimidate other developer ("Oh, no, I won't mess with this code, it has been developed by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's member are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a piece of code, then this piece of code might be too complex ...
+* Spreading little comments all over a method : if possible, write blocs of comments. The method header generally contains a full description of the code, and if it's not the case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a coffin. We use SVN, the Ressuscitator !
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please !
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningful names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instance if you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+```java
+...
+int result = myMethod( param1, param2 )
+
+if ( result > 0 )
+{
+ // do something
+}
+...
+```
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use common sense, look at what you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
diff --git a/source/mavibot/developer-guide.md b/source/mavibot/developer-guide.md
new file mode 100644
index 0000000..d0daee5
--- /dev/null
+++ b/source/mavibot/developer-guide.md
@@ -0,0 +1,412 @@
+---
+title: Mavibot Developers Guide
+---
+
+# Mavibot Developers Guide
+
+We will describe how to get the code, build it, and release it.
+
+{{% toc %}}
+
+## Getting the source, Building the trunks
+
+### Prerequisites for building
+
+You must have installed **Maven 3.0.4** and have a **JDK 7** installed on your computer. A working internet connection is also mandatory, unless you have all the needed dependences and plugins loaded locally.
+
+<DIV class="note" markdown="1">
+If the build hangs or you get an out of memory exception please increase the heap space:
+
+* For Linux:
+
+ MAVEN_OPTS="-Xmx1024m" mvn clean install
+
+* For Windows:
+
+ SET MAVEN_OPTS="-Xmx1024m"
+ mvn clean install
+</DIV>
+
+### Maven
+
+[Download](http://maven.apache.org/download.html) and install Maven 3.0.4.
+
+Add a MAVEN_HOME environment variable and add MAVEN_HOME/bin to your system path:
+
+On a Linux box you could add the following to the .bashrc file (.bashrc is a file you'll find in your home directory)
+
+
+ ...
+ export MAVEN_HOME=/opt/maven-3.0.4
+ export PATH=$JAVA_HOME:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
+ ...
+
+Windows users, use Control Panel -> System -> Advanced -> Environment Variables
+
+### JDK 7
+
+<DIV class="note" markdown="1">
+We recommend using a version >= 1.7
+</DIV>
+
+Any newer version should also work.
+
+## Getting the code
+
+To download the sources from trunk, you must have installed a **Subversion** client.
+
+With readonly access :
+
+ svn co http://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
+
+With read/write access (for committers only) :
+
+ svn co https://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
+
+## Building the trunk
+
+You may either specify the profile at the command-line, each time you use 'mvn', or you may configure the profile to always be active.
+
+To use a profile at the command-line:
+
+ # mvn [-P<profile>] [options] [<goal(s)>] [<phase(s)>]
+
+
+### Building the trunk, for real
+
+Now, we can compile the projects.
+
+The command is simple :
+
+ cd mavibot-trunk
+ mvn clean install
+
+A lot of plugins will be downloaded. If you are curious, you can then look at .m2/repository to see what has been downloaded on this step.
+
+Building should finish with these lines:
+
+
+ [INFO] ------------------------------------------------------------------------
+ [INFO] BUILD SUCCESSFUL
+ [INFO] ------------------------------------------------------------------------
+ [INFO] Total time: 8 minutes 30 seconds
+ [INFO] Finished at: Mon Oct 30 23:32:41 CET 2006
+ [INFO] Final Memory: 18M/32M
+ [INFO] ------------------------------------------------------------------------
+
+
+That's it, the jars will be find in target/mavibot-1.0.0-M?-<XXXXXX>-setup.jar where XXXXXX is your local system and M? is the milestone release number for the 1.0 branch.
+
+## Eclipse
+
+We use Eclipse extensively, so these chapters, byt any other idea would be ok too.
+
+### Building eclipse files
+
+To build the .project and .classpath files for eclipse, type the following commands :
+
+ cd mavibot-trunk
+ mvn eclipse:eclipse
+
+### Maven settings
+
+Don't forget to declare a classpath variable named M2_REPO, pointing to ~/.m2/repository, otherwise many links to existing jars will be broken.
+
+You can declare new variables in Eclipse in _Windows -> Preferences..._ and selecting _Java -> Build Path -> Classpath Variables_
+
+## Coding standards
+
+The applicable coding standards for Mavibot are described in [Coding Standards](coding-standards.html)
+
+There are some more rules, as we are using **Java 7** now :
+
+* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
+* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
+* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
+* Use the new *Enum* type !
+
+# Releasing Mavibot
+
+Since we are using Nexus for releases the release process is as follows (see also [http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven](publishing-maven-artifacts.html)).
+
+## Test the Project
+
+
+ $ mvn release:prepare -DdryRun=true
+
+Be aware that this phase will ask you about the next version, and most important, for the next SCM tag :
+
+
+ ...
+ [INFO] Checking dependencies and plugins for snapshots ...
+ What is the release version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: :
+ What is the release version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M1: :
+ What is the release version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M1: :
+ What is SCM release tag or label for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: :
+ What is the new development version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M2-SNAPSHOT: :
+ What is the new development version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M2-SNAPSHOT: :
+ What is the new development version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M2-SNAPSHOT: :
+
+Here, we just validated the proposed versions.
+
+## Deploy a Snapshot
+
+
+ $ mvn deploy
+
+This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
+
+## Prepare the Release
+
+
+ $ mvn release:clean
+ $ mvn release:prepare
+
+This creates a tag here: http://svn.apache.org/viewvc/directory/mavibot/tags/
+
+## Stage the Release
+
+
+ $ mvn release:perform
+
+This deploys the release to a staging repository.
+
+Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and close the staging repository.
+
+## Build the Site
+
+
+ $ cd target/checkout
+ $ mvn site
+
+This creates the javadocs and the cross-references.
+
+Now, you have to sign the binary packages which are in target/checkout/distribution/target.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+
+You can get the keys by typing :
+
+ gpg --list-keys
+
+## Publish Source and Binary Distribution Packages
+
+First of all, create a new directory on people.apache.org/public_html to store the packages :
+
+
+ $ ssh people.apache.org
+ $ mkdir public_html/mavibot-<version>
+ $ exit
+
+Then copy the packages :
+
+
+ $ cd distributions/target
+ $ scp mavibot-<version>-* people.apache.org:public_html/mavibot-<version>/
+
+Update your index.html file on people.apache.org/public_html to make the packages visible. Here is an example of possible content :
+
+```html
+<h2>Mavibot 1.0.0-M1 tarballs</h2>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz">mavibot-1.0.0-M1-bin.tar.gz</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.asc">mavibot-1.0.0-M1-bin.tar.gz.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.md5">mavibot-1.0.0-M1-bin.tar.gz.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.sha1">mavibot-1.0.0-M1-bin.tar.gz.sha1</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip">mavibot-1.0.0-M1-bin.zip</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.asc">mavibot-1.0.0-M1-bin.zip.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.md5">mavibot-1.0.0-M1-bin.zip.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.sha1">mavibot-1.0.0-M1-bin.zip.sha1</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2">mavibot-1.0.0-M1-src.tar.bz2</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.asc">mavibot-1.0.0-M1-src.tar.bz2.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.md5">mavibot-1.0.0-M1-src.tar.bz2.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.sha1">mavibot-1.0.0-M1-src.tar.bz2.sha1</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz">mavibot-1.0.0-M1-src.tar.gz</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.asc">mavibot-1.0.0-M1-src.tar.gz.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.md5">mavibot-1.0.0-M1-src.tar.gz.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.sha1">mavibot-1.0.0-M1-src.tar.gz.sha1</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip">mavibot-1.0.0-M1-src.zip</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.asc">mavibot-1.0.0-M1-src.zip.asc</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.md5">mavibot-1.0.0-M1-src.zip.md5</a><br/>
+ <img src="/icons/compressed.gif" alt="[ ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.sha1">mavibot-1.0.0-M1-src.zip.sha1</a><br/>
+```
+
+## Vote
+
+Start a 72h vote at the dev mailing list.
+
+Here is an exemple of a mote mail :
+
+
+ Hi !
+
+ This is the first release of Apache Mavibot, the MVCC BTree in Java !
+
+ This milestone is the first step toward a complete MVCC implementation,
+ it currently does not handle versions at all. Anyway, it's already a in
+ memory/On disk full BTree implementation, which is 2 to 3 times faster
+ than JDBM.
+
+ The next milestones will add the missing features :
+ - bulk load support
+ - multi-version support with free pages management
+ - transaction support
+
+ ApacheDS has already been tested with Mavibot 1.0.-M1-SNAPSHOT, and it
+ offers pretty good performances compared to JDBM, except when we inject
+ a lot of entries in the server.
+
+ So let's vote now !
+
+
+ The revision :
+
+ http://svn.apache.org/r1511750
+
+
+ The SVN tag:
+ https://svn.apache.org/repos/asf/directory/mavibot/tags/1.0.0-M1/
+
+ The source and binary distribution packages:
+ http://people.apache.org/~elecharny/
+
+ The staging repository:
+ https://repository.apache.org/content/repositories/orgapachedirectory-073/
+
+
+ Please cast your votes:
+ [ ] +1 Release Mavibot 1.0.0-M1
+ [ ] 0 abstain
+ [ ] -1 Do not release Mavibot 1.0.0-M1
+
+ Emmanuel
+
+## Release
+
+If the vote succeeds the Mavibot project can be released.
+
+Go to [https://repository.apache.org/index.html#stagingRepositories](https://repository.apache.org/index.html#stagingRepositories) and release the staging repository so all artifacts are published to Maven central.
+
+Move the distribution packages (sources and binaries) to the dist SVN repository:
+
+ **https://dist.apache.org/repos/dist/release/directory/mavibot/dist/$(version)**
+
+The best solution would be to checkout the directory in people.apache.org, to copy the packages in the right place, and to check in the changes :
+
+
+ $ ssh people.apache.org
+ # svn co https://dist.apache.org/repos/dist/release/directory/mavibot/dist/ mavibot-dist
+ # cd mavibot-dist
+ # mkdir <version>
+ # cp ../public_html/mavibot-<version>/* <version>
+ # svn add <version>
+ # svn ci <version> -m "Releasing Mavibor <version>"
+ Authentication realm: <https://dist.apache.org:443> ASF Committers
+ Password for '<committer>': xyz
+ ...
+ # exit
+ $
+
+The packages should now be available on **http://www.us.apache.org/dist/directory/mavibot/dist/<version>**
+
+## Deploy the Javadocs and XRef
+
+We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
+
+
+ target/checkout/target/site
+
+We will copy two directories :
+
+
+ apidocs
+ xref
+
+*Staging or Production?*
+
+Those files will be stored on the production server only !!! And some extra caution must be taken not to delete them when we will publish the staging site too...
+
+First of all, you must checkout the two CMS store for the site : staging and revision.
+
+
+ $ cd ~/apacheds
+ $ svn co https://svn.apache.org/repos/infra/websites/staging/directory/trunk staging
+ ...
+ $ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+ ...
+
+Now, you will first add the directory for the newly generated version :
+
+
+ $ cd ~/apacheds/production/content/mavibot/gen-docs
+ $ mkdir <version>
+ $ svn add <version>
+
+Then copy the generated docs :
+
+
+ $ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/apidocs ~/apacheds/production/content/mavibot/gen-docs/<version>
+ $ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/xref ~/apacheds/production/content/mavibot/gen-docs/<version>
+ $
+
+You have to check in those directories :
+
+
+ $ svn add <version>/*
+ $ svn ci <version> -m "Injected <version> javadocs"
+
+Now, you have to update the staging site :
+
+
+ extpaths.txt
+
+This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
+
+
+ $ cd ~/apacheds/staging/content/
+ $ vi extpaths.txt
+
+Add the following line :
+
+
+ ...
+ # Mavibot
+ mavibot/gen-docs/<version>
+ ...
+
+then save and check in the file
+
+**.htaccess**
+
+We also have to update this file :
+
+
+ $ cd ~/apacheds/staging/content/mavibot/gen-docs
+ $ vi .htaccess
+
+And update the two last lines to refer to the version you've just released :
+
+
+ RewriteRule ^latest$ <version>/
+ RewriteRule ^latest/(.*)$ <version>/$1
+
+Save and commit the file.
+
+## Update the web site
+
+You can now update the site, add a news on the front page, and publish the site.
+
+There are a few places to modify :
+- /lib/path.pm : update the $version_mavibot variable with the new version.
+- /content/index.mdtext : same here, update the <!-- MAVIBOT project --> section, which contains the version.
+- /content/mavibot/news.mdtext : add the news on top of thise page
+- /content/mavibot/download-old-versions.mdtext : add a new line on top of the array, which refers to the latest version before the new one
+
+Commit the changes, and publish the web site, you are done !
+
+## Inform the world !
+
+After 24h, you can now inform the world about the release.
+
+Send a mail to the users and dev mailing list, and one to the announce@apache.org list.
+
+You are done !
diff --git a/source/mavibot/download-old-versions.md b/source/mavibot/download-old-versions.md
new file mode 100644
index 0000000..52314db
--- /dev/null
+++ b/source/mavibot/download-old-versions.md
@@ -0,0 +1,47 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+<CENTER>
+
+| Version| Download Link | Javadoc & XRef | Date |
+|:-:|:-:|:-:|:-:|
+| Apache MAVIBOT 1.0.0-M7 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M7) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M7/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M7/xref/) | 27/mar/2015 |
+| Apache MAVIBOT 1.0.0-M6 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M6) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M6/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M6/xref/) | 16/nov/2014 |
+| Apache MAVIBOT 1.0.0-M5 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M5) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M5/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M5/xref/) | 04/jul/2014 |
+| Apache MAVIBOT 1.0.0-M4 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M4) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M4/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M4/xref/) | 13/mar/2014 |
+| Apache MAVIBOT 1.0.0-M3 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M3) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M3/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M3/xref/) | 16/Dec/2013 |
+| Apache MAVIBOT 1.0.0-M2 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M2) | [Javadoc](https://directory.apache.org/mavibot/gen-docs/1.0.0-M2/apidocs/), [Xref](https://directory.apache.org/mavibot/gen-docs/1.0.0-M2/xref/) | 06/Nov/2013 |
+| Apache MAVIBOT 1.0.0-M1 | [Download](https://archive.apache.org/dist/directory/mavibot/dist/1.0.0-M1) | N/A | 06/Jun/2013 |
+
+</CENTER>
+
+<DIV class="note" markdown="1">
+We encourage you to verify the integrity of the downloaded file using:
+
+* the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+* the MD5 file (checksum).
+</DIV>
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [keys](https://downloads.apache.org/directory/KEYS) file as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+
+
+Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/], or [here|http://www.slavasoft.com/fsum/).
diff --git a/source/mavibot/download/download-archive.md b/source/mavibot/download/download-archive.md
new file mode 100644
index 0000000..32806b9
--- /dev/null
+++ b/source/mavibot/download/download-archive.md
@@ -0,0 +1,74 @@
+---
+title: Downloads for Archive
+---
+
+# Downloads for Archive
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.zip">
+ <strong>
+ [preferred]/[...]/mavibot-{{< param version_mavibot >}}-bin.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.zip.sha1">SHA-1</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.tar.gz">
+ <strong>
+ [preferred]/[...]/mavibot-{{< param version_mavibot >}}-bin.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-bin.tar.gz.sha1">SHA-1</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}mavibot-{{< param version_mavibot >}}-bin.zip{{< /download-verify >}}
diff --git a/source/mavibot/download/download-sources.md b/source/mavibot/download/download-sources.md
new file mode 100644
index 0000000..61e7471
--- /dev/null
+++ b/source/mavibot/download/download-sources.md
@@ -0,0 +1,74 @@
+---
+title: Downloads for Sources
+---
+
+# Downloads for Archive
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## ZIP Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.zip">
+ <strong>
+ [preferred]/[...]/mavibot-{{< param version_mavibot >}}-src.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.zip.sha1">SHA-1</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## TAR.GZ Archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.tar.gz">
+ <strong>
+ [preferred]/[...]/mavibot-{{< param version_mavibot >}}-src.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{< param version_mavibot >}}/mavibot-{{< param version_mavibot >}}-src.tar.gz.sha1">SHA-1</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}apache-mavibot-{{< param version_mavibot >}}-src.zip{{< /download-verify >}}
diff --git a/source/mavibot/downloads.md b/source/mavibot/downloads.md
new file mode 100644
index 0000000..a4e22ee
--- /dev/null
+++ b/source/mavibot/downloads.md
@@ -0,0 +1,22 @@
+---
+title: Mavibot Downloads
+---
+
+# Downloads
+
+## Jar Download
+
+The Apache Mavibot package is distributed as a jar.
+
+* ![Download](../images/download-archive.png) [Download Archive zip/tar.gz](download/download-archive.html)
+* ![Download](../images/download-sources.png) [Download Sources](download/download-sources.html)
+
+## Maven Dependency
+
+The Apache Mavibot package is also available as a Maven dependency:
+
+ <dependency>
+ <groupId>org.apache.directory.mavibot</groupId>
+ <artifactId>mavibot</artifactId>
+ <version>${mavibot-version}</version>
+ </dependency>
\ No newline at end of file
diff --git a/source/mavibot/five-minutes-tutorial.md b/source/mavibot/five-minutes-tutorial.md
new file mode 100644
index 0000000..f1443c0
--- /dev/null
+++ b/source/mavibot/five-minutes-tutorial.md
@@ -0,0 +1,99 @@
+---
+title: Five Minutes Tutorial
+---
+
+# Five Minutes Tutorial
+
+Let's drop a quick sample first :
+
+```java
+// Create a BTree that stores String indexed by a Long
+BTree<Long, String> btree = new BTree<Long, String>( "test", new LongSerializer(), new StringSerializer() );
+
+// Inject some random data in it
+for ( long i = 0L; i < 10000L; i++ )
+{
+ Long key = ( long ) random.nextLong();
+ String value = Long.toString( key );
+
+ btree.insert( key, value );
+}
+
+// Check that the tree contains all the values
+try
+{
+ for ( long i = 0L; i < 100000L; i++ )
+ {
+ assertEquals( Long.toString( i ), btree.get( i ) );
+ }
+}
+catch ( KeyNotFoundException knfe )
+{
+ fail();
+}
+
+// Let's close the BTree now
+btree.close();
+```
+
+So what do we have here ?
+
+* we have created a BTree
+* we have fed it with 10 000 keys and values
+* we have read all of them
+
+That's pretty simple ! All you have to do is to carefully create your BTree, and to provide the Key and Value serializers.
+
+We will now look a little more in detail what you can do.
+
+## BTrees and storage
+
+A BTree knows pretty much nothing about the way the data it contains are stored. The default is to store data in memory, with a backup being done on disk regularly, so that you don't lose anything in case of a crash. This is what we have done in the previous example.
+
+But you can also associate a _BTree_ to a _RecordManager_, which will manage the storage on disk on any modification. In this case, the RecordManager will encapsulate the _BTree_ (in fact, a _RecordManager_ can handle more than one _BTree_). Here is how you use this feature :
+
+```java
+// Create the RecordManager
+RecordManager recordManager = new RecordManager( "MyData.db" );
+
+// Delegate the creation of the BTree to the recordManager
+BTree<Long, String> btree = recordManager1.addBTree( "test", new LongSerializer(), new StringSerializer(), false );
+
+// Do whatever you want with the BTree now...
+
+// Close the RecordManager. It will close all the associated BTrees
+recordManager.close();
+```
+
+Here, all the modifications will be stored on disk, and in an efficient way.
+
+## Operations on a BTree
+
+The type of operations you can conduct on a _Btree_ are listed below (for the most useful ones )
+
+* browse : allow a user to browse the full _BTree_ up and down
+* contains : tells if a _BTree_ contains a specific key and value
+* delete : delete from a _BTree_
+* get : return a value from a key
+* hasKey : tells if the _BTree_ contains a specific key
+* insert : inject a new key and values in a _BTree_
+
+You will find a detailed description of all the associated methods in the Mavibot javadoc.
+
+## Values
+
+A _BTree_ can store single value or multiple values, associated to a key. The _AllowDuplicates_ flags is set to true if you want to store multiple values associated with one key.
+
+The default _BTree_ will only accept single value.
+
+## Revisions
+
+Your _BTree_ can store a new revision for each new modification done on it. Those revisions are kept until no operation are holding them. The _BTree_ operations can all be done using a specific revision number.
+
+Once the revision is not longer in use, the associated pages are likely to be reclaimed.
+
+## Cache
+
+We don't implement a cache : we depends on Java for that. The _BTree_ is stored in memory, using class instances, and are eventually loaded from disk if they are not present in memory. We use [_WeakReference_](http://docs.oracle.com/javase/7/docs/api/java/lang/ref/WeakReference.html) to hold all the pages.
+
+As the _Java_ garbage collector already keeps in memory the most frequently used data, it's likely that the important pages - ie, the top of each _BTree_ - will be kept in memory.
\ No newline at end of file
diff --git a/source/mavibot/news.md b/source/mavibot/news.md
new file mode 100644
index 0000000..4007b9f
--- /dev/null
+++ b/source/mavibot/news.md
@@ -0,0 +1,177 @@
+---
+title: News
+---
+
+# News
+<h2 class="news">Apache Mavibot 1.0.0-M8 released <em>posted on August 16th, 2015</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M8 the
+eighth milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a
+replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a
+good fit for any other project in need of a Java MVCC BTree implementation.
+
+This version contains support for free-page management. It is not yet production ready, support
+for cross-B-tree transaction system is not present yet, and this will be our target for the next
+release.
+
+Downloads are available [here](downloads.html)
+
+# News
+<h2 class="news">Apache Mavibot 1.0.0-M7 released <em>posted on March 27th, 2015</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M7 the seventh milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+This version fixes some serious issues in the way we browse a B-tree, and in the transaction support. It's not yet
+production ready, we still are missing the free-page management and a cross-B-tree transaction system, which will
+be our target for the next release.
+
+Downloads are available [here](downloads.html)
+
+# News
+<h2 class="news">Apache Mavibot 1.0.0-M6 released <em>posted on November 16th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M6, the sixth milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+This version brings a complete support for Bulk-Loading of persistent btrees, and fixes a few bugs :
+
+* MAVIBOT-32 Add Bulk Load
+* MAVIBOT-34 Support revisions
+* MAVIBOT-36 Runtime dependencies on slf4j-log4j and log4j cause conflicts
+* MAVIBOT-42 The TupleCursor always reuse the same internal tuple instance...
+
+
+This is by far not the latest milestone
+
+**ApacheDS** has already been tested with **Mavibot 1.0.0-M6-SNAPSHOT**
+
+Downloads are available [here](downloads.html)
+
+# News
+<h2 class="news">Apache Mavibot 1.0.0-M5 released <em>posted on July 4th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M5, the fifth milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+This version brings some new improvements in the API and the performances. The In-memory and Persisted B-trees classes have
+been moved into the same package, to avoid exposing the methods to the external world. We also have shared the common methods.
+
+We have added a partial support for the bulk-load feature, and a few speed improvements.
+
+This is by far not the latest milestone, the next one will bring major changes : revisions support, transaction support.
+
+**ApacheDS** has already been tested with **Mavibot 1.0.0-M5-SNAPSHOT**
+
+Downloads are available [here](downloads.html)
+
+# News
+<h2 class="news">Apache Mavibot 1.0.0-M4 released <em>posted on March 13th, 2014</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M4, the forth milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+This version brings some new improvements in the API and the performances. The In-memory and Persisted B-trees classes have
+been moved into the same package, to avoid exposing the methods to the external world. We also have shared the common methods.
+
+Some specific exceptions have been created.
+
+Here is the list of fixed issues :
+
+<b>Bug</b>
+
+ * MAVIBOT-20 - Btree created with the duplicateValues flag to false still accept duplicate values
+
+</b>Improvements</b>
+
+ * MAVIBOT-25 - Don't update the RMHeader for each free page we get
+ * MAVIBOT-27 - Aggregate the Persisted and InMemory common methods
+ * MAVIBOT-28 - Move the Persited and InMemory classes into the same package
+ * MAVIBOT-29 - Use a BtreeFactory to create BTrees
+ * MAVIBOT-30 - Replace the RuntimeException by specific exceptions
+ * MAVIBOT-33 - Serializer and comparator should be static instances
+
+
+This is by far not the latest milestone, the next one will bring major changes : revisions support, transaction support.
+
+**ApacheDS** has already been tested with **Mavibot 1.0.-M4-SNAPSHOT**
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Mavibot 1.0.0-M3 released <em>posted on December 16th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M3, the third milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+Some big refactoring in this milestone, as many of the classes and
+interfaces are now comon to both the managed and in-memory btrees.
+A replace method has been added, the cache is now shared with the
+btree subtrees, and we don't create a subtrees for each values when
+the BTree allows duplicate values, which leads to better performance.
+
+Most important, we don't anymore deserialize the whole page when it
+is read from disk, we just deserialize the needed keys and values.
+This single change boost the performance by an order of magnitude.
+
+The cursors have been refactored, and some tests have been added.
+
+Many other bugs have been fixed.
+
+**ApacheDS** has already been tested with **Mavibot 1.0.-M3-SNAPSHOT**
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Mavibot 1.0.0-M2 released <em>posted on November 6th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M2, the second milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+This milestone contains two different BTrees :
+* one for in-memory BTrees
+* one for managed BTrees
+
+The rational for this big modification is that we can't easily have one BTree to gather all the characteristics of both the in-memory and the managed BTrees with oe single class.
+
+We also have rewrote the way we handle added elements when we reach the end of the memory : we now use a cache instead of depending on wekReferences, which proved to be just way too slow.
+
+The next milestones will add the missing features :
+
+* bulk load support
+* multi-version support with free pages management
+* transaction support
+
+**ApacheDS** has already been tested with **Mavibot 1.0.-M2-SNAPSHOT**, and it offers performances twice better than JDBM.
+
+Downloads are available [here](downloads.html)
+
+<h2 class="news">Apache Mavibot 1.0.0-M1 released <em>posted on August 6th, 2013</em></h2>
+
+The Apache Directory team is pleased to announce the release of Apache Mavibot 1.0.0-M1, the first milestone towards a 1.0 version.
+
+**Mavibot** is a Multi Version Concurrency Control (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the **Apache Directory Server**), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
+
+This milestone is the first step toward a complete MVCC implementation, it currently does not handle versions at all. Anyway, it's already a in memory/On disk full BTree implementation, which is 2 to 3 times faster than JDBM.
+
+The next milestones will add the missing features :
+
+* bulk load support
+* multi-version support with free pages management
+* transaction support
+
+**ApacheDS** has already been tested with **Mavibot 1.0.-M1-SNAPSHOT**, and it offers pretty good performances compared to JDBM, except when we inject a lot of entries in the server.
+
+Downloads are available [here](downloads.html)
+
+
+<h2 class="news">Apache Mavibot added to Apache Directory project <em>posted on August 6th, 2013</em></h2>
+
+We are proud to announce that after less than one year of development in Apache Directory Labs, the Mavibot project has been accepted as a Apache Directory subproject.
+
+The project is still in its infancy, and anyone willing to participate in the effort is very welcome !
diff --git a/source/mavibot/user-guide.md b/source/mavibot/user-guide.md
new file mode 100644
index 0000000..10581bf
--- /dev/null
+++ b/source/mavibot/user-guide.md
@@ -0,0 +1,73 @@
+---
+title: Users Guide
+---
+
+# Users guide
+
+<DIV class="note" markdown="1">
+**Work in progress**
+</DIV>
+
+This user guide is about the Mavibot project developed at the Apache Software Foundation. We expect this project to be a replacement for **JDBM** that is currently used in Apache Directory Server, and also to be a reliable **MVCC B-tree** implementation that can be used by any other project.
+
+## About this guide
+
+Getting started. Learn how to use Mavibot.
+
+### Audience
+
+This guide is primarily for people new to Mavibot. Only basic features are covered. Learn more about the options you have (and many other things) in the [Advanced User's Guide].
+
+### Feedback welcome!
+
+We are quite interested to improve the content of this guide. Feel free to provide us feedback:
+!email.png! [mailto:users@directory.apache.org](mailto:users@directory.apache.org)
+
+### Table of contents
+
+* [1 - Introduction](user-guide/1-introduction.html)
+ * [1.1 - B-tree basics](user-guide/1.1-btree-basics.html)
+* [2 - B-tree Flavors](user-guide/2-btree-types.html)
+ * [2.1 - MVCC B-tree](user-guide/2.1-mvcc-btree.html)
+* [3 - Mavibot B-tree management](user-guide/3-btree-management.html)
+ * creation
+ * close
+ * flush
+ * load
+* [4 - Mavibot B-tree operations](user-guide/4-btree-operations.html)
+ * Cursor informations
+ * browse
+ * contains
+ * has
+ * get
+ * insert
+ * delete
+ * other operations
+* [5 - Mavibot B-tree information](user-guide/5-btree-informations.html)
+ * getComparator
+ * getFile
+ * getJournal
+ * getNbElems
+ * isAllowDuplicates
+ * isInMemory
+ * isPersistent
+* [6 - Mavibot B-tree configuration](user-guide/6-btree-configuration.html)
+ * getKeySerializer
+ * getKeySerializerFQCN
+ * setKeySerializer
+ * getName
+ * setName
+ * getPageSize
+ * setPageSize
+ * getReadTimeOut
+ * setReadTimeOut
+ * getValueSerializer
+ * getValueSerializerFQCN
+ * setValueSerializer
+ * getWriteBufferSize
+ * setWriteBufferSize
+* [7 - Mavibot internals](user-guide/7-btree-internals.html)
+ * [7.1 - Logical Structure](user-guide/7.1-logical-structure.html)
+ * [7.2 - Physical Storage](user-guide/7.2-physical-storage.html)
+ * [7.3 - Serializations](user-guide/7.3-serializations.html)
+ * [7.4 - Updates](user-guide/7.4-updates.html)
diff --git a/source/mavibot/user-guide/1-introduction.md b/source/mavibot/user-guide/1-introduction.md
new file mode 100644
index 0000000..3635898
--- /dev/null
+++ b/source/mavibot/user-guide/1-introduction.md
@@ -0,0 +1,16 @@
+---
+title: 1 - Introduction
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 1.1-btree-basics.html
+navNextText: 1.1 - BTree Basics
+---
+
+# 1 - Introduction
+
+The goal of this guide is to explain the usage and internals of Mavibot to developers.
+
+We hope it will be enough for you to quickly get started, but in any case, if you feel like improving this document, feel free to post your suggestion(s) to the Apache Directory mailing list : any contribution is welcomed !
+
+The first two chapters is all about theory, you can skip thema nd jump to chapter 3 if you want to get started quickly.
+
diff --git a/source/mavibot/user-guide/1.1-btree-basics.md b/source/mavibot/user-guide/1.1-btree-basics.md
new file mode 100644
index 0000000..a0c2a78
--- /dev/null
+++ b/source/mavibot/user-guide/1.1-btree-basics.md
@@ -0,0 +1,42 @@
+---
+title: 1.1 - B-tree Basics
+navUp: 1-introduction.html
+navUpText: 1 - Introduction
+navNext: 2-btree-types.html
+navNextText: 2 - B-tree Types
+---
+
+# 1.1 - B-tree Basics
+
+**B-tree** was invented back in 1971 by **Bayer** and **McCreight** (the **B** does not mean anything known, speculations are that it comes either form the **B** of **Bayer** or from **Boing** they were working for back then). It was an extension to binary search tree, which was just able to store 2 elements per page.
+
+A **B-tree** is a "tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time." (see [Wikipedia](http://en.wikipedia.org/wiki/B-tree))
+
+The important point here is the last one : it guarantees **O(logn)** operations, compared to any other data structures (a hashed data structure offers **O(n)** average operations, but can degenerate to **O(n2)**, and ordering is not kept). Although it would be optimal to keep only 2 elements in each node, it's way better from a performance point of view to keep more than 2 elements in each node, even if it leads to more comparison than strictly necessary. The reason is that reading a fixed size from disk is better than reading only what we need (considering that a disk access is 3 to 4 orders of magnitude slower than RAM access, it's always a good idea to cache pages in memory, rather than read data from the disk over and over. And these 3 to 4 orders of magnitude is for SSD... For spinning disks, we are more in the 4 to 5 orders of magnitude !)
+
+Add to that the fact that when *B-tree* were invented, data were stored on magnetic tapes, with a pure sequential access. Reading data sequentially made sense, and reading a block of data was the way to go - thus the page was meant to store more than 2 elements -.
+
+**B-trees** are everywhere : databases, OS, etc. It's a critical data structure when you are to deal with a large set of data.
+
+1.1.1 - Inside a B-tree
+
+A **B-Tree** contains **Nodes** and **Leaves**. A *Node* points to other **Nodes** or **Leaves**. **Nodes** contain only **keys** and references to child **nNodes**, when **Leaves** have **Keys** that are associated with **Values**. The **Nodes**' **Keys* are used to find the right child that will ultimately contain the **Value** we are looking for (if it's present)
+
+Pretty simple !
+
+One last thing : **Keys** are ordered, and this is the condition for the easy and fast retrieval of **Values**.
+
+A few more rules are enforced :
+* A **Node** and a **Leaf** contains up to N values (N being generally a power of 2, so 2, 4, 8, 16...).
+* You can't have less than N/2 **Values** or **keys** in a **Leaf** or a **Node**, except for the root **Node**.
+
+The second rule allows the **B-tree** to have only one **Leaf**, when up to **N** elements are to be stored. If we want to store one mor element, then the root **Leaf** will be split and the elements will be spread equally in two **Leaves**, with a root **Node$* containing references on those two **Leaves**.
+
+1.1.2 - Concurrent access
+
+The real problem with **B-tree**s is that we need to use some locks to allow concurrent access to the data, especially when some updates occur. The rationale is that when browsing a **B-tree**, changing it will just break the browse operation. There are some technics to avoid having such an issue, up to a point no read locks are needed, assuming some extra information is added to the pages : a pointer to the next page at the same level. Sadly, it comes with drawbacks, like it's difficult to remove empty pages from the **B-tree**.
+
+What we want is a way to guarantee that many users can read data from the **B-tree**, even while the **B-tree** is being updated. Of course, that will heavily favor reads over writes, as writes will have to be serialized, but in many cases, this is a comfortable trade we are ready to make.
+
+
+
diff --git a/source/mavibot/user-guide/2-btree-types.md b/source/mavibot/user-guide/2-btree-types.md
new file mode 100644
index 0000000..d499150
--- /dev/null
+++ b/source/mavibot/user-guide/2-btree-types.md
@@ -0,0 +1,43 @@
+---
+title: 2 - B-tree Flavors
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 2.1-mvcc-btree.html
+navNextText: 2.1 - MVCC B-tree
+navPrev: 1.1-btree-basics.html
+navPrevText: 1.1 - B-tree Basics
+---
+
+# 2 - B-tree flavors
+
+You have many different flavors of **B-trees** :
+
+* B+tree
+* B*-tree
+* Counted B-tree
+* MVCC B-tree
+
+
+## B+tree
+
+This is a **B-tree** which does not store values in the **Nodes**, and a link between **Leaves** is added, to speed up the browsing : no need to go up to the parent's node to get the next value when reaching the end of a leaf. Also the **nodes** don't contain values.
+
+## B*tree
+
+A slightly different form of **B+tree**, where the number of elements per page is enforced to be at leat 2/3rd of the maximum numbers of elements the page can hold. It speeds up the retrieval of elements a bit, as we have a denser tree.
+
+## Counted B-tree
+
+Another slightly different implementation of a **B+tree**, where the number of elements stored in the descendants is stored within each key. This allows an easy count of elements on the left and right to any element, at the price of additional piece of information being added on each page.
+
+## MVCC B-tree
+
+This is a new 'style' of **B+tree**, where the structure is exactly the same than a simple **B+tree**, except that we keep old versions alive, until nobody use them. The idea is that a new revision of the **B+tree** is added only when an update is fully done. This has the extremely intersting characteristic that there is no need of locks for read and writes, assuming that writes are not concurrent (they are serialized).
+
+In other words, you may have many reads at the same time, still being able to update the data.
+
+It comes with a price though : a lot of pages are copied during every update, as we create a new copy of every modified page, up to the root page.
+
+We also have to manage old pages that can be removed as they belong to unused versions, which requires some extra work.
+
+**Mavibot** is a Java based implementation of a **MVCC B+tree**.
\ No newline at end of file
diff --git a/source/mavibot/user-guide/2.1-mvcc-btree.md b/source/mavibot/user-guide/2.1-mvcc-btree.md
new file mode 100644
index 0000000..810d118
--- /dev/null
+++ b/source/mavibot/user-guide/2.1-mvcc-btree.md
@@ -0,0 +1,127 @@
+---
+title: 2 - MVCC B-tree
+navUp: 2-btree-types.html
+navUpText: 2 - B-tree flavors
+navNext: 3-btree-management.html
+navNextText: 3 - Mavibot B-tree management
+navPrev: 2-btree-types.html
+navPrevText: 2 - B-tree flavors
+---
+
+# 2.1 - MVCC B-tree
+
+**MVCC** stands for **M**ulti **V**ersion **C**oncurrency **C**control. It all boils down to allow readers to **ALWAYS** have a consistent version of the data they reached at the time they started to work with them. In other words, when a reader access the database, it will work on a specific version of it, that will never change.
+
+The drawback is that the data may be accurate at the time the reader started to work with them, but this reader will never see the updated data if a writer has modified them.
+
+Most of the time, this is a price the users are ready to pay, for at least two reasons :
+- udpates are way less frequent that reads, and the users 'accept' the fact that what they get is not necessarily up to date
+- there are some mechanisms that workaround this problem, checking afterward that the data represent the latest state of the database, otherwise the operation is retried.
+
+You can read more about **MVCC** **B-tree** on [Wikipedia, MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)
+
+## How does it work ?
+
+A **MVCC** **B-Tree** is just a plain standard **B+Tree**, except that we keep a track of more than one version of the **B+Tree**. Actually, we have multiple roots, one per version. This can bee seen in this picture :
+
+![MVCC sample](images/R4-node.png)
+
+Here, we have 4 different versions, from r1 to r4. Each one of them might be used at the same time by one or many readers. In any case, the writer update only the latest one, creating a new revision doing so. In this exemple, the writer has just created r4 updating r3, adding the element 'I'. As we can see, some pages are shared across the revisions : the leaf contaning the element 'A' (version r3) is also referenced by the revision r4. This is a key : that means a page (**Node** or **Leaf** may be used by many revisions).
+
+We don't delete old revision until they are not anymore in use. And even so, we don't delete all the associated pages blindly : they may be referenced by newer versions that are still active.
+
+### Browsing the Database
+
+So we want to fetch some information from a B-Tree. That's just a matter of creating a *ReadTransaction*, which will grab the latest existing revision for thi **B-Tree** and allow you to browse data from this **B-Tree**. One you are done with the **B-Tree**, you just have to close the *ReadTransaction* (this is critical, because keeping it opened will pin the revision, forbidding the removal of old pages. Although if you forget to do it, the revision will be released after a period of time). This is a description of the typical code :
+
+ open a ReadTransaction
+ get the B-Tree you want to read
+ read the B-tree
+ ...
+ close the ReadTransaction
+
+It's important to note that the transaction covers all the access on all the managed **B-Tree**. There is no need to open a new *ReadTransaction* if you want to fetch some other information from another **B-Tree**. That also mean you can be sure that you have a consistent view of all the database for a given revision.
+
+You may have many threads reading data from many **B-Trees**, and we will have as many *ReadTransaction* created for that purpose. As we may keep a *readTransaction* opened for quite a long period of time, it's likely that at some point, the various Threads will use different versions of the **B-Trees**.
+
+
+### Updating the Database
+
+This is a bit more complex. Here, you need a *WriteTransaction*, and there can be only one running across all the application. That means the access to the Database is serialized, when it comes to update it. The direct consequence is that writes are **slow**.
+
+Again, the typical call is like :
+
+ open a WriteTransaction
+ get the B-Tree you want to update
+ update the B-tree
+ ...
+ close the WriteTransaction
+
+and again, many **B-Trees** might be updated during this *writeTransaction*. For a system like a **LDAP** server, this is critical, because updating an entry is impacting many **B-trees**, and we want all of them to be consistent globally : eitehr all the **B-trees** are updated, or none of them.
+
+It's even more critical to close the *writeTransaction* because all the other writers are waiting for this transaction to be completed to be able to proceed.
+
+Let's now describe how an update works, because it's quite convoluted.
+
+#### Updates, from the tranchees...
+
+Updating a **B-Tree** is not a simple operation. Actually, we want to guarantee that the operation succeed or fail, but in any case, leave the database in a consistant state. We also want to guarantee that even if a crash occurs in the middle of a write will leave the database in a consistant state. Let's see how it's possible.
+
+A **B-Tree** is composed of 3 elements :
+
+ * The *BTreeHeader*, which contains the reference on the two other elements
+ * The *BTreeInfo*, which contains informations relative to this **B-Tree** (this element is never updated)
+ * The *RootPage*, which is the root of the **B-Tree**
+
+Each of these elemenst are stored into *Pages*, and referenced through the offset of those *Pages* on disk (the offset is a long, and it's just the position of a page in the database file).
+
+The very first step is to retrieve the latest **B-Tree** revision. We have a management **B-Tree** that keeps a track of all the active revisions for every **B-Tree** : the **BtreeOfBtrees**, called **BOB**. It stores a reference on each **B-tree**'s header for every active revision. The key is a composition of the **B-Tree** name and its revision : *<name, revision> and it reference the *BTreeHeader*'s offset (the position of the *BtreeHeader*'s page). Fo that, we browse the *BOB* looking for the newest <Name, Revision> couple (actually, we are looking for the first tuple that is lower that <name, infinite>).
+
+Once we have found the tuple, we know where to fetch the *BtreeHeader* from. So do we. We can then fetch the *RootPage*, which is the starting point for any update.
+
+At this point, the update is either an addition or a removal. That will potentially change the whole structure of the **B-Tree**, or a single page. In any case, we will have a new *RootPage* pointing to old pages and to newly created pages. Let's see again the previous picture :
+
+![MVCC sample](images/R4-node.png)
+
+Let's say we are at revision 3, and we want to add an entry 'I' : as we can see, the *rootPage* is updated, the right **Leaf** is split in two, and the left **Leaf** is unchanged. All in all, we have created 3 new pages, and 2 old pages are now unused and can be reclaimed later. The internal modification of pages is not in the scope of this explaination, so we will leave it for the moment.
+
+Here is an animated image that shows how it's done :
+
+![R3 to R4](images/r3tor4.gif)
+
+
+So now, we have a new *BtreeHeader*, revision 4. We have to keep a track of it, which means we have to inject it into the **BOB**. As it's a **B-Tree**, we proceed with it the exact same way, except that we always have a reference on the **BOB** *BtreeHeader* in the transaction context.
+
+<DIV class="note" markdown="1">
+We will see later on what is the Transaction Context
+</DIV>
+
+We are almost done. We also have to keep a track of the 'old' pages that were copied. In order to be able to reclaim them, we have to store them somewhere convenient. An 'old' page is not necessarily 'old' for everyone : another thread might have a reader on revision 3, thus might need those 'old' pages. Actually, reclaiming 'old' pages is a bit complex and will be explained later on. Enough said that we want to keep a track of every of those pages in a **B-Tree**, to be able to reclaimn them later.
+
+We use a specific **B-Tree** for taht : the **CopiedPageBtree**, or **CPB**. The key is different than for the **BOB**, it's a composition of the revision we are creating, and the name of the **B-Tree** being updated : <revision, name>. The value is the offset of the copied page. This way, when the revision is not anymore in use by any reader, we can reclaim the associated pages.
+
+The **CPB** is a **B-Tree**, so the update process is the one we already have described. There is one big difference though : once the **CPB** has been updated, we can immediately reclaim the copied pages, we won't use them at all (this is because there is only one writer thread, and this is the only one allowed to manipulate this **B-Tree**).
+
+We are almost done now. At this point, the targetted **B-Tree** has been updated, and the **BOB** and **CPB** have also been updated. But no reader can see those updated versions yet. We need to update the **RecordManagerHeader**, a structure that contain the reference to the current **BOB**. Once we have updated this structure, and wrote it on disk, we can safely make the new **BOB** available for any new readers.
+
+#### Reclaiming unused pages
+
+As we have seen in the previous paragraph, we always create new pages, we never remove any. This is obviously going to eat a lot of disk space if we don't reclaim unused pages !
+
+Hopefully, there is a *reclaimer* thread that is executed when no writerer is running, which role is to check if some old pages can be removed. There are strict conditions for a page to be candidate for removal :
+
+ * It must be presnet in the **CPB**
+ * The revision that has copied those pages must not be in use by any reader
+ * The revision must be the oldest one
+
+The latest condition is the critical one : it means that if a revision is used for a long period of time, we will not be able to reclaim any pages from this revision nor from any younger revision, even if they are not in use. That may bloat the Database...
+
+There are ways to deal with this problem. Typically, if a page is copied twice, then we can reclaim it if it's not referenced. The algorithm is a bit complex though...
+
+The easiest solution is simply to forbid long read transactions.
+
+### Dealing with alive revisions
+
+Every time we have a reader starting a *readTransaction*, we have to keep a track of the current revision, and the number of readers using it. This is done using a specific List of Used Revisions. Every new reader will add a new revision to this list, or increment a counter associated with the existing revision. Everytime a reader close the *readTransaction*, the counter is decremented. When this counter go down to 0, the revision can be discarded, unless it's the latest one.
+
+Discarding an old revision is possible only when it's the oldest. That means the list may contain many inactive revisions, with a counter equal to 0. Those inactive revisions will be removed when they will become the oldest revision.
\ No newline at end of file
diff --git a/source/mavibot/user-guide/3-btree-management.md b/source/mavibot/user-guide/3-btree-management.md
new file mode 100644
index 0000000..40627e5
--- /dev/null
+++ b/source/mavibot/user-guide/3-btree-management.md
@@ -0,0 +1,13 @@
+---
+title: 3 - Mavibot B-tree management
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 4-btree-operations.html
+navNextText: 4 - Mavibot B-tree operations
+navPrev: 2.1-mvcc-btree.html
+navPrevText: 2.1 - MVCC B-tree
+---
+
+# 3 - Mavibot B-tree management
+
+TODO
diff --git a/source/mavibot/user-guide/4-btree-operations.md b/source/mavibot/user-guide/4-btree-operations.md
new file mode 100644
index 0000000..787f81d
--- /dev/null
+++ b/source/mavibot/user-guide/4-btree-operations.md
@@ -0,0 +1,365 @@
+---
+title: 4 - Mavibot B-tree operations
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 5-btree-informations.html
+navNextText: 5 - Mavibot B-tree information
+navPrev: 3-btree-management.html
+navPrevText: 3 - Mavibot B-tree management
+---
+
+# 4 - Mavibot B-tree operations
+
+We will now list all the possible operations that can be applied on a **B-tree**. But first, let us understand the _Cursor_ interface, as it is used for navigating a **B-tree** using various types of _browse_ operations.
+
+## 4.1 The Cursor interface
+
+All the _browse_ operations will return a _Cursor_ instance. A _Cursor_ allows navigating forward and backward on a **B-tree**. It starts at a specific position, and can be moved to a specific position too. The default position for a _Cursor_ is before the very first element of the **B-tree**
+
+<DIV class="note" markdown="1">
+It is important to understand that a <b>Cursor</b> returns tuples, not keys. A Key may be associated with many values, so a cursor may return many tuples with a given key (each one will have a different value though).
+</DIV>
+
+Here is the **B-tree** sample we will use for the following examples :
+
+![Sample B-tree](images/ug-btree-sample.png)
+
+
+### 4.1.1 Cursor position management
+
+#### 4.1.1.1 afterLast
+
+Moves the current position after the last element (last key and last value). The following schema shows the new position of the pointer after having called the _afterLast()_ method :
+
+![After Last](images/ug-btree-after-last.png)
+
+As we can see, we are not pointing at any key.
+
+
+#### 4.1.1.2 beforeFirst
+
+Moves the current position before the first element (first key and first value). The following schema shows the new position of the pointer after having called the _beforeFirst()_ method :
+
+![Before First](images/ug-btree-before-first.png)
+
+In this case also cursor is not stationed at any key.
+
+### 4.1.2 Cursor operations
+
+When a cursor is used to browse Tuples it may return many tuples with the same key but different value, when used to browse keys a
+single tuple will be returned for each key with the value of the key (when multiple values are present only the first value will be
+returned).
+
+#### 4.1.2.1 hasNext
+
+Tells if there is a next available tuple. This will always be true if we are before the first tuple, and always false if we are on the last tuple or after the last tuple. The following picture shows the returned value for calls in various cases :
+
+![Has Next](images/ug-btree-has-next.png)
+
+
+#### 4.1.2.2 hasPrev
+
+Returns true if there is a tuple available before the current tuple. The following picture shows the returned value for calls in various cases :
+
+![Has Next](images/ug-btree-has-prev.png)
+
+#### 4.1.2.3 next
+
+Moves to the next value of the current key or to the next key if all the values of the current key have been processed, and return the associated tuple.
+
+#### 4.1.2.4 prev
+
+Moves to the previous value of the current key or to the previous key if all the values of the current key have been processed, and return the associated tuple.
+
+## 4.2 Browse Operations
+
+Now that we know what a _Cursor_ is about, we can describe the various _browse_ operations that can be applied on a _B-tree_.
+
+### 4.2.1 BTree.browse()
+
+This method returns a cursor with the position set before the first element of the **B-tree**, for the current revision. It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
+
+Assuming you have an existing _B-tree_, using this method is quite straigthforward. Here is an example with a persisted _B-tree_ :
+
+ // Create a RecordManager that will contain the B-tree
+ RecordManager recordManager = new RecordManager( "Test.db" );
+
+ // Create a B-tree to play with
+ BTree<Long, String> btree = recordManager.addBTree( "test", LongSerializer.INSTANCE, StringSerializer.INSTANCE, true );
+
+ // Inject some data
+ btree.insert( 1L, "1" );
+ btree.insert( 4L, "4" );
+ btree.insert( 2L, "2" );
+ btree.insert( 3L, "3" );
+ btree.insert( 5L, "5" );
+
+ // Create the cursor
+ TupleCursor<Long, String> cursor = btree.browse();
+
+ // Set the cursor at the beginning of the BTree
+ cursor.beforeFirst();
+
+ // Get the tuples
+ // Create the cursor
+ TupleCursor<Long, String> cursor = btree.browse();
+
+ // Move forward
+ while ( cursor.hasNext() )
+ {
+ Tuple<Long, String> tuple = cursor.next();
+ System.out.println( tuple );
+ }
+
+ ...
+
+will produce this output :
+
+ <1,1>
+ <2,2>
+ <3,3>
+ <4,4>
+ <5,5>
+
+### 4.2.2 BTree.browse( long )
+
+This method returns a cursor with the position set before the first element of the **B-tree**, for the given revision.
+
+Here, the big difference is that you can fetch some data from an older revision - assuming this revision is still present, of course -.
+
+It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
+
+You can use the exact same code than for the _browse()_ method, except that you have to pass the version you want to browse.
+
+### 4.2.3 BTree.browseFrom( K key )
+
+This method returns a cursor with the position set before the given key of the **B-tree**. If the key does not exist, the cursor will be set to the closest lower value (or upper value if it's lower than the lowest value)
+
+It returns a _TupleCursor_ that contain the tuples <key,value> present in the _B-tree_.
+
+You can use the exact same code than for the _browse()_ method. Here is an example, where we start after the latest present key :
+
+ // Inject some data
+ for ( long i = 0; i <= 1000L; i += 2 )
+ {
+ btree.insert( i, Long.toString( i ) );
+ }
+
+ // Create the cursor
+ TupleCursor<Long, String> cursor = btree.browseFrom( 1500L );
+
+ assertFalse( cursor.hasNext() );
+ assertTrue( cursor.hasPrev() );
+ assertEquals( 1000L, cursor.prev().getKey().longValue() );
+
+### 4.2.4 BTree.browseFrom( long revision, K key )
+This method can be used when one want to browse a _B-tree_ starting from a given key, for a specific revision of a _B-tree_. The only difference with the _BTree.browseFrom( K )_ method is the _B-tree_ revision which is provided.
+
+## 4.3 Contains Operations
+
+We have a couple of methods that can be used to know if some tuple _<Key, Value>_ is present in a _B-tree_.
+
+### 4.3.1 BTree.contains( K key, V value )
+
+This method checks if a _B-tree_ contains a tuple _<key, value>_. As a key might have more than one value, we test the tuple. If one wants to check if a key is present, regardless of the value, the _hasKey()_ method should be used.
+
+Here is an example where the _contains()_ method is used :
+
+ ...
+ boolean result = btree.contains( 1L, "V1" );
+ ...
+
+If the _B-tree_ contains the <1L, "V1"> tuple, then the method will return true, false otherwise.
+
+### 4.3.2 BTree.contains( long revision, K key, V value )
+
+This is the same method that the previous one, except that it's applied on a specific revision of a _B-tree_. The first parameter is the revision.
+
+## 4.4 HasKey Operations
+
+We have some specific methods that check the presence of a key in a _B-tree_. There are described below.
+
+### 4.4.1 BTree.hasKey( K key )
+
+The _hasKey(K key)_ method check the presence of the given _key_ in the current _B-tree_. If it's present, this method returns _true_, otherwise it returns _false_. Here is an example of usage :
+
+ ...
+ boolean result = btree.hasKey( 1L );
+ ...
+
+
+### 4.4.2 BTree.hasKey( long revision, K key )
+
+The exact same method, but applied to a given revision of the _B-tree_.
+
+
+## 4.5 Get Operations
+
+Instead of browsing the _B-tree_, one can get the values associated with a key in a simple operation. The big difference is that it's not then possible to move forward or backward in the _B-tree_ from the retrieved value.
+
+### 4.5.1 BTree.get( K key )
+
+This method get the value associated to the given key, if it exists. If the key does not exist, then a _KeyNotFoundException_ is thrown by the method.
+
+<DIV class="note" markdown="1">
+It's important to understand that, as a <i>B-tree</i> can have multiple values, the <i>get(K)</i> method will <b>NOT</b> return all the values, but the very first one. If one wants to get all the values for a given key, the <i>BTree.getValues(K)</i> has te be used instead.
+</DIV>
+
+
+Here is an example :
+
+ ...
+ try
+ {
+ String value = btree.get( 1L ); // Will return "V1"
+ ...
+ // process teh found value
+ }
+ catch ( KeyNotFoundException knfe )
+ {
+ // deal with the exception
+ }
+ ...
+
+
+### 4.5.2 BTree.get( long revision, K key )
+
+Same method than previously, but with a provided _B-tree_ revision.
+
+### 4.5.3 BTree.getValues( K key )
+
+One should use this method to get all the values assocatied with a key. This method returns a _ValueCursor_, which allows the user to browse the various values. The cursor is set before the first value.
+
+Here is an example that shows how to use this method :
+
+ ...
+ // The key 1L is associated with {"V1", "V2", "V3"}
+ ValueCursor<String> values = dupsTree.getValues( 1L);
+
+ while ( values.hasNext() )
+ {
+ System.out.println( value.next() );
+ }
+ ...
+
+This will produce the following output :
+
+ V1
+ V2
+ V3
+
+## 4.6 Insert Operation
+
+Inserting elements into a _B-tree_ is as simple as to call the _insert(K, V)_ method.
+
+<DIV class="note" markdown="1">
+It would be interesting to have an <i>insert</i> method that can take more than one value. This might be added in one future version.
+</DIV>
+
+If the key already exist, the value will be added, or replaced if the value already exist keep in mind that we use a comparator when it comes to check a value existence, and two different values may be seen as equal).
+
+Here is an exemple :
+
+ ...
+ // Insert a new key and value into a B-tree
+ // The old value will be returned if we already have a "V3" in the B-tree
+ String oldValue = btree.insert( 3L, "V3" );
+ ...
+
+<DIV class="note" markdown="1">
+One can only add one single value if the <i>B-tree</i> does not accept duplicate values. In this case, the <i>insert()</i> method will throw a <i>DuplicateValueNotAllowedException</i> exception.
+</DIV>
+
+If the _B-tree_ accepts multiple values for a key, one can write such code :
+
+
+ ...
+ // Insert a new key and value into a B-tree
+ btree.insert( 1L, "V1" );
+ btree.insert( 1L, "V2" );
+ btree.insert( 1L, "V3" );
+ // At this point, the key 1L will be associated with {V1, V2, V3}
+ ...
+
+
+## 4.7 Delete Operations
+
+The _delete()_ method is used to delete keys and values from a _B-tree_. We have two methods to do that.
+
+### 4.8.1 BTree.delete( K key )
+
+This method removes a given key and all its values from a _B-tree_. If the key does not exist in the _B-tree_, a _KeyNotFoundException_ will be thrown.
+
+This method returns the first tuple with the given key.
+
+Here is an example :
+
+ ...
+ // Insert a new key and value into a B-tree
+ btree.insert( 1L, "V1" );
+ btree.insert( 1L, "V2" );
+ btree.insert( 1L, "V3" );
+ // At this point, the key 1L will be associated with {V1, V2, V3}
+ ...
+ // Now delete 1L
+ btree.delete( 1L );
+
+ // Check that the values have been removed
+ if ( btree.hasKey( 1L ) == true )
+ {
+ // This is an error !
+ }
+
+
+### 4.7.2 BTree.delete( K key, V value )
+
+This method can be used to delete one specific value for a given key. If the removed value is the last one, the key will also be removed.
+
+Here is an example :
+
+ ...
+ // Insert a new key and value into a B-tree
+ btree.insert( 1L, "V1" );
+ btree.insert( 1L, "V2" );
+ btree.insert( 1L, "V3" );
+ // At this point, the key 1L will be associated with {V1, V2, V3}
+ ...
+ // Now delete <1L, "V2">
+ btree.delete( 1L, "V2" );
+
+ // The key 1L is still associated with {"V1", "V3"}
+ ValueCursor<String> values = dupsTree.getValues( 1L);
+
+ while ( values.hasNext() )
+ {
+ System.out.println( value.next() );
+ }
+ ...
+
+This will produce the following output :
+
+ V1
+ V3
+
+
+## 4.8 Other B-tree operations
+
+Beside those important operations we just have described, we have a few other less critical operations you must kown about.
+
+### 4.8.1 BTree.close()
+
+This method will cleanly close the _B-tree_. Depending on the _B-tree_ type, it will proceed differently while closing the _B-tree_.
+
+* PersistedBTree : It will close the cache, and close all the pending read transactions. Any write transaction will be complected.
+* InMemoryBTree : it will flush the memory content on disk, and close the journal, if the _B-tree_ is persistent.
+
+<DIV class="note" markdown="1">
+<b>ALWAYS</B> call the <i>close()</i> method when you are done with a <i>B-tree</i>.
+</DIV>
+
+### 4.8.3 BTree.getRevision()
+
+Returns the current _B-tree_ revision.
+
+
+
diff --git a/source/mavibot/user-guide/5-btree-informations.md b/source/mavibot/user-guide/5-btree-informations.md
new file mode 100644
index 0000000..72b01c9
--- /dev/null
+++ b/source/mavibot/user-guide/5-btree-informations.md
@@ -0,0 +1,12 @@
+title: 5 - Mavibot B-tree information
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 6-btree-configuration.html
+navNextText: 6 - Mavibot B-tree configuration
+navPrev: 4-btree-operations.html
+navPrevText: 4 - Mavibot B-tree operations
+---
+
+# 5 - Mavibot B-tree information
+
+TODO
diff --git a/source/mavibot/user-guide/6-btree-configuration.md b/source/mavibot/user-guide/6-btree-configuration.md
new file mode 100644
index 0000000..b367b96
--- /dev/null
+++ b/source/mavibot/user-guide/6-btree-configuration.md
@@ -0,0 +1,13 @@
+---
+title: 6 - Mavibot B-tree configuration
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 7-btree-internals.html
+navNextText: 7 - BMavibot internals
+navPrev: 5-btree-informations.html
+navPrevText: 5 - Mavibot B-tree information
+---
+
+# 6 - Mavibot B-tree configuration
+
+TODO
diff --git a/source/mavibot/user-guide/7-btree-internals.md b/source/mavibot/user-guide/7-btree-internals.md
new file mode 100644
index 0000000..1f8418d
--- /dev/null
+++ b/source/mavibot/user-guide/7-btree-internals.md
@@ -0,0 +1,13 @@
+---
+title: 7 - Mavibot Internals
+navUp: ../user-guide.html
+navUpText: User Guide
+navNext: 7.1-logical-structure.html
+navNextText: 7.1 - Logical Structure
+navPrev: 6-btree-configuration.html
+navPrevText: 6 - BTree configuration
+---
+
+# 7 - Mavibot Internals
+
+TODO
diff --git a/source/mavibot/user-guide/7.1-logical-structure.md b/source/mavibot/user-guide/7.1-logical-structure.md
new file mode 100644
index 0000000..979c26a
--- /dev/null
+++ b/source/mavibot/user-guide/7.1-logical-structure.md
@@ -0,0 +1,98 @@
+---
+title: 7.1 - Logical Structure
+navUp: 7-btree-internals.html
+navUpText: 7 - Mavibot Internals
+navNext: 7.2-physical-storage.html
+navNextText: 7.2 - Physical storage
+navPrev: 7-btree-internals.html
+navPrevText: 7 - Mavibot Internals
+---
+
+# 7.1 - Logical Structure
+
+**Mavibot** stores data in one or more *BTree*s, and defines a few more internal data structures to handle the data and *BTree*s.
+
+We can have three different ways to use **Mavibot** :
+* using in-memory *BTree*s (IN-MEMORY)
+* using in-memory *BTree*s stored on disk (PERSISTED)
+* storing the *BTree*s on disk (so called managed *BTree*s) (MANAGED)
+
+
+## In Memory BTrees
+
+They are *BTree*s stored in memory : as soon as you quit your program, all the stored data will be lost. The biggest advantage is that it is fast.
+
+As *Mavibot* is handling **MVCC** *BTree*s, you have to keep in mind that for each modification, we copy pages and values, hence the *BTree*s will quickly grow and use a lot of memory. On the other hand, copied data which are not anymore in use will be discarded automatically. The beauty of having a garbage collector is that we don't have to take care of this copied data, i.e., if they are not any more referenced by any objects using the *BTree*, they will be reclaimed by the GC.
+
+The below diagram shows the logical representation of an in-memory *BTree* :
+
+![In-Memory BTree](images/InMemoryBTree.png)
+
+## Persistent BTrees
+
+A persistent *BTree* is a *BTree* which can be flushed to disk on demand. The *BTree* is a in-Memory *BTree*, but while closing it, then content of the latest revision is serialized on disk. The data can be loaded while opening a persistent BTree.
+
+Other than that, there is no difference between an in-memory *BTree* and a persistent *BTree*.
+
+## Managed BTrees
+
+Managed *BTree*s are very different : data is guaranteed to be preserved on disk after each modification, even when the program crashes, it is guaranteed that the disk will contain everything needed to recover the *BTree* to the state it was in just before the crash.
+
+This is important to understand that in managed mode, not all *BTree*s (of a mavibot database) are kept in memory. In other words, all nodes, except the *root* node, of a BTree may or may not be present at the time of accessing. **Mavibot** will fetch these nodes from disk when needed.
+
+Obviously this approach has both pros and cons :
+
+Pros :
+* there is no limit on the number of elements one can store in a BTree, except on the available disk space
+* A *BTree* will always be consistent, even if there was a crash
+* data durability is guaranteed
+
+Cons :
+* reads might be costly when the data is not present in memory, due to fetching data from disk
+* accessing the data from disk requires an extra layer of accessor code, this costs some extra memory
+
+Here, this is just a question of tradeoff : depending on the existing memory size, and the level of robustness needed, one may decide to go for an in-memory *BTree*, a persistent *BTree* or a managed one. Most of the time, though, managed *BTree* is what you want to use.
+
+Also note that we use internal cache to speed up the data access. This cache and its size can be configured.
+
+Managed *BTree*s are stored using *Nodes* and *Leaves*. A *Node* contains only keys or references to underlaying nodes or leaves. A *Leaf* contains keys and values. As we don't want to eat too much memory, the references to nodes, leaves, keys and values are stored as offset, read and translated to java objects on demand. For instance, we keep an offset to a key until someone needs to access the key, then we deserialize this key and store it in memory. This is the very same for references to nodes, leaves or values.
+
+Here is a picture describing this structure :
+
+![Managed references](images/managedReferences.png)
+
+In this BTree, only two pages are present in memory : one node and one leaf. In these pages, the keys aren't yet objects, they are pointing to the page's raw data, except for the **D** key and it's value, they were loaded and deserialized.
+
+Here each element, contains an offset and the byte[] of the serialized value or the deserialized value if the value has already been accessed.
+
+### User's BTrees
+
+These are the BTrees that are created by the user and these trees hold the data.
+
+### Special BTrees
+
+These are the two special *BTree*s used internally to manage the revisions and the copied pages.
+
+#### Revision tree
+
+Mavibot uses this tree to keep track of each active revision, so that a search can work with a specific revision. The idea is that when a search starts, it uses the latest revision, but while the search is being processed a new modification can occur which creates a new revision. And also sometimes, we may want to keep a revision active for quite a long time.
+
+This revision *BTree* manages the revisions of all the managed *BTree*s.
+The key of the revision btree is a combination of the *BTree* name and its revision.
+
+When a revision is not anymore used, it can be removed from the revision *BTree*.
+
+Unlike all other user btrees the revision *BTree* is not a **MVCC** *BTree*. In other words, only the latest revision of the revision btree is preserved(i.e, all the modified pages are immediately freed)
+
+#### Copied pages BTree
+
+Once a new revision is created, the pages that were copied are not anymore in use except if the revisions they are associated with are still in use. These pages cannot be discarded and moved
+to the free list until the associated revision is free.
+
+A dedicated *BTree* is used to keep track of the copied pages, which will be reclaimed and moved to the free pages list once the associated revision gets released.
+
+### Managing the free pages
+
+There is a mechanism to manage the *PageIO* that are not anymore in use. This is a linked list in which the free pages are added. Whenever a new page(s) is needed this list is searched first and reclaim as many *PageIO*s as needed - until the end of this list is reached. When a page gets freed that will be added at the end of the free page list.
+
+Note that only logical pages are released, which may be stored in many *PageIO*s. These *PageIO*s are already linked, hence while adding this logical page to the free page list, the last existing free *PageIO* will be modified to point to the first freed *PageIO* of this logical page, and update the pointer of the last free page to the last *PageIO* of this logical page.
diff --git a/source/mavibot/user-guide/7.2-physical-storage.md b/source/mavibot/user-guide/7.2-physical-storage.md
new file mode 100644
index 0000000..88ff3d9
--- /dev/null
+++ b/source/mavibot/user-guide/7.2-physical-storage.md
@@ -0,0 +1,137 @@
+---
+title: 7.2 - Physical storage
+navUp: 7-btree-internals.html
+navUpText: 7 - Mavibot Internals
+navPrev: 7.1-logical-structure.html
+navPrevText: 7.1 - Logical Structure
+navNext: 7.3-serializations.html
+navNextText: 7.3 - Serializations
+---
+
+# 7.2 - Physical storage
+
+When associated with a RecordManager, Mavibot stores all the Btrees in one single file, which is split in many physical pages, all having the same size.
+
+>**Note**
+>Currently, the choice was to use same size for all the pages, regardless of the data stored into them. The rationnal is to
+>get close to the OS page size (frequently 512 bytes or 4096 bytes). This is not necessarily the best choice though, let's say
+>it's something we might want to change later.
+
+
+## General file structure
+
+The data is stored in a pure binary file. All btrees are stored in this single file.
+
+This file is considered as a FileSystem, with fixed size 'pages' (a page is an array of bytes). The page size is fixed when the RecordManager is created. The data represented in a logical page may spread across many physical pages.
+
+### PageIO
+
+A *PageIO* represents a physical block of the database file and contains complete or a part of the logical page's data. PageIOs of a logical page are linked together.
+
+Each *PageIO* has an eight byte pointer at the beginning, pointing to the next PageIO (or to nothing, if it is the last *PageIO* in the chain), plus an extra 4 bytes on the first *PageIO* to define the number of bytes stored in the chain of PageIO. Here is the mapping between a logical page and some PageIOs :
+
+![PageIO mapping](images/PageIOLogical.png)
+
+All *PageIO*s are contiguous on disk, but the *PageIO*s used to store a logical page may be located anywhere on the disk, they don't have to be continuous.
+
+Here is the structure of a *PageIO* on disk :
+
+* next page offset (8 bytes) : the offset of the next *PageIO*, or -1 if it is the last *PageIO*
+* data size (4 bytes) : the size of the data stored, this is only set in the first *PageIO* of the chain of *PageIO*s used to store a logical page.
+* data (N bytes) : a block of data, whose size will be min( PageSize - offset - data size, data size) for the first *PageIO* or min( PageSize - offset, data size) for any other *PageIO*s
+
+## Logical structure mapping on disk
+
+We will now describe how each logical structure is serialized on disk.
+
+### RecordManager header
+
+A few bytes at the beginning of the file are used to store some critical information about the RecordManager. Here is the list of stored information details :
+
+* The *PageIO* size (in bytes)
+* The number of managed B-Trees
+* The offset of the first free page
+* The offset of the current B-tree of B-trees
+* The offset of the previous B-tree of B-trees, if an update operation was performed
+* The offset of the current CopiedPages B-tree
+* The offset of the previous CopiedPages B-tree, if an update operation was performed
+
+Here is a picture that shows the header content in two different cases (when an update operation is not completed, and when it's completed) :
+
+![RecordManager header](images/RMHeader.png)
+
+Recordmanager tracks the free pages (a free page is a PageIO that is not in use, for instance when a key was deleted). This is done by linking each unused PageIO together and finally updating the references of fisrt and last free pages. When there are no free pages these pointers contain -1 as the offset value.
+
+This header is stored in a *PageIO*, at the very beginning of the file.
+
+### The RecordManager structure
+
+Each *BTree* has a header that contains many details about it, and points to a *rootPage* which is the current root (i.e., the root of the latest revision).
+
+The special BTree called 'btree of btrees'(a.k.a BoB) contains the names and revisions of each managed BTree. To load the managed btrees during startup, this BoB is read to find the latest revision of each BTree and the associated root page's offset based on which the btree will be loaded.
+
+#### The B-tree info
+
+Each *B-tree* has some metadata that will never change after creation. Here is the list of the details stored :
+
+* pageSize (4 bytes) : the number of elements we cans store in a *Node* or a *Leaf*. It's not related in any way with the *PageIO* size.
+* nameSize (4 bytes) : The *BTree* name size
+* name (nameSize bytes) : the *BTree* name
+* keySerializerSize (4 bytes) : The size of the java *FQCN* for the key serializer
+* keySerializer (keySerializerSize bytes) : The java *FQCN* for the key serializer
+* valueSerializerSize (4 bytes) : The size of the java *FQCN* for the value serializer
+* valueSerializer (valueSerializerSize bytes): The java *FQCN* for the value serializer
+* dupsAllowed (1 byte): tells if the *BTree* can have duplicated values.
+
+Note that a *B-tree* info can be stored in one or many *IOPage*s, depending on its size.
+
+#### The BTree header
+
+There will be one *B-tree* header per revision.
+
+Each *BTree* has to maintain many details, such as :
+
+* revision (8 bytes) : the current revision of the *BTree*. This value is updated after each modification in the *BTree*.
+* nbElems (8 bytes) : the total number of elements we have in the *BTree*. This is updated after each modification.
+* rootPage offset (8 bytes) : the position in the file where the *rootPage* is stored
+* btreeInfo offset (8 bytes) : the position of the *B-tree* info page in the file
+
+Here is a diagram which represents the *B-tree header* and the *B-tree info* data structures on disk :
+
+![BTreeHeader](images/btreeHeader.png)
+
+Note that they can be stored on one or more *IOPage*s, depending on the size.
+
+The below picture shows the contents of the btree headers present in the database file when more than one btree is stored.
+
+![BTrees](images/BTree.png)
+
+Note that each *B-tree Header* has one root page, even if it contains no data. In this picture, the root page is shown just after the *BTree* it is associated with, but after a few updates, the root page may be stored elsewhere on the disk.
+
+#### The Nodes and Leaves
+
+Nodes and Leaves are logical *BTree* pages which are stored in one or more *PageIO*s. They have slightly different data structures, as *Node*s contain pointers to *Leaves*, and no data, while *Leaves* contain data, but both contain the keys. The number of keys present in a *Node* is higher
+than that of a *Leaf* by one.
+
+On disk, a *Node* will have pointers to some other logical pages, those pointers will be offset of the first *PageIO* used to store the logical page it points to.
+
+The below picture shows a *Node* and *Leaf* after serialized to disk :
+
+![Node and Leaf](images/nodeLeaf.png)
+
+Note that this is necessary to store the size of the serialized data in order to know how many *PageIO*s will be needed to store the logical page.
+
+The *rootPage* can be either a *Node* or a *Leaf*.
+
+#### Potential improvement
+
+We can get better performance by serializing the data differently. Instead of storing keys and values as byte arrays prefixed by their length, we could store an array of keys and values' offsets before the associated byte[]. Here is the resulting data structure, once serialized :
+
+![Node and Leaf, improved](images/nodeLeaf2.png)
+
+(The *Node* is not described, as it's basically the same data structure, but with one extra value).
+
+It does not need more space to serialize the data this way, as the offsets are ints, and in the previous version, those ints are used to store the length of the keys and values anyway.
+
+The gain is that we can have access to a given key and value without having to read all the previous keys and values. Also we can now read a leaf or a node without having to deserialize all the keys and values they contain.
+
diff --git a/source/mavibot/user-guide/7.3-serializations.md b/source/mavibot/user-guide/7.3-serializations.md
new file mode 100644
index 0000000..db2f9f2
--- /dev/null
+++ b/source/mavibot/user-guide/7.3-serializations.md
@@ -0,0 +1,119 @@
+---
+title: 7.3 - Serializations
+navUp: 7-btree-internals.html
+navUpText: 7 - Mavibot Internals
+navPrev: 7.2-physical-storage.html
+navPrevText: 7.2 - Physical storage
+navNext: 7.4-updates.html
+navNextText: 7.4 - Updates
+---
+
+# 7.3 - Serializations
+
+The logical pages are serialized before storing in physical pages. This is a process that should obviously be reversible. In this chapter, we will describe how to serialize a **Leaf** and **Node**.
+
+## Leaf serialization
+
+A **Leaf** contains some metadata, and a set of keys and values. A key can have many values, and we have as many keys as values. The internal format of a serialized leaf contains:
+
+<pre>
+ +----------------------------------+
+ | revision (long) | 8 bytes
+ +----------------------------------+
+ | nbElems (int) | 4 bytes
+ +----------------------------------+
+ | dataSize (int) | 4 bytes = sum[0..nbElems]( valueLength, keyLength ) + 8 x nbElems
+ +----------------------------------+
+ | +------------------------------+ |
+ | | valueLength[0] (int) | | 4 bytes \
+ | +------------------------------+ | > n+4 bytes
+ | | value[0] (byte[]) | | n bytes /
+ | +------------------------------+ |
+ | | keyLength[0] (int) | | 4 bytes \
+ | +------------------------------+ | > n+4 bytes
+ | | key[0] (byte[]) | | n bytes /
+ | +------------------------------+ |
+ ... ...
+ | +------------------------------+ |
+ | | valueLength[nbElems-1] (int) | | 4 bytes \
+ | +------------------------------+ | > n+4 bytes
+ | | value[nbElems-1] (byte[]) | | n bytes /
+ | +------------------------------+ |
+ | | keyLength[nbElems-1] (int) | | 4 bytes \
+ | +------------------------------+ | > n+4 bytes
+ | | key[nbElems-1] (byte[]) | | n bytes /
+ | +------------------------------+ |
+ +----------------------------------+
+
+</pre>
+
+The length of each serialized key and value is stored so that a complete byte[] can be passed to the key or value deserializer (ie, the exact number of bytes needed to be able to deserialize the key or the value).
+
+The _dataSize_ value is used to know how many bytes needs to be read - thus the number of physical pages to read - in order to get a full page.
+
+## Leaf deserialization
+
+When a leaf needs to be deserialized, not all the keys and the values are deserialized at once. It would be too expensive, if the leaf is discarded from memory immediately, when we only need to read one single key and value, hence the keys and values are kept in byte[] form, and will be deserialized on demand.
+
+Two data structures are used to store a key and a value :
+* a _KeyHolder_ for the key
+* a _ValueHolder_ for the value
+
+### KeyHolder
+
+The _KeyHolder_ data structure holds the key in two ways :
+* serialized (raw (byte[]))
+* deserialized (key)
+
+The keys are not deserialized immediately after the data was read from disk instead they are deserialized on demand.
+
+### ValueHolder
+
+Mavibot supports multiple values for a key. The _ValueHolder_ data structure will store a set of values associated with a key. This is a complex data structure when compared with the _KeyHolder_.
+
+An array is used as the default container to hold these values. In some cases, the number of values to be stored is really big, and using an array will impact the performance.
+In such cases the array is replaced by a BTree, this helps in improving the retrieval time, and also page copying becomes more efficient.
+
+When the number of the values stored reaches a threshold, the array is replaced with a BTree, likewise if the number of values stored are is below the threshold then BTree is replaced by an array.
+In order to avoid many array <-> btree transformations (e.g. when continusously adding and deleting a value), the array -> btree threshold is bigger than the btree -> array threshold.
+
+<pre>
+ 0---1---2---...---TH-low--...--TH-high---...
+ >-------------Array----------->>---BTree---... When we add new values.
+ |////////////| These values will remain in an array or a BTree until
+ we reach oe of the threshold values.
+ <-----Array-----<<--------BTree------------... When we delete values.
+</pre>
+
+It's important to note that the values inserted into the sub-BTree will be stored as keys, and all the values of this sub-BTree will contain nulls. The sub-btree Keys will be the values of the key present in the parent-BTree.
+
+#### Raw/deserialized values
+
+One key for obtaining good performances is to avoid any useless deserialization. This is easy to implement for the _KeyHolder_, as we only store one single key. For values, it's slightly more complex, as we may have more than one value. The following rules should be followed :
+
+* don't deserialized until necessary (ie, until one needs to get a value)
+* don't serialize until writing (i.e, until the value(s) must be written to disk)
+
+In fact, a value may be in three different states :
+
+* all the values are serialized (when we just read the page from disk)
+* none of the values are serialized (when we just created a ValueHolder with new values)
+* somewhere in the middle, when we are modifying a ValueHolder which has been read from the disk
+
+The third case is the complex one. We should consider two different cases though :
+* the values are stored in a sub-BTree : we don't have to deal with this problem, it's up to the sub-btree to deal with it
+* the values are stored in an array : we don't want to store half of the values as byte[], and half of the values as java instances. We must pick either one form or the other. In this case, as soon as we have to manipulate values in Java, we must deserialize all the values.
+
+#### ValueHolder operations
+The possible operations on a ValueHolder are the following :
+
+* add( value ) : Insert a new value into the ValueHolder. If we reach the upper threshold, then the array is converted into a BTree. In any case, we inject the new value into the array(in the correct order using the comparator present in the serializer) or the BTree.
+
+As we need to compare values, they must be deserialised, so we need to do it if it's not already done (the values are not deserialiezed when the page is read from the disk). Note that it's not necessary for the sub-btree, as it's up to the sub-btree to deserialize the keys on the fly.
+
+Thus the _add_ algorithm will be :
+
+<pre>
+ if the values are not yet deserialized
+ then deserialize all the values
+</pre>
\ No newline at end of file
diff --git a/source/mavibot/user-guide/7.4-updates.md b/source/mavibot/user-guide/7.4-updates.md
new file mode 100644
index 0000000..931962f
--- /dev/null
+++ b/source/mavibot/user-guide/7.4-updates.md
@@ -0,0 +1,105 @@
+---
+title: 7.4 - Updates
+navUp: 7-btree-internals.html
+navUpText: 7 - Mavibot Internals
+navPrev: 7.2-physical-storage.html
+navPrevText: 7.2 - Physical storage
+---
+
+# 7.4 - Updates
+
+The update operations on a **b-tree** will modify the internal structure in many ways. We will expsoe the evolution of the **mavibot** file when dealing with the addition of a new **b-tree** and the insertion of a new value into it.
+
+Note : we don't show what's happening to the **CopiedPages b-tree** here.
+
+## Initial state before the addition of a b-tree
+
+Here is the content of the *mavibot.db* file before we add any **b-tree** into it :
+
+![Initial state](images/initial-state.png)
+
+As we can see, we just have a *RMHeader* pointing to the management *Btree of Btrees* and to the *CopiedPages* **b-tree**. nothing else.
+
+## Addition of a b-tree
+
+Now, here is the file content after adding a new **b-tree** :
+
+![B-tree test added](images/btree-test-added.png)
+
+Here, the *RMHeader* is pointing to a new revision of the *Btree of Btrees*, which itself contains a reference to the *test* **b-tree** in its first revision. At this point, the old *Btree of Btrees* header and page can be freed and moved into the *free pages list*.
+
+The *CopiedPages* **b-tree** remains unchanged.
+
+## Addition of an element in the test b-tree
+
+Let's go a step further : we now add an element to the *test* **b-tree**. This again will impact the *test* **b-tree*, but also the *Btree of Btrees* and the *RMHeader* as shown in teh following picture :
+
+![V1 added in test b-tree](images/v1-added-in-test.png)
+
+The *RMHeader* is pointing to the second revision of the **Btree of Btrees** header, and a new revision of the *test* **b-tree** is stored in the root page of the **Btree of Btrees**. The *test* **b-tree**, whose header has been copied, now contains the **V1** value, but we still have the first revision of the *test* **b-tree** present in the file and referenced by the *Btree of Btrees*, as some thread might be using it at the time of update.
+
+We will be able to free the pages associated with the revision 1 of the *test* **b-tree** when no threads are using this revision. The old version of the *Btree of Btrees* can be freed too.
+
+The *CopiedPages* **b-tree** will also be updated to contain the page that has ben copied (here, the *test r0* root page). The *RMHeader* will point to the new *CopiedPages* **b-tree** header.
+
+(the picture shows the same file twice, one while the first revision is still in use on the left, and another on the right where the first revision has been released)
+
+## Cleanup
+
+When applying an operation on a btree, we need to first update the *RMHeader* so that it now points to the current **b-trees**.This is done in one single write of the *RMHeader*, where we update the pointers to the new *Btree of Btrees* and *CopiedPages* headers.
+
+Post operation, we need to cleanup the pages that are now useless. This can't be done before we have updated the *RMHeader* because we may lose some pages if we do so. For this reason, we have to keep a reference to the previous headers of those two management btrees (those that are to be freed).
+
+We have first to clean the copied pages for the two management **b-trees**, and when it's done, we can release the two headers of those **b-trees**.
+
+Last, not least, we have to rewrite the *RMHeader* with pointers to the old **b-trees** set to *NO_PAGE*.
+
+## Recovering from a crash
+
+This is a mandatory step : we must be able to get a working and clean file when a crash occurs, and it also must be fast. The idea is that at startup, we should always have a clean database, even if we have some lost pages, and we can proceed to a lost page recovery after the startup without impeding the server operations (except the updates).
+
+There are many places where a crash can occur, and depending on the timing, different operations should take place.
+
+### Crash before the RecordManager header update
+
+We will not be able to recover the pages that have been created before the *RMHeader* update. The only possible way would be to check the entire file to revover them as they won't be pointed by no other data structure.
+
+Otherwise, they are just lost page, they won't create a problem.
+
+
+### Crash after the RMHeader update and before the cleanup
+
+When we restart the database, if the *RMHeader* old pointers contains a value different from *NO_PAGE*, that means we have had a crash.
+
+As we have a pointer to the old management **b-trees** in the *RMHeader*, we can reclaim the associated pages. All the old pages can be recovered from this point, as we have a revision for each of these pages. This covers :
+
+* the test **b-tree** and its header
+* the *Btreeof Btrees* and its header
+* the *CopiedPages* **b-tree** and its header
+
+All those pages are simply attached to the free page list.
+
+When the cleanup is done, we can update the *RMHeader* by setting the old pointers to *NO_PAGE*.
+
+## The RecordManagerHeader
+
+This page contains 4 pointers, two for each of the *Btree of Btrees* and the *CopiedPages* **b-trees**. The rational is that we should always be able to cleanup the file if we get a crash after the update of the *RMHeader* but before the end of the cleanup.
+
+When we apply an operation, and before the cleanuo is done, we update the *RMHeader* to keep a track of the new and old references.
+
+When the cleanup is done, we can set the old reference to *NO_PAGE*.
+
+The *NO_PAGE* reference is a marker for a successful operation.
+
+We also keep a pointer to the first free page of a list of free pages (see the next paragaphe).
+
+## Free page management
+
+We use a list of *free pages* which is updated when we free a page or reclaim a new page. It's a simple list where all the pages are linked together.
+
+Everytime we need a free page, we get it from the the list, and we update the *RMHeader* to point to the next free page in the list (or *NO_PAGE* if we don't have any remaining free page). This is a strain because it's expensive to update the *RMHeader* for each free page we need...
+
+ATM, there is no alternative, so we wil continue to update the *RMHeader* everytime we fecth a free page from the list, or every time we add a free page in the list.
+
+Freeing a page is just a matter to make this page to point to the first free page, then to make the *FreePage* pointer to point to the freed page.
+
diff --git a/source/mavibot/vision.md b/source/mavibot/vision.md
new file mode 100644
index 0000000..1f33ce2
--- /dev/null
+++ b/source/mavibot/vision.md
@@ -0,0 +1,51 @@
+---
+title: Vision
+---
+
+# Vision
+
+The **Apache Directory Server** is using an old package to manage its data : **JDBM**. This is a simple - but functional - BTree implementation in Java. It support transactions and storage on disk.
+
+So far, so good. Except that it's kind of slow, and more important, it does not support concurrent reads and writes.
+
+At some point, we decided to go for another implementation, but for a MVCC BTree.
+
+## What is a MVCC BTree ?
+
+### Btree basics
+
+A **Btree** is a data structure that stores <Key, Value> tuples in a tree, with the guarantee that the tree will be ordered, and that the depth of the tree is the same for all the leaves. A **Btree** has nodes and leaves (with the only exception of a Btree with only a root page). The nodes are used to route to the underlying values, and have children. Leaves don't have children.
+
+Nodes and leaves have a maximum number of elements stored into them, and when they are full, they are split. If the split is done on a leaf, we may have to reorganize the tree so that either we can move some elements up and keep the tree at the current height, or we may have to reorganize the full tree so that all the leaves are at the same level, which will then be one deeper (if we added some value) than the tree before the split.
+
+
+### Btree vs B+Tree
+
+The difference between those two data structures is that Btree store values in the nodes, when B+Tree do store all the values in leaves.
+
+At first glance, we can say that finding a value in a Btree will be faster, as we may not go down to the leaves to find it. OTOH, a B+Tree has many advantages, but the two major advantages are :
+
+* we don't need to go up in the tree to browse the tree when searching for more than one value, we can just read the leaves, as they are chained.
+* we will have smaller nodes, so we can cache more of the tree pages than if we have values in the nodes.
+
+Those two big advantages make the B+Tree more interesting to use than the simpler Btree.
+
+(See [Wikipedia page on B+tree](http://en.wikipedia.org/wiki/B%2B_tree) and [Wikipedia page on Btree](http://en.wikipedia.org/wiki/B-tree)
+
+### MVCC
+
+**MVCC** (Multi Version Concurrency Control) is a way to provide concurrent access to the Btree (it's extensively used in many other areas, like programming languages and transactional memory). The main idea is to create a new version of the tree each time we do a modification. It also allows the reorganization of the data on the fly, but this is an extra benefit.
+
+The way it works is that when you do a search on the tree, you first acquire the current revision. Even if the search is taking a while, because it fetches many values, the tree will remain unchanged for the selected revision
+
+Any modification done on the tree will first create a new revision, and the modified pages will first be copied, so that the previous versions will still be available for any search operation being executed at the same time.
+
+It has three direct consequences :
+
+* first, a search will always return 'outdated' values, in the way that new data won't be returned, as they will be stored in a version which is newer.
+* Second, and more important, we don't need any lock to access the data when doing a search, as there is no possible modification on a versioned tree.
+* Third, concurrent modifications are thus limited, as we want to be sure that we don't override some modification done by another thread. They are ways to mitigate this constraints, but in most of the case, it's acceptable.
+
+# So what do we have with Mavibot ?
+
+Pretty much the same thing than **JDBM** but faster, with concurrent reads and writes, serialized writes, transactions, bulk loads (a missing features in **JDBM**), multi-version support, and in-memory BTree.
\ No newline at end of file
diff --git a/source/original-project-proposal.md b/source/original-project-proposal.md
new file mode 100644
index 0000000..2aeb121
--- /dev/null
+++ b/source/original-project-proposal.md
@@ -0,0 +1,182 @@
+---
+title: Proposal for an Apache Directory Project
+---
+
+This is the original project proposal for the incubation of the Apache Directory Project sent to the Apache Incubator by Alex Karasulu. Although old (September 2003), it is still worth reading as the original vision of the project. It's a piece of history.
+
+# Proposal for an Apache Directory Project
+
+10 Sept 2003, Alex Karasulu (akarasulu@apache.org) LDAPd Group Founder
+
+* [Rationale](#section-0-rationale)
+* [Scope of the Project](#section-1-scope-of-the-project)
+* [Initial Source](#section-2-initial-source)
+* [ASF Resources to be Created](#section-3-asf-resources-to-be-created)
+* [Initial Set of Committers](#section-4-initial-set-of-committers)
+* [Apache Sponsoring Individuals](#section-5-apache-sponsoring-individuals)
+* [Incubation Exit Criteria](#section-6-incubation-exit-criteria)
+
+## Section 0 : Rationale
+
+The geometric growth of networks, services, distributed systems, and their components has brought about a revival of interest in directories. Directories are no longer considered commodity products used to store a phone book or list of users. Directories and LDAP have grown into a critical technology that will inevitably become a cornerstone of distributed systems. Several software giants like BEA, SUN, and Microsoft have already demonstrated their belief in this outcome by heavily integrating their products with directories. Directory and naming systems are being used in everything from a simplified form for J2EE configuration to full-blown enterprise directories, within identity management systems and distributed computing platforms like JINI.
+
+The overhead of managing several copies of relatively static information across systems and enterprises is daunting and introduces the potential for data inconsistency. The frequently replicated user and group tables in almost every database driven application alone is a testament to this fact. When multiple systems have to inter operate, they must share access to common information, and directories are the best storage paradigm for rapidly accessing this type of data. Whether the information to be stored, is a component's configuration, a user's security profile, a business rule or a business process, directories are the place to store it for centralized management, and distribution across systems.
+
+To date, a fully compliant pure Java open source LDAPv3 server has not yet been written. This is partially due to the fact that a practical stateful protocol server in Java was virtually impossible until the introduction of the NIO packages in the 1.4 SDK. LDAP, as a stateful protocol, manages client state through a TCP socket connection. The socket connection persists through several client requests and server responses tying them together under a logical session or conversation. Before the introduction of non-blocking IO in the NIO packages of the 1.4 SDK, a thread had to be dedicated to each socket to detect IO. A stateful protocol server written completely in Java, would have needed as many active threads as the number of concurrent clients. Theoretically, scalability would have been very poor; the performance curve would be asymptotic, degrading rapidly with an increase in the number of concurrent connections. To scale pure Java statefull protocol server implementations had to wait until the Merlin release of the JDK.
+
+Furthermore, no embeddable pure Java LDAPv3 server has yet been written and made freely available. We believe the embedding of LDAP servers into existing mail, application and web servers to be the next logical steps in the progression and integration of LDAP. Several commercial examples can already be sited: Microsoft Exchange and BEA Weblogic Server. The management benefits of coupling these servers with an LDAP server are beyond the scope of this proposal and left to the imagination of the reader. However, the synergy between embedded LDAP servers and other flagship Apache servers would lead to greater economies of scale for the Apache server suite and reduce the overhead of management for the Apache software user community.
+
+LDAP directories are specialized databases, however unlike their RDBMS counterparts, LDAP directories are fairly new and for this reason lack rich integration features. High on the list of features lacking in LDAP servers are stored procedures and triggers. Triggers and Java stored procedures would expand the horizon of LDAP in itself even without the benefits of Java. Triggers and stored procedures would alleviate ugly workarounds which currently using polling and meta directories. These features alone would attract groups within the LDAP and Java communities to band together and support the Apache LDAP Project.
+
+LDAP is both a network line protocol and a hierarchical relational database. Some might even argue that LDAP is object oriented. Regardless, the implementation of an LDAP server is not a trivial matter. LDAP code bases written in native languages have to be ported to run on different platforms. Conditional complies in C based implementations were shown to considerably reduce the maintainability of code bases. The complexity of a database, a network line protocol and conditional compilation together have resulted in reduced maintainability for C based LDAP servers. Also the learning curve and hence barrier to entry for developers is greater. These complications would not exist for a Java based LDAP server that is written once and can run anywhere.
+
+The Apache Foundation supports several component container projects which provide the proper foundation for a Java LDAP directory server. Apache also supports several server side application containers which can realize significant functional enhancements by employing an LDAP directory server. Also LDAP requiring organizations today must settle for less than optimal implementations and often have to pay as high as a dollar per entry to directory enable their applications. The Apache LDAP Project would solve these problems by providing a free robust LDAPv3 implementation in a standalone configuration or an embeddable configuration for use in all Apache servers and other third party products.
+
+Our goal is to produce a community of developers with backgrounds in LDAP, X.500, Database Engineering and JNDI tasked with the development of pure Java LDAPv3 Clients, APIs, JNDI providers and LDAPv3 compliant servers with the aforementioned features. The produced software will be ASF licensed. Where applicable the best available ASF/BSD licensed code will be reused and new code will be added to complete the LDAPv3 protocol as defined in [RFC 3377](http://www.ietf.org/rfc/rfc3377.txt) and its associated 8 RFCs listed below:
+
+* [RFC2251](http://www.ietf.org/rfc/rfc2251.txt) Lightweight Directory Access Protocol (v3): LDAP on-the-wire protocol
+* [RFC2252](http://www.ietf.org/rfc/rfc2252.txt) Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions
+* [RFC2253](http://www.ietf.org/rfc/rfc2253.txt) Lightweight Directory Access Protocol (v3): UTF-8 String Representation of DNs
+* [RFC2254](http://www.ietf.org/rfc/rfc2254.txt) The String Representation of LDAP Search Filters
+* [RFC2255](http://www.ietf.org/rfc/rfc2255.txt) The LDAP URL Format
+* [RFC2256](http://www.ietf.org/rfc/rfc2256.txt) A Summary of the X.500(96) User Schema for use with LDAPv3
+* [RFC2829](http://www.ietf.org/rfc/rfc2829.txt) Authentication Methods for LDAP
+* [RFC2830](http://www.ietf.org/rfc/rfc2830.txt) Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
+
+Additionally, the schema objects specified within the following RFCs will be defined for use and partial or full complaince will be met where relavent to the project:
+
+* [RFC1274](http://www.ietf.org/rfc/rfc1274.txt) The COSINE and Internet X.500 Schema
+* [RFC1804](http://www.ietf.org/rfc/rfc1804.txt) Schema Publishing in X.500 Directory
+* [RFC2079](http://www.ietf.org/rfc/rfc2079.txt) Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs)
+* [RFC2247](http://www.ietf.org/rfc/rfc2247.txt) Using Domains in LDAP/X.500 Distinguished Names
+* [RFC2293](http://www.ietf.org/rfc/rfc2293.txt) Representing Tables and Subtrees in the X.500 Directory
+* [RFC2294](http://www.ietf.org/rfc/rfc2294.txt) Representing the O/R Address hierarchy in the X.500 Directory Information Tree
+* [RFC2307](http://www.ietf.org/rfc/rfc2307.txt) An Approach for Using LDAP as a Network Information Service
+* [RFC2377](http://www.ietf.org/rfc/rfc2377.txt) Naming Plan for Internet Directory-Enabled Applications
+* [RFC2587](http://www.ietf.org/rfc/rfc2587.txt) Internet X.509 Public Key Infrastructure LDAPv2 Schema
+* [RFC2589](http://www.ietf.org/rfc/rfc2589.txt) Lightweight Directory Access Protocol (v3): Extensions for Dynamic Directory Services
+* [RFC2596](http://www.ietf.org/rfc/rfc2596.txt) Use of Language Codes in LDAP
+* [RFC2649](http://www.ietf.org/rfc/rfc2649.txt) An LDAP Control and Schema for Holding Operation Signatures
+* [RFC2696](http://www.ietf.org/rfc/rfc2696.txt) LDAP Control Extension for Simple Paged Results Manipulation
+* [RFC2713](http://www.ietf.org/rfc/rfc2713.txt) Schema for Representing Java(tm) Objects in an LDAP Directory
+* [RFC2714](http://www.ietf.org/rfc/rfc2714.txt) Schema for Representing CORBA Object References in an LDAP Directory
+* [RFC2798](http://www.ietf.org/rfc/rfc2798.txt) Definition of the inetOrgPerson? LDAP Object Class
+* [RFC2829](http://www.ietf.org/rfc/rfc2829.txt) Authentication Methods for LDAP
+* [RFC2830](http://www.ietf.org/rfc/rfc2830.txt) Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
+* [RFC2849](http://www.ietf.org/rfc/rfc2849.txt) The LDAP Data Interchange Format (LDIF) - Technical Specification
+* [RFC2891](http://www.ietf.org/rfc/rfc2891.txt) LDAP Control Extension for Server Side Sorting of Search Results
+* [RFC3045](http://www.ietf.org/rfc/rfc3045.txt) Storing Vendor Information in the LDAP root DSE
+* [RFC3062](http://www.ietf.org/rfc/rfc3062.txt) LDAP Password Modify Extended Operation
+* [RFC3088](http://www.ietf.org/rfc/rfc3088.txt) OpenLDAP? Root Service An experimental LDAP referral service
+* [RFC3112](http://www.ietf.org/rfc/rfc3112.txt) LDAP Authentication Password Schema
+* [RFC3296](http://www.ietf.org/rfc/rfc3296.txt) Named Subordinate References in Lightweight Directory Access Protocol (LDAP) Directories
+* [RFC3383](http://www.ietf.org/rfc/rfc3383.txt) Internet Assigned Numbers Authority (IANA) considerations for the Lightweight Directory Access Protocol (LDAP)
+
+### Section 0.1 : Criteria
+
+We feel that this project has a good chance for success as the following project aspects are carefully considered :
+
+Meritocracy: The project will be meritocratic - the usual Apache meritocracy rules would apply.
+
+Community: The user community for this project is potentially massive. The initial developer community for this project consists of developers from Apache and LDAPd projects. The aim is for this community to grow considerably once this project enters the incubator.
+
+Core Developers: The initial developers are listed further below within this document and consist of some existing Apache committers together with committers from the LDAPd Group.
+
+Alignment: There is clear alignment with many existing Apache projects. From Jakarta projects such as Tomcat, James and Slide for embedding LDAP. The LDAP DSML standards will eventually require the use of several XML projects. Other projects like OpenJms?, which currently are not Apache projects but very well may be in the future will be used for things like replication. Jdbm likewise is used for building Btree based indices for custom databases. Also projects like Apache Xindice may be leveraged for an XML based backend or for DSML enabling subsystems of an LDAP server.
+
+We see the Apache Directory Project as a separate project to existing Apache projects, serving several roles
+
+* Home for Apache Directory Client APIs and Client Scripts
+* Home for Apache JNDI Providers for Various Directory Namespaces
+* Home for Apache Directory Servers
+* May also become home to an ASN.1 Encoding/Decoding? Library
+
+### Section 0.2 : Warning Signs
+
+We feel this project has a good chance for success as the following warning signs do not apply to the project we are proposing:
+
+Orphaned products: This project is starting with an existing code base which using lots of the high quality open source code out there which is ASF/BSD licensed.
+
+Inexperience with open source: The initial community is made up of existing Apache and LDAPd Group committers exclusively so the open source experience is there to varying degrees.
+
+Reliance on salaried developers: None of the initial developers are currently paid to work on the Directory Project.
+
+No ties to other Apache products: The Apache Directory Project is complementary to existing technologies at Apache. LDAPd currently uses Avalon and will eventually be used by james. LDAPd will eventually integrate into Geronimo. The Apache Directory Project will integrate with, and possibly subsume, Jakarta Commons Naming.
+
+A fascination with the Apache brand: The committers are interested in developing a healthy open source community around ASF/BSD licensed directory servers and their clients along with other JNDI accessible name spaces. Is Apache the right place? We think it is. Several Apache folks have already shown interest in LDAPd, the seed code base to be used for this project. In fact the LDAPd Group was initially approached by Apache to submit an Incubator proposal. LDAPd Group members voted unanimously to donate the code to Apache in an effort to build the next flagship server at Apache and much more.
+
+## Section 1 : Scope of the Project
+
+There are multiple goals for this Apache project:
+
+* Promote a healthy open source community!
+* Promote a language agnostic environment for both client side and server side endeavors.
+* A one stop location for all directory and naming needs on any platform or any language.
+ * client APIs
+ * clients
+ * JNDI providers for Java and other namespaces.
+ * May also include an LDAP protocol correctness and stress testing suite in the future.
+* Provide servers in embeddable configurations.
+* Provide servers in standalone configurations as UNIX daemons or NT Services.
+* Provide support for Directory Server embedding or integration with existing Apache servers like httpd, Slide, Tomcat, James and Geronimo.
+
+## Section 2 : Initial Source
+
+The initial code base from which to create the Apache Directory repository is contained mostly at Sourceforge under the LDAPd project accessible [here](#). This code base must assign copyright to the Apache Software Foundation. The code base will need to be licensed under The Apache Software Foundation license. The license file in every subproject will be changed to the Apache license. The current license is already an Apache "style" license, so this change is basically a change to name The ASF as the owner.
+
+The proposed TLP (after incubation) would have an one or more directory servers with multiple datastore backends, a JNDI context for J2EE configuration, JNDI service provider(s) for LDAP and other transports, State and Object Factories suitable for use in the various Context/DirContext? implementations, etc.
+
+Beside source code the LDAPd Group must transfer its IANA assigned ASN.1 Object Identifier to Apache Software Foundation.
+
+## Section 3 : ASF Resources to be Created
+
+### Section 3.1 : Mailing Lists
+
+* directory-dev@incubator.apache.org
+
+### Section 3.2 : CVS Repositories
+
+* incubator-directory
+
+### Section 3.3 : Bugzilla or (preferably) Jira
+
+* directory
+
+## Section 4 : Initial Set of Committers
+
+All contributors must sign and submit a Contributors License Agreement. The following individuals are the contributors, and have signed and sent the agreement at one time or another:
+
+* Alex Karasulu
+* Phil Steitz
+* Robb Penoyer
+* Noel Bergman
+* Jeff Machols
+* Henri Yandell
+* Wes McKean?
+
+## Section 5 : Apache Sponsoring Individuals
+
+* Nicola Ken Barozzi (Apache Incubator)
+* Noel J. Bergman (Apache James)
+* Henri Yandell (Jakarta Commons Naming)
+* Stephen McConnell? (Apache Avalon)
+* James Strachan (Apache Geronimo)
+
+## Section 6 : Incubation Exit Criteria
+
+We feel this project should exit the incubator to a TLP using the domain name directory.apache.org should the following goals be met:
+
+Technical Goals:
+
+* Clean status with Apaches Continuous Integration System
+* Website cross reference to existing Apache literature with respect to rules and regulations
+* At a minimum a beta release and/or a series of Release Candidates for a directory server and its clients.
+* At least one server that complies with [RFC2251](http://www.ietf.org/rfc/rfc2251.txt)
+
+Non-Technical Goals:
+
+* List presence and monitoring in wider Apache communities
+* Website cross reference to existing Apache literarature with respect to rules and regulations
+* Initial integration plan and cooperation with Geronimo, and James
+* Member presence on the licensing@apache list
+* More Apache or non-Apache committers who are actively modifying source code
\ No newline at end of file
diff --git a/source/privacy-policy.md b/source/privacy-policy.md
new file mode 100644
index 0000000..c599b06
--- /dev/null
+++ b/source/privacy-policy.md
@@ -0,0 +1,19 @@
+---
+title: Privacy Policy
+---
+
+# Privacy Policy
+
+Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following:
+
+* The IP address from which you access the website;
+* The type of browser and operating system you use to access our site;
+* The date and time you access our site;
+* The pages you visit; and
+* The addresses of pages from where you followed a link to our site.
+
+Part of this information is gathered using a tracking cookie set by the Google Analytics service and handled by Google as described in their privacy policy. See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google.
+
+We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources.
+
+By using this website, you consent to the collection of this data in the manner and for the purpose described above.
diff --git a/source/references.md b/source/references.md
new file mode 100644
index 0000000..129dee7
--- /dev/null
+++ b/source/references.md
@@ -0,0 +1,25 @@
+---
+title: References
+---
+
+# References
+
+This page gathers some of the pointers you can find on the net about _ApacheDS_ and _LDAP_ :
+
+
+## On wikipedia:
+
+* [Joint placeholder for project, the server, Studio and more](https://en.wikipedia.org/wiki/Apache_Directory)
+* [Overview of know ldap tools and servers](https://en.wikipedia.org/wiki/List_of_LDAP_software)
+* [Overview of directory servers](https://en.wikipedia.org/wiki/Directory_service)
+* [French placeholder](https://fr.wikipedia.org/wiki/Apache_Directory_Server)
+
+## On OHLOH (openhub)
+
+* [Apache Directory Server 1.5](https://www.openhub.net/p/apacheds)
+* [Apache Directory Server 1.0](https://www.openhub.net/p/4873)
+* [Apache Directory Studio](https://www.openhub.net/p/elbe)
+
+## On Twitter:
+
+* [ApacheDS official twitter account](https://twitter.com/apacheds)
diff --git a/source/scimple/__index.md b/source/scimple/__index.md
new file mode 100644
index 0000000..760d99c
--- /dev/null
+++ b/source/scimple/__index.md
@@ -0,0 +1,16 @@
+---
+type: scimple
+title: Welcome to Apache eSCIMo
+slug: index
+---
+
+# Apache SCIMple™
+
+The Apache SCIMple™ is an implementation of SCIM v2.0 specification.
+
+Using Apache SCIMple™ user and group details can be transferred easily between
+SCIM aware applications.
+
+<div class="news">
+ {{< grabpage "scimple/news.md" >}}
+</div>
diff --git a/source/scimple/news.md b/source/scimple/news.md
new file mode 100644
index 0000000..18f8ac6
--- /dev/null
+++ b/source/scimple/news.md
@@ -0,0 +1,5 @@
+---
+title: News
+---
+
+# News
diff --git a/source/security-advisories.md b/source/security-advisories.md
new file mode 100644
index 0000000..0d6e4f5
--- /dev/null
+++ b/source/security-advisories.md
@@ -0,0 +1,14 @@
+---
+title: Security Advisories
+---
+
+# Security Advisories
+
+## Apache LDAP API
+
+ * [CVE-2018-1337](https://nvd.nist.gov/vuln/detail/CVE-2018-1337)
+ * [CVE-2015-3250](https://nvd.nist.gov/vuln/detail/CVE-2015-3250)
+
+## Apache Directory Studio
+
+ * [CVE-2015-5349](https://nvd.nist.gov/vuln/detail/CVE-2015-5349)
diff --git a/source/sources.md b/source/sources.md
new file mode 100644
index 0000000..3d5e744
--- /dev/null
+++ b/source/sources.md
@@ -0,0 +1,125 @@
+---
+title: Sources
+---
+
+# Sources
+
+Most sources for the Apache Directory projects are managed through Git, some parts still remain in Subversion. For each project you can find a detailed description how to checkout and build the source on the project documentation. This page is just a short overview.
+
+## Web access
+
+If you just want to browse the source code, you can use one of the web interfaces:
+
+* [web interface to Gitbox](https://gitbox.apache.org/repos/asf?a=project_list&s=directory-)
+* [web interface to GitHub](https://github.com/apache?q=directory-)
+* [web interface to Subversion](https://svn.apache.org/viewvc/directory)
+
+## Normal Git/Subversion Access
+
+Anyone can clone a git repository or check code out from Subversion. You only need to specify a username and password in order to update a repository, and only Directory committers have the permissions to do that. We run Git and Subversion over standard HTTPS, so hopefully you won't have problems with intervening firewalls.
+
+### Check out from Git or Subversion
+
+For Git use a command like:
+
+ git clone https://gitbox.apache.org/repos/asf/directory-server.git
+
+For Subversion Use a command like:
+
+ svn checkout https://svn.apache.org/repos/asf/directory/apacheds/trunk
+
+The following table displays the URL of each project, and the URL where you can find information about how to build each project.
+
+| Subproject / Documentation | SCM URL |
+|:-:|:-:|
+| ApacheDS 1.0 (not maintained) | [https://svn.apache.org/repos/asf/directory/apacheds/tags/1.0.2/](https://svn.apache.org/repos/asf/directory/apacheds/tags/1.0.2/) |
+| [ApacheDS 2.0](https://directory.apache.org/apacheds/advanced-ug/0.2-building-trunks.html) | [https://gitbox.apache.org/repos/asf/directory-server.git](https://gitbox.apache.org/repos/asf/directory-server.git) |
+| ApacheDS build tools (checkstyle, docker, junit-addons, skins) | [https://gitbox.apache.org/repos/asf/directory-buildtools.git](https://gitbox.apache.org/repos/asf/directory-buildtools.git) |
+| [Apache Directory Studio](https://directory.apache.org/studio/developers-guide.html) | [https://gitbox.apache.org/repos/asf/directory-studio.git](https://gitbox.apache.org/repos/asf/directory-studio.git) |
+| [Apache LDAP API](https://directory.apache.org/api/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-ldap-api.git](https://gitbox.apache.org/repos/asf/directory-ldap-api.git) |
+| [Apache Mavibot](https://directory.apache.org/mavibot/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-mavibot.git](https://gitbox.apache.org/repos/asf/directory-mavibot.git) |
+| [Apache Fortress Core](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-core.git](https://gitbox.apache.org/repos/asf/directory-fortress-core.git) |
+| [Apache Fortress Realm](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-realm.git](https://gitbox.apache.org/repos/asf/directory-fortress-realm.git) |
+| [Apache Fortress EnMasse (REST API)](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git](https://gitbox.apache.org/repos/asf/directory-fortress-enmasse.git) |
+| [Apache Fortress Commander (Web UI)](https://directory.apache.org/fortress/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-fortress-commander.git ](https://gitbox.apache.org/repos/asf/directory-fortress-commander.git ) |
+| [Apache Kerby](https://directory.apache.org/kerby/developer-guide.html) | [https://gitbox.apache.org/repos/asf/directory-kerby.git ](https://gitbox.apache.org/repos/asf/directory-kerby.git ) |
+| Apache SCIMple | [https://gitbox.apache.org/repos/asf/directory-scimple.git](https://gitbox.apache.org/repos/asf/directory-scimple.git) |
+| Apache Directory Site | [https://svn.apache.org/repos/asf/directory/site/trunk/](https://svn.apache.org/repos/asf/directory/site/trunk/) |
+
+### Commit Changes
+
+Any Directory committer has commit access. Use your Apache user ID and LDAP password for authentication. You can change the password at [https://id.apache.org/](https://id.apache.org/).
+
+### Commit changes to Git
+
+You can use a command like this to commit, rebase possible remote changes, and push your changes to the repository:
+
+ git commit
+ git pull --rebase
+ git push
+
+### Commit changes to Subversion
+
+You can use a command like this to commit:
+
+ svn commit
+
+If Subversion can't figure out your username, you can tell it explicitly:
+
+ svn --username you commit
+
+Subversion will prompt you for a password, and once you enter it once, it will remember it for you.
+
+## Web Site
+
+The Web site itself is stored in a SVN repository and can be updated easily. Let's see how it works.
+
+What is important here is that the pages are written using Markdown. Once a page has been modified, it can be committed, which will generate the static pages on a staging web site. When everything is checked and sounds correct, the staging site can be published on the production site, which will be pushed to the mirrors every hour. Here is the process :
+
+* Modify the markdown pages
+* Commit them
+* Check on the staging site to see if it's correct (see [https://directory.staging.apache.org/](https://directory.staging.apache.org/))
+* Publish the site using the [Apache CMS](https://www.apache.org/dev/cmsref.html)
+
+### Repository
+
+All the web site can be fetched at [https://svn.apache.org/repos/asf/directory/site/trunk/](https://svn.apache.org/repos/asf/directory/site/trunk/). Be sure to use *https* in order to be able to commit your changes...
+
+### Structure
+The following structure is used :
+
+ cgi-bin
+
+ content
+ |
+ +-- apacheds
+ |
+ +-- api
+ .
+ .
+ +-- (common pages)
+
+ lib
+ |
+ +-- path.pm
+ |
+ +-- view.pm
+
+ templates
+ |
+ +-- apacheds
+ |
+ +-- api
+ .
+ .
+ +-- studio
+ |
+ +-- (index.html, etc)
+
+Usually, you won't have to change the templates and lib section (except when cutting a release). Most of ypur updates will impact the content/<project> pages.
+
+### Publishing the web site
+
+You have to install the [CMS bookmarklet](https://www.apache.org/dev/cms.html#usage) for that. Then simply open the directory web site and click on the bookmarklet, enter your apache credentials (you have to be a committer) and click on the 'Publish' button.
+
+The best way to understand how to use the CMS system is to follow [this video](https://www.youtube.com/watch?v=xcDZN3Lu6HA).
diff --git a/source/special-thanks.md b/source/special-thanks.md
new file mode 100644
index 0000000..8a7870b
--- /dev/null
+++ b/source/special-thanks.md
@@ -0,0 +1,32 @@
+---
+title: Special thanks
+---
+
+# Special Thanks
+
+## General Apache sponsors
+
+Without those sponsors, the ASF would simply not exist or sustain its activities :
+
+ * [http://www.apache.org/foundation/thanks.html](http://www.apache.org/foundation/thanks.html)
+
+For those who want to know more about the Apache Sponsorship Program, please check :
+
+ * [http://www.apache.org/foundation/sponsorship.html](http://www.apache.org/foundation/sponsorship.html)
+
+Thanks !
+
+## Organizations who helped our project ...
+
+We would also like to thank the organizations who provided some tools and images for free :
+
+| Company/Organization | Donation type | Organization Contact | Apache Contact |
+|:-:|---|:-:|:-:|
+| [![](images/special-thanks/opengroup_logo.png)](http://www.opengroup.org/) | Compliance test suite, LDAP certification support | Lynne Canal | Alex Karasulu |
+| [![](images/special-thanks/YourKit_logo.png)](http://www.yourkit.com/) | Licenses for YourKit | Vladimir Kondratyev (sales at yourkit.com) | Emmanuel Lécharny |
+| [![](images/special-thanks/JetBrains_logo.png)](http://www.jetbrains.com/) | Licenses for IDEA | Ilia Dumov (Ilia.Dumov at jetbrains.com) | Alex Karasulu |
+| [![](images/special-thanks/SQLManager.bmp)](http://www.sqlmanager.net/) | Licenses for MySQL/Postgres | Roman Tkachenko (sales at sqlmanager.net) | Alex Karasulu |
+| [![](images/special-thanks/borland.gif)](http://www.borland.com/) | Licenses for Together | Lesong Chang (lesong.chang at borland.com) | Alex Karasulu |
+| [![](images/special-thanks/opensourceposeidon_supportedby.gif)](http://www.gentleware.com/) | Licenses for Poseidon UML | - | Stefan Zoerner |
+| [![](images/special-thanks/FAMFAMFAM_logo.png)](http://www.famfamfam.com/lab/icons/silk/) | Silk Icons | Mark James | Emmanuel Lécharny |
+| [![](images/special-thanks/zenl_logo.gif)](http://www.lattix.com/) | Licenses for Lattix LDM | Frank Waldman (frank.waldman at lattix.com) | Alex Karasulu |
diff --git a/source/studio/__index.md b/source/studio/__index.md
new file mode 100644
index 0000000..85a8aad
--- /dev/null
+++ b/source/studio/__index.md
@@ -0,0 +1,89 @@
+---
+type: studio
+title: Welcome to Apache Directory Studio
+slug: index
+---
+
+<div class="hero clearfix">
+ <div class="left">
+ <h1>Apache Directory Studio™</h1>
+ <h2>The Eclipse-based LDAP browser and directory client</h2>
+ <div class="description">Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.</div>
+ <div class="download-link">
+ <a href="/studio/downloads.html" class="download_badge"><b>Download Apache<br>Directory Studio {{< param version_studio_name >}}</b></a>
+ </div>
+ </div>
+ <div class="right">
+ <div id="studio-slideshow" class="slideshow">
+ <img src="static/images/screen_ldap_browser.jpg" width="377" height="287" border="0"/>
+ </div>
+ <script type="text/javascript" src="static/js/mootools.js"></script><script type="text/javascript" src="static/js/slideshow.js"></script>
+ <script type="text/javascript">
+ window.onload = function()
+ {
+ new Slideshow( "studio-slideshow",
+ {
+ hu: 'static/images/',
+ images: [
+ 'screen_ldap_browser.jpg',
+ 'screen_ldif_editor.jpg',
+ 'screen_aci_editor.jpg',
+ 'screen_schema_editor.jpg',
+ 'screen_apacheds_configuration.jpg'
+ ],
+ duration: [600, 2000]
+ });
+ }
+ </script>
+ </div>
+</div>
+
+<div class="features-highlights clearfix">
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_studio_ldap_browser.png">
+ <h3>LDAP Browser</h3>
+ <div class="text">The LDAP Browser has been designed to work with almost any LDAP server available. It not only permits to read and display the tree of your LDAP Server but also allows you to modify it by creating, editing or removing entries.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_studio_ldif_editor.png">
+ <h3>LDIF Editor</h3>
+ <div class="text">The LDIF Editor is a tool for editing LDIF files. It provides syntax highlighting and content assistance.</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_studio_schema_editor.png">
+ <h3>Schema Editor</h3>
+ <div class="text">The Schema Editor has been designed to edit the schema files in the OpenLDAP format. It allows you to edit easily attribute types and object classes for Apache Directory Server and OpenLDAP.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_studio_embedded_apacheds.png">
+ <h3>Embedded ApacheDS</h3>
+ <div class="text">Apache Directory Studio bundles the latest version of the LDAPV3 certified ApacheDS. Creating and launching a new LDAP server now takes less than 10 seconds!</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_studio_apacheds_configuration.png">
+ <h3>ApacheDS Configuration</h3>
+ <div class="text">The ApacheDS Configuration Editor can be used to edit the server configuration ('server.xml' and 'config.ldif' files) of an Apache Directory Server installation.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_studio_aci_editor.png">
+ <h3>ACI Editor</h3>
+ <div class="text">The ACI Editor allows you to define, for an entry or a set of entries, graphically or manually (in souce code mode), an ACI (Access Control Information) item specification for Apache Directory Server.</div>
+ </div>
+ <div class="separator clearfix"></div>
+ <div class="feature-highlight left">
+ <img class="icon" src="../images/feature_highlight_studio_internationalization.png">
+ <h3>Internationalization</h3>
+ <div class="text">Apache Directory Studio is internationalized in English, French and German. We're also open for volunteers who want to add another language support.</div>
+ </div>
+ <div class="feature-highlight right">
+ <img class="icon" src="../images/feature_highlight_studio_multi_platform_in_eclipse.png">
+ <h3>Multi-Platform & in Eclipse</h3>
+ <div class="text">Based on Eclipse, Apache Directory Studio is a multi-plaform application that runs on macOS, Linux and Windows, and also as plugins inside Eclipse itself.</div>
+ </div>
+</div>
+
+<div class="news">
+ {{< grabpage "studio/news.md" >}}
+</div>
diff --git a/source/studio/changelog.md b/source/studio/changelog.md
new file mode 100644
index 0000000..29928d3
--- /dev/null
+++ b/source/studio/changelog.md
@@ -0,0 +1,1075 @@
+---
+title: ChangeLog
+---
+
+# ChangeLog
+
+## Apache Directory Studio Version 2.0.0-M14 (September 8th 2018)
+
+* [DIRSTUDIO-987](https://issues.apache.org/jira/browse/DIRSTUDIO-987) - strange behaviour with multi-valued RDN
+* [DIRSTUDIO-1057](https://issues.apache.org/jira/browse/DIRSTUDIO-1057) - Update site doesn't work with https
+* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
+* [DIRSTUDIO-1148](https://issues.apache.org/jira/browse/DIRSTUDIO-1148) - IOConsole Updater - An internal error has occurred.Java heap space
+* [DIRSTUDIO-1151](https://issues.apache.org/jira/browse/DIRSTUDIO-1151) - DN with backslash not displayed
+* [DIRSTUDIO-1157](https://issues.apache.org/jira/browse/DIRSTUDIO-1157) - Values cannot be modified by text editor
+* [DIRSTUDIO-1163](https://issues.apache.org/jira/browse/DIRSTUDIO-1163) - Apache Directory Studio not starting on my MacBookPro running MacOS 10.13
+* [DIRSTUDIO-1166](https://issues.apache.org/jira/browse/DIRSTUDIO-1166) - Studio crashes frequently Ever since MacOS High Sierra upgrade
+* [DIRSTUDIO-1172](https://issues.apache.org/jira/browse/DIRSTUDIO-1172) - Studio doesn't display entries due to Invalid DN exception, but DN is compliant with RFC4514.
+* [DIRSTUDIO-1174](https://issues.apache.org/jira/browse/DIRSTUDIO-1174) - Directory Studio startup very slow due to schema LDIF processing
+* [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179) - java.io.IOException: Invalid secret key format after Java update
+* [DIRSTUDIO-1180](https://issues.apache.org/jira/browse/DIRSTUDIO-1180) - Value changed by Text Editor doesn't save
+* [DIRSTUDIO-1184](https://issues.apache.org/jira/browse/DIRSTUDIO-1184) - ClassDef not found for @PostConstruct and @PreDestroy for JDK >=9
+* [DIRSTUDIO-1185](https://issues.apache.org/jira/browse/DIRSTUDIO-1185) - OS reported defective Software and needs to be deleted
+* [DIRSTUDIO-1191](https://issues.apache.org/jira/browse/DIRSTUDIO-1191) - Apache Directory Studio (Version: 2.0.0.v20170904-M13) suddenly crashes while browsing in MacOS (10.13.6)
+* [DIRSTUDIO-1156](https://issues.apache.org/jira/browse/DIRSTUDIO-1156) - Text Editor usability improvements
+* [DIRSTUDIO-1175](https://issues.apache.org/jira/browse/DIRSTUDIO-1175) - Description for 1.3.18.0.2.32.102 - 1.3.18.0.2.32.104 missing
+* [DIRSTUDIO-1176](https://issues.apache.org/jira/browse/DIRSTUDIO-1176) - Sign dmg in MacOS release
+* [DIRSTUDIO-1177](https://issues.apache.org/jira/browse/DIRSTUDIO-1177) - Enhance default editor mappings for eDirectory/Identity Manager
+* [DIRSTUDIO-1186](https://issues.apache.org/jira/browse/DIRSTUDIO-1186) - Make Studio Java 11 ready
+* [DIRSTUDIO-1187](https://issues.apache.org/jira/browse/DIRSTUDIO-1187) - Disable JNDI connection provider for Java 9+
+* [DIRSTUDIO-1192](https://issues.apache.org/jira/browse/DIRSTUDIO-1192) - Change update site to use https
+* [DIRSTUDIO-1193](https://issues.apache.org/jira/browse/DIRSTUDIO-1193) - Cleanup documenation
+
+## Apache Directory Studio Version 2.0.0-M13 (September 4th 2017)
+
+* [DIRSTUDIO-1120](https://issues.apache.org/jira/browse/DIRSTUDIO-1120) - Checkbox active protocols
+* [DIRSTUDIO-1127](https://issues.apache.org/jira/browse/DIRSTUDIO-1127) - Configuration of Kerberos and ChangePassword port is not working
+* [DIRSTUDIO-1129](https://issues.apache.org/jira/browse/DIRSTUDIO-1129) - Referrals do not work in v2
+* [DIRSTUDIO-1130](https://issues.apache.org/jira/browse/DIRSTUDIO-1130) - Password from Keystore not used
+* [DIRSTUDIO-1133](https://issues.apache.org/jira/browse/DIRSTUDIO-1133) - Potential NPE issue
+* [DIRSTUDIO-1134](https://issues.apache.org/jira/browse/DIRSTUDIO-1134) - Boolean Attribute Addition with no value causes Directory Studio crash on Mac
+* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
+* [DIRSTUDIO-1143](https://issues.apache.org/jira/browse/DIRSTUDIO-1143) - Stack trace when saving configuration
+* [DIRSTUDIO-1147](https://issues.apache.org/jira/browse/DIRSTUDIO-1147) - bad links studio welcome overview page
+* [DIRSTUDIO-1131](https://issues.apache.org/jira/browse/DIRSTUDIO-1131) - Update for OIDDescriptions.properties
+* [DIRSTUDIO-1144](https://issues.apache.org/jira/browse/DIRSTUDIO-1144) - Upgrade to Eclipse Neon.3
+
+## Apache Directory Studio Version 2.0.0-M12 (November 1st 2016)
+
+* [DIRSTUDIO-738](https://issues.apache.org/jira/browse/DIRSTUDIO-738) - Modular Crypt Format Salts are incorrectly displayed
+* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
+* [DIRSTUDIO-1026](https://issues.apache.org/jira/browse/DIRSTUDIO-1026) - Searching for an AT or an OC using an alternate name does not find it
+* [DIRSTUDIO-1050](https://issues.apache.org/jira/browse/DIRSTUDIO-1050) - High CPU load when opening attribute editor with Eclipse Mars
+* [DIRSTUDIO-1075](https://issues.apache.org/jira/browse/DIRSTUDIO-1075) - ADS does not work with Oracle JRE 9
+* [DIRSTUDIO-1080](https://issues.apache.org/jira/browse/DIRSTUDIO-1080) - Unable to save Server-Configuration: ERR_55 Trying to remove an non-existant attribute: attributetype
+* [DIRSTUDIO-1081](https://issues.apache.org/jira/browse/DIRSTUDIO-1081) - Unable to save any configuration with apacheDS 2.0 and apache studio 2.0 M10
+* [DIRSTUDIO-1082](https://issues.apache.org/jira/browse/DIRSTUDIO-1082) - 'Save configuration' encountered a problem
+* [DIRSTUDIO-1083](https://issues.apache.org/jira/browse/DIRSTUDIO-1083) - Unable to save Configuration
+* [DIRSTUDIO-1085](https://issues.apache.org/jira/browse/DIRSTUDIO-1085) - "Show Default Schema" doesn't seem to do anything
+* [DIRSTUDIO-1090](https://issues.apache.org/jira/browse/DIRSTUDIO-1090) - Sorting by value not being applied
+* [DIRSTUDIO-1091](https://issues.apache.org/jira/browse/DIRSTUDIO-1091) - Apache DS M10 hangs at 14% when connectiing on Windows 10
+* [DIRSTUDIO-1095](https://issues.apache.org/jira/browse/DIRSTUDIO-1095) - Preferences : Connections : Certificates => java.lang.NullPointer
+* [DIRSTUDIO-1098](https://issues.apache.org/jira/browse/DIRSTUDIO-1098) - Refresh of entry causes: "Unhandled event loop exception"
+* [DIRSTUDIO-1100](https://issues.apache.org/jira/browse/DIRSTUDIO-1100) - Race condition.
+* [DIRSTUDIO-1101](https://issues.apache.org/jira/browse/DIRSTUDIO-1101) - Can't disable "Allow Anonymous Access"
+* [DIRSTUDIO-1108](https://issues.apache.org/jira/browse/DIRSTUDIO-1108) - Getting Invalid Certificate for userCertificate;binary entry when connecting with LDAPS, LDAP works fine
+* [DIRSTUDIO-1111](https://issues.apache.org/jira/browse/DIRSTUDIO-1111) - Unable to connect to LDS connected to Active Directory over SSL
+* [DIRSTUDIO-1112](https://issues.apache.org/jira/browse/DIRSTUDIO-1112) - NullPointerException when clicking a certificate on the Certificate Validation preference page
+* [DIRSTUDIO-1114](https://issues.apache.org/jira/browse/DIRSTUDIO-1114) - Bad encoding used in text editor for binary data
+* [DIRSTUDIO-1115](https://issues.apache.org/jira/browse/DIRSTUDIO-1115) - Value editor settings are not used and the menu displays wrong entries
+* [DIRSTUDIO-1116](https://issues.apache.org/jira/browse/DIRSTUDIO-1116) - Attribute not sorted alphabetically for multiple entries
+* [DIRSTUDIO-1121](https://issues.apache.org/jira/browse/DIRSTUDIO-1121) - Performance penalty as editor input is always set twice
+* [DIRSTUDIO-1118](https://issues.apache.org/jira/browse/DIRSTUDIO-1118) - Add menu item to repair ApacheDS partitions
+* [DIRSTUDIO-1093](https://issues.apache.org/jira/browse/DIRSTUDIO-1093) - Upgrade to Eclipse Mars.2
+* [DIRSTUDIO-1022](https://issues.apache.org/jira/browse/DIRSTUDIO-1022) - Installers
+
+## Apache Directory Studio Version 2.0.0-M11 (not released)
+
+## Apache Directory Studio Version 2.0.0-M10 (January 2th 2016)
+
+* CVE-2015-5349 - Command Injection through LDAP CSV export
+* [DIRSTUDIO-1060](https://issues.apache.org/jira/browse/DIRSTUDIO-1060) - Exported OpenLDAP schema has syntax errors
+* [DIRSTUDIO-1061](https://issues.apache.org/jira/browse/DIRSTUDIO-1061) - RawSchemaDefinition always shows single hyphen/dash (empty) for attributes or classes
+* [DIRSTUDIO-1068](https://issues.apache.org/jira/browse/DIRSTUDIO-1068) - Bundles are not resolved on Eclipse Mars
+* [DIRSTUDIO-1077](https://issues.apache.org/jira/browse/DIRSTUDIO-1077) - Logging for embedded ApacheDS servers broken (log4j.properties is deleted)
+* [DIRSTUDIO-1079](https://issues.apache.org/jira/browse/DIRSTUDIO-1079) - Creating a new entry using an existing one fails because teh entryCSN at is being copied
+* [DIRSTUDIO-1065](https://issues.apache.org/jira/browse/DIRSTUDIO-1065) - Have a better error message when the java version is wrong
+
+## Apache Directory Studio Version 2.0.0-M9 (June 6th 2015)
+
+**Bug**
+
+* [DIRSTUDIO-815](https://issues.apache.org/jira/browse/DIRSTUDIO-815) - Tiny translation error [DE]
+* [DIRSTUDIO-819](https://issues.apache.org/jira/browse/DIRSTUDIO-819) - Cannot open entries with DNs with UTF8 characters (Active Directory)
+* [DIRSTUDIO-836](https://issues.apache.org/jira/browse/DIRSTUDIO-836) - Search for attributes with underscore "_" in attribute name eg. attr_name is not possible
+* [DIRSTUDIO-855](https://issues.apache.org/jira/browse/DIRSTUDIO-855) - Some logical site artifact paths do not exist in site.xml / Apache Directory Studio 2.X Update Site / Nexus P2 Update Site Proxy
+* [DIRSTUDIO-860](https://issues.apache.org/jira/browse/DIRSTUDIO-860) - Apache Directory Studio Update Site ZIP Archive not installable in Eclipse Indigo
+* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
+* [DIRSTUDIO-922](https://issues.apache.org/jira/browse/DIRSTUDIO-922) - Eclipse plugin for version 2.0.0-M7 not installing correctly
+* [DIRSTUDIO-932](https://issues.apache.org/jira/browse/DIRSTUDIO-932) - NPE while importing an ApacheDS 2.0 configuration from within the editor
+* [DIRSTUDIO-934](https://issues.apache.org/jira/browse/DIRSTUDIO-934) - Exporting the configuration from the ApacheDS 2.0 Configuration Editor should not change the input
+* [DIRSTUDIO-938](https://issues.apache.org/jira/browse/DIRSTUDIO-938) - LDAP Browser shows non ascii symbols as escaped
+* [DIRSTUDIO-948](https://issues.apache.org/jira/browse/DIRSTUDIO-948) - Sorting search results does not work with over 1000 results
+* [DIRSTUDIO-950](https://issues.apache.org/jira/browse/DIRSTUDIO-950) - Add support for PKCS5S2 hashing mechanism in Password Dialog
+* [DIRSTUDIO-955](https://issues.apache.org/jira/browse/DIRSTUDIO-955) - Quick search one/subtree scope button is not sticky/always defaults to "one" when starting DS
+* [DIRSTUDIO-958](https://issues.apache.org/jira/browse/DIRSTUDIO-958) - Exporting schemas as OpenLDAP files outputs entries in random order
+* [DIRSTUDIO-959](https://issues.apache.org/jira/browse/DIRSTUDIO-959) - Exporting schemas as OpenLDAP files does not use proper escaping
+* [DIRSTUDIO-961](https://issues.apache.org/jira/browse/DIRSTUDIO-961) - Crash during loading after recent uplate of libraries on Ubuntu
+* [DIRSTUDIO-962](https://issues.apache.org/jira/browse/DIRSTUDIO-962) - Crash at startup : gtk_widget_get_tooltip_text
+* [DIRSTUDIO-963](https://issues.apache.org/jira/browse/DIRSTUDIO-963) - Why UTF-8 is escaped in DN strings since 2.0.0?
+* [DIRSTUDIO-964](https://issues.apache.org/jira/browse/DIRSTUDIO-964) - Fonts look ugly on Mac with Retina Display
+* [DIRSTUDIO-965](https://issues.apache.org/jira/browse/DIRSTUDIO-965) - SIGSEGV on Startup
+* [DIRSTUDIO-966](https://issues.apache.org/jira/browse/DIRSTUDIO-966) - NullPointerException after expanding LDAP tree and "Error notifying a preference change listener" in "attr/val quick filter"
+* [DIRSTUDIO-967](https://issues.apache.org/jira/browse/DIRSTUDIO-967) - Timeout occurs during LDAP search
+* [DIRSTUDIO-970](https://issues.apache.org/jira/browse/DIRSTUDIO-970) - gui quit whithout any prompt
+* [DIRSTUDIO-979](https://issues.apache.org/jira/browse/DIRSTUDIO-979) - Crash with port already in use issues
+* [DIRSTUDIO-983](https://issues.apache.org/jira/browse/DIRSTUDIO-983) - Package org.eclipse.update has been removed in Eclipse 4.2
+* [DIRSTUDIO-988](https://issues.apache.org/jira/browse/DIRSTUDIO-988) - Studio plugins don't work in Eclipse Luna
+* [DIRSTUDIO-993](https://issues.apache.org/jira/browse/DIRSTUDIO-993) - Directory studio stops after a few commands issued
+* [DIRSTUDIO-999](https://issues.apache.org/jira/browse/DIRSTUDIO-999) - Fails to start after upgrade to CentOS 6.6/cairo 1.8.8-3.1
+* [DIRSTUDIO-1000](https://issues.apache.org/jira/browse/DIRSTUDIO-1000) - LDAP perspective not opening on STS 3.6.2
+* [DIRSTUDIO-1001](https://issues.apache.org/jira/browse/DIRSTUDIO-1001) - Unable to install in Luna
+* [DIRSTUDIO-1012](https://issues.apache.org/jira/browse/DIRSTUDIO-1012) - Wrong USAGE for 9 passwordPolicy attributes
+* [DIRSTUDIO-1014](https://issues.apache.org/jira/browse/DIRSTUDIO-1014) - Cannot remove the 'finished operations' in the progress pane
+* [DIRSTUDIO-1018](https://issues.apache.org/jira/browse/DIRSTUDIO-1018) - Adding a new LDIF file directly fails with an error "can't find IDfind.ext"
+* [DIRSTUDIO-1020](https://issues.apache.org/jira/browse/DIRSTUDIO-1020) - Fail to launch
+* [DIRSTUDIO-1038](https://issues.apache.org/jira/browse/DIRSTUDIO-1038) - Dispose the various org.eclipse.swt.graphics.* objects we use
+* [DIRSTUDIO-1039](https://issues.apache.org/jira/browse/DIRSTUDIO-1039) - SWTBot test suite hangs on opening connection
+* [DIRSTUDIO-1040](https://issues.apache.org/jira/browse/DIRSTUDIO-1040) - Job found still running after platform shutdown
+* [DIRSTUDIO-1042](https://issues.apache.org/jira/browse/DIRSTUDIO-1042) - Fix logging system
+* [DIRSTUDIO-1043](https://issues.apache.org/jira/browse/DIRSTUDIO-1043) - First open of LDIF editor fails
+* [DIRSTUDIO-1045](https://issues.apache.org/jira/browse/DIRSTUDIO-1045) - New Connection problem - ERR_04269 ATTRIBUTE_TYPE for OID ads-basedn does not exist
+* [DIRSTUDIO-1047](https://issues.apache.org/jira/browse/DIRSTUDIO-1047) - No BrowserViewUniversalListener.connectionOpened null checks
+
+**Improvement**
+
+* [DIRSTUDIO-425](https://issues.apache.org/jira/browse/DIRSTUDIO-425) - Please provide the eclipse update site as zipfile
+* [DIRSTUDIO-937](https://issues.apache.org/jira/browse/DIRSTUDIO-937) - No password confirmation while changing it
+* [DIRSTUDIO-940](https://issues.apache.org/jira/browse/DIRSTUDIO-940) - Have schema editor populate creatorsName attribute for new objects (needed by ApacheDS)
+* [DIRSTUDIO-941](https://issues.apache.org/jira/browse/DIRSTUDIO-941) - Friendly name for attribute syntax not shown when creating new attribute
+* [DIRSTUDIO-942](https://issues.apache.org/jira/browse/DIRSTUDIO-942) - Description for OID 1.3.18.0.2.32.99 missing
+* [DIRSTUDIO-980](https://issues.apache.org/jira/browse/DIRSTUDIO-980) - Make the new schema element visible withoit needing to click refresh in an obscure popup...
+* [DIRSTUDIO-985](https://issues.apache.org/jira/browse/DIRSTUDIO-985) - member;Range
+* [DIRSTUDIO-1003](https://issues.apache.org/jira/browse/DIRSTUDIO-1003) - The "Open Configuration" function is broken and doesn't work
+* [DIRSTUDIO-1041](https://issues.apache.org/jira/browse/DIRSTUDIO-1041) - Headless run of SWTBot tests
+
+**New Feature**
+
+* [DIRSTUDIO-756](https://issues.apache.org/jira/browse/DIRSTUDIO-756) - Provide a P2 repository
+* [DIRSTUDIO-949](https://issues.apache.org/jira/browse/DIRSTUDIO-949) - Add the ability to configure a Mavibot partition
+
+**Task**
+
+* [DIRSTUDIO-646](https://issues.apache.org/jira/browse/DIRSTUDIO-646) - Exclude ".gitignore" from source distribution
+* [DIRSTUDIO-995](https://issues.apache.org/jira/browse/DIRSTUDIO-995) - Migrate build system to use Tycho
+* [DIRSTUDIO-1005](https://issues.apache.org/jira/browse/DIRSTUDIO-1005) - Cleanup ApacheDS plugins
+* [DIRSTUDIO-1006](https://issues.apache.org/jira/browse/DIRSTUDIO-1006) - Fix ODF export
+* [DIRSTUDIO-1007](https://issues.apache.org/jira/browse/DIRSTUDIO-1007) - Replace org.eclipse.update.*
+* [DIRSTUDIO-1009](https://issues.apache.org/jira/browse/DIRSTUDIO-1009) - Check legal files
+* [DIRSTUDIO-1010](https://issues.apache.org/jira/browse/DIRSTUDIO-1010) - Hide unwanted UI items contributed by org.eclipse.* plugins
+* [DIRSTUDIO-1016](https://issues.apache.org/jira/browse/DIRSTUDIO-1016) - Adapt ApacheDS plugins to new configuration scheme
+* [DIRSTUDIO-1051](https://issues.apache.org/jira/browse/DIRSTUDIO-1051) - Update developer documentation
+* [DIRSTUDIO-1021](https://issues.apache.org/jira/browse/DIRSTUDIO-1021) - Enable tests
+* [DIRSTUDIO-1023](https://issues.apache.org/jira/browse/DIRSTUDIO-1023) - Generate P2 repository / update site
+* [DIRSTUDIO-1024](https://issues.apache.org/jira/browse/DIRSTUDIO-1024) - Define release process
+* [DIRSTUDIO-1025](https://issues.apache.org/jira/browse/DIRSTUDIO-1025) - Cleanup after Tycho Migration
+
+***
+
+## Apache Directory Studio Version 2.0.0-M8 (July 4th 2013)
+
+**Bug**
+
+* [DIRSTUDIO-788](https://issues.apache.org/jira/browse/DIRSTUDIO-788) - Date and Time editor incorrect time format for eDirectory
+* [DIRSTUDIO-792](https://issues.apache.org/jira/browse/DIRSTUDIO-792) - Batch operation Next button inactive
+* [DIRSTUDIO-868](https://issues.apache.org/jira/browse/DIRSTUDIO-868) - Do not send an unbind request if the authentication fails
+* [DIRSTUDIO-911](https://issues.apache.org/jira/browse/DIRSTUDIO-911) - Object classes not visible within Schema View of OS X
+* [DIRSTUDIO-912](https://issues.apache.org/jira/browse/DIRSTUDIO-912) - No connection pre-selected when DIT, Searches or Bookmarks is selected in the LDAP Brower view and the wizard is accessed via 'File' > 'Import' menu
+* [DIRSTUDIO-917](https://issues.apache.org/jira/browse/DIRSTUDIO-917) - Exporting for ApacheDS an AT with a not-set syntax length results in 'm-length: 0' output in the resulting LDIF file
+* [DIRSTUDIO-918](https://issues.apache.org/jira/browse/DIRSTUDIO-918) - Wrong error message in Import LDIF wizard when no connection is selected
+* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
+* [DIRSTUDIO-921](https://issues.apache.org/jira/browse/DIRSTUDIO-921) - Schema Pane does not refresh when creating a new object class
+* [DIRSTUDIO-927](https://issues.apache.org/jira/browse/DIRSTUDIO-927) - The "options... Advanced Options Configuration" link on the "Overview" age does not work
+* [DIRSTUDIO-930](https://issues.apache.org/jira/browse/DIRSTUDIO-930) - ERR_04269 ads_pwdvalidator does not exist
+* [DIRSTUDIO-931](https://issues.apache.org/jira/browse/DIRSTUDIO-931) - ERR_04269 ATTRIBUTE_TYPE for OID ads-pwdvalidator does not exist!
+**Improvement**
+
+* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
+* [DIRSTUDIO-929](https://issues.apache.org/jira/browse/DIRSTUDIO-929) - Improve Hex Value Editor to allow text edition
+
+**Task**
+
+* [DIRSTUDIO-925](https://issues.apache.org/jira/browse/DIRSTUDIO-925) - Add new mandatory and optional attributes introduced for the 'ads-delegatingAuthenticator' object class
+
+***
+
+## Apache Directory Studio Version 2.0.0-M7 (May 17th 2013)
+
+**Bug**
+
+* [DIRSTUDIO-865](https://issues.apache.org/jira/browse/DIRSTUDIO-865) - NullPointerException thrown when connecting to Domino 8.5.2FP3 LDAP
+* [DIRSTUDIO-888](https://issues.apache.org/jira/browse/DIRSTUDIO-888) - Improve editing of boolean values to allow lowercased values and shortcuts
+* [DIRSTUDIO-891](https://issues.apache.org/jira/browse/DIRSTUDIO-891) - A schema project containing a reference to a deleted connection makes the perspective completely unusable
+* [DIRSTUDIO-892](https://issues.apache.org/jira/browse/DIRSTUDIO-892) - Unable to import ApacheDS core schemas
+* [DIRSTUDIO-893](https://issues.apache.org/jira/browse/DIRSTUDIO-893) - ConcurrentModificationException thrown while deleting multiple schema elements
+* [DIRSTUDIO-899](https://issues.apache.org/jira/browse/DIRSTUDIO-899) - Unable to install Studio using the update site: "Missing requirement: ApacheDS Core 2.0.0.M11"
+* [DIRSTUDIO-902](https://issues.apache.org/jira/browse/DIRSTUDIO-902) - Unusable configuration of the HashingPasswordInterceptor with recent milestone of ApacheDS 2.0
+* [DIRSTUDIO-904](https://issues.apache.org/jira/browse/DIRSTUDIO-904) - Directory Studio create files with french "accents"
+* [DIRSTUDIO-905](https://issues.apache.org/jira/browse/DIRSTUDIO-905) - IOException (Document is closed) thrown when quitting Apache Directory Studio with an LDAP Server running
+* [DIRSTUDIO-907](https://issues.apache.org/jira/browse/DIRSTUDIO-907) - ERR_04269 ATTRIBUTE_TYPE for OID ads-replpingersleep does not exist!
+* [DIRSTUDIO-916](https://issues.apache.org/jira/browse/DIRSTUDIO-916) - Can not open configuration for fresh installed ApacheDS and Studio
+
+**Improvement**
+
+* [DIRSTUDIO-857](https://issues.apache.org/jira/browse/DIRSTUDIO-857) - Add support for PasswordPolicy configuration
+* [DIRSTUDIO-884](https://issues.apache.org/jira/browse/DIRSTUDIO-884) - Add new MessageDigest algorithm for passwords
+* [DIRSTUDIO-895](https://issues.apache.org/jira/browse/DIRSTUDIO-895) - Add a 'Show password' checkbox to the CredentialsDialog used to ask the connection's password when it's not saved
+* [DIRSTUDIO-897](https://issues.apache.org/jira/browse/DIRSTUDIO-897) - Active Directory attribute type 'lockoutTime' should be linked with the 'MS AD Date and Time Editor'
+* [DIRSTUDIO-898](https://issues.apache.org/jira/browse/DIRSTUDIO-898) - Add case-insensitive support for the attribute types aliases in the 'Value Editors' preferences page
+
+**New Feature**
+
+* [DIRSTUDIO-901](https://issues.apache.org/jira/browse/DIRSTUDIO-901) - Add the ability to store connection passwords in a password-protected keystore
+
+***
+
+## Apache Directory Studio 2.0.0-M6 (March 8th 2013)
+
+**Bug**
+
+* [DIRSTUDIO-861](https://issues.apache.org/jira/browse/DIRSTUDIO-861) - Errors with DNs containing non-ASCII values on Active Directory
+* [DIRSTUDIO-873](https://issues.apache.org/jira/browse/DIRSTUDIO-873) - Kerberos encryption types are not saved correctly
+* [DIRSTUDIO-876](https://issues.apache.org/jira/browse/DIRSTUDIO-876) - Integer Editor should focus on the value text field upon opening
+* [DIRSTUDIO-878](https://issues.apache.org/jira/browse/DIRSTUDIO-878) - Generation of the user guides as PDF and standalone HTML is broken
+* [DIRSTUDIO-879](https://issues.apache.org/jira/browse/DIRSTUDIO-879) - Flags for an attribute type in the Schema Browser are not correctly rendered on OS X
+* [DIRSTUDIO-889](https://issues.apache.org/jira/browse/DIRSTUDIO-889) - Error "Changes could not be saved to the connection" when saving server configuration on stock server and studio
+
+**Improvement**
+
+* [DIRSTUDIO-872](https://issues.apache.org/jira/browse/DIRSTUDIO-872) - The list of possible Kerberos encryption type should be available
+
+**Task**
+
+* [DIRSTUDIO-874](https://issues.apache.org/jira/browse/DIRSTUDIO-874) - Remove all ApacheDS and Apache Mina libraries plugins from trunk in '/libraries'
+* [DIRSTUDIO-877](https://issues.apache.org/jira/browse/DIRSTUDIO-877) - Update ApacheDS schema files to the latest version
+* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
+
+***
+
+## Apache Directory Studio 2.0.0-M5 (January 31th 2013)
+
+**Bug**
+
+* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
+
+***
+
+## Apache Directory Studio 2.0.0-M4 (January 25th 2013)
+
+**Bug**
+
+* [DIRSTUDIO-775](https://issues.apache.org/jira/browse/DIRSTUDIO-775) - Display issues in Image Editor
+* [DIRSTUDIO-795](https://issues.apache.org/jira/browse/DIRSTUDIO-795) - Unable to delete multiple schema elements (attribute type, object class or schema)
+* [DIRSTUDIO-796](https://issues.apache.org/jira/browse/DIRSTUDIO-796) - Unable to open multiple schema elements (attribute type, object class or schema)
+* [DIRSTUDIO-799](https://issues.apache.org/jira/browse/DIRSTUDIO-799) - Unable to move object with Apache LDAP API
+* [DIRSTUDIO-802](https://issues.apache.org/jira/browse/DIRSTUDIO-802) - Confusion between ISO-8859-1 and UTF-8 in the Encode/Decode dialog
+* [DIRSTUDIO-808](https://issues.apache.org/jira/browse/DIRSTUDIO-808) - "Update existing entries" checkbox in "LDIF Import" wizard fails to work with the Apache Directory LDAP API
+* [DIRSTUDIO-810](https://issues.apache.org/jira/browse/DIRSTUDIO-810) - Fullscreen plugin is /not/ under the Apache license
+* [DIRSTUDIO-812](https://issues.apache.org/jira/browse/DIRSTUDIO-812) - Error while performing search
+* [DIRSTUDIO-822](https://issues.apache.org/jira/browse/DIRSTUDIO-822) - Typo in one of the default indexed attributes when creating a new partition in the ApacheDS Configuration Editor v2
+* [DIRSTUDIO-823](https://issues.apache.org/jira/browse/DIRSTUDIO-823) - Integer Value Editor only selects values of Java Integer magnitude
+* [DIRSTUDIO-827](https://issues.apache.org/jira/browse/DIRSTUDIO-827) - Quick Search is not displayed when folding is activated
+* [DIRSTUDIO-829](https://issues.apache.org/jira/browse/DIRSTUDIO-829) - NPE when trying to add a 'subtreeSpecification' value
+* [DIRSTUDIO-833](https://issues.apache.org/jira/browse/DIRSTUDIO-833) - NPE in ACI Item Editor when adding AttributeType permission
+* [DIRSTUDIO-834](https://issues.apache.org/jira/browse/DIRSTUDIO-834) - Unable to edit subtreeSpecification
+* [DIRSTUDIO-835](https://issues.apache.org/jira/browse/DIRSTUDIO-835) - Display issues in the Password Editor on OS X
+* [DIRSTUDIO-840](https://issues.apache.org/jira/browse/DIRSTUDIO-840) - Help system is not working
+* [DIRSTUDIO-850](https://issues.apache.org/jira/browse/DIRSTUDIO-850) - The "Remove" button for mandatory ATs in the OC Editor does nothing
+* [DIRSTUDIO-858](https://issues.apache.org/jira/browse/DIRSTUDIO-858) - The Entry Editor's Outline view should be unavailable when the selection isn't an entry or a bookmark
+* [DIRSTUDIO-864](https://issues.apache.org/jira/browse/DIRSTUDIO-864) - Error message appears: "ERR_04269 ATTRIBUTE_TYPE for OID ads-replenabled does not exist!" when trying to open configuration
+
+**Improvement**
+
+* [DIRSTUDIO-657](https://issues.apache.org/jira/browse/DIRSTUDIO-657) - Add options to output the resulting LDIF of a batch operation to a file or to the clipboard
+* [DIRSTUDIO-793](https://issues.apache.org/jira/browse/DIRSTUDIO-793) - Batch Operation define modification slowdown, needs scrollbar
+* [DIRSTUDIO-797](https://issues.apache.org/jira/browse/DIRSTUDIO-797) - Two different 'HistoryUtils' classes should be merged into a single one in 'common.ui' plugin
+* [DIRSTUDIO-809](https://issues.apache.org/jira/browse/DIRSTUDIO-809) - Improve the behavior of the "Execute LDIF" action of the LDIF Editor
+* [DIRSTUDIO-813](https://issues.apache.org/jira/browse/DIRSTUDIO-813) - Add default value editors for eDirectory
+* [DIRSTUDIO-828](https://issues.apache.org/jira/browse/DIRSTUDIO-828) - The Quick Search context menu item could reuse the currently selected entry in the Browser view as search base
+* [DIRSTUDIO-838](https://issues.apache.org/jira/browse/DIRSTUDIO-838) - Add support for configuring the context entry of a partition in the ApacheDS 2.0 Configuration Editor
+* [DIRSTUDIO-841](https://issues.apache.org/jira/browse/DIRSTUDIO-841) - When creating a connection from an existing ApacheDS 2.0 server, the "Open Configuration" item is not available
+* [DIRSTUDIO-851](https://issues.apache.org/jira/browse/DIRSTUDIO-851) - Add a hint in the Connection Properties dialog about Certifcate Validation with a link to the corresponding preference page
+* [DIRSTUDIO-852](https://issues.apache.org/jira/browse/DIRSTUDIO-852) - Display issues in the Certificate Validation preference page on OS X
+
+**New Feature**
+
+* [DIRSTUDIO-804](https://issues.apache.org/jira/browse/DIRSTUDIO-804) - Interpret Active Directory Timestamps
+* [DIRSTUDIO-806](https://issues.apache.org/jira/browse/DIRSTUDIO-806) - Editing Multiple Directory Objects at once
+* [DIRSTUDIO-843](https://issues.apache.org/jira/browse/DIRSTUDIO-843) - There is no place we can configure the KeyStore to use while configuring an ApacheDS server
+
+**Task**
+
+* [DIRSTUDIO-736](https://issues.apache.org/jira/browse/DIRSTUDIO-736) - Implement the "Execute Online" button of the BatchOperationWizard
+* [DIRSTUDIO-791](https://issues.apache.org/jira/browse/DIRSTUDIO-791) - Update supportedControl and supportedExtension descriptions
+* [DIRSTUDIO-811](https://issues.apache.org/jira/browse/DIRSTUDIO-811) - Review and remove any source file under Eclipse Public License (EPL) v 1.0
+* [DIRSTUDIO-816](https://issues.apache.org/jira/browse/DIRSTUDIO-816) - Update OIDs to Descriptions properties file
+* [DIRSTUDIO-839](https://issues.apache.org/jira/browse/DIRSTUDIO-839) - Update Eclipse dependencies to version 3.8.1
+
+***
+
+## Apache Directory Studio 2.0.0-M3 (February 24th 2012)
+
+**Bug**
+
+* [DIRSTUDIO-764](https://issues.apache.org/jira/browse/DIRSTUDIO-764) - Image Editor does not work correctly
+* [DIRSTUDIO-765](https://issues.apache.org/jira/browse/DIRSTUDIO-765) - Can not export DSML
+* [DIRSTUDIO-767](https://issues.apache.org/jira/browse/DIRSTUDIO-767) - All attribute names are lowercase when using Apache Directory LDAP Client API
+* [DIRSTUDIO-768](https://issues.apache.org/jira/browse/DIRSTUDIO-768) - Error while searching using a filter on a binary attribute
+* [DIRSTUDIO-769](https://issues.apache.org/jira/browse/DIRSTUDIO-769) - Alt-S shortkey does not work in Search Dialog
+* [DIRSTUDIO-770](https://issues.apache.org/jira/browse/DIRSTUDIO-770) - Typos in french translation
+* [DIRSTUDIO-771](https://issues.apache.org/jira/browse/DIRSTUDIO-771) - Searches are not saved when closing Studio 2.0 M1/M2
+* [DIRSTUDIO-772](https://issues.apache.org/jira/browse/DIRSTUDIO-772) - Entry UUID Editor can't display eDirectory GUID
+* [DIRSTUDIO-773](https://issues.apache.org/jira/browse/DIRSTUDIO-773) - IllegalArgumentException thrown when copying the RootDSE
+* [DIRSTUDIO-776](https://issues.apache.org/jira/browse/DIRSTUDIO-776) - Misleading title for action "Open 'Search Result'/'Bookmark'/'Entry' in DIT" in LDAP Browser view context menu
+* [DIRSTUDIO-777](https://issues.apache.org/jira/browse/DIRSTUDIO-777) - Renaming entry fails when using Apache Directory LDAP API
+* [DIRSTUDIO-778](https://issues.apache.org/jira/browse/DIRSTUDIO-778) - NullPointerException when refreshing a TableEntryEditor
+* [DIRSTUDIO-779](https://issues.apache.org/jira/browse/DIRSTUDIO-779) - Label for folded attributes in TableEntryEditor is not updated when quick filter is used
+* [DIRSTUDIO-783](https://issues.apache.org/jira/browse/DIRSTUDIO-783) - The 'Rename Entry' dialog doesn't resize automatically when adding or removing RDN parts
+
+**Improvement**
+
+* [DIRSTUDIO-713](https://issues.apache.org/jira/browse/DIRSTUDIO-713) - Improve the 'Show in' sub-menu of the TableEntryEditor
+* [DIRSTUDIO-780](https://issues.apache.org/jira/browse/DIRSTUDIO-780) - Allow Apache Directory Studio to be pinned to Windows 7's taskbar
+* [DIRSTUDIO-782](https://issues.apache.org/jira/browse/DIRSTUDIO-782) - Improve Windows installer with JRE detection and creation of 'Apache Directory Studio.ini' file
+* [DIRSTUDIO-784](https://issues.apache.org/jira/browse/DIRSTUDIO-784) - Add the ability to sort searches in the LDAP Browser view
+* [DIRSTUDIO-785](https://issues.apache.org/jira/browse/DIRSTUDIO-785) - Add the ability to sort bookmarks in the LDAP Browser view
+
+**Question**
+
+* [DIRSTUDIO-821](https://issues.apache.org/jira/browse/DIRSTUDIO-821) - Where to get the public certificate used to sign the JAR of DS 1.5.3?
+
+***
+
+## Apache Directory Studio 2.0.0-M2 (January 27th 2012)
+
+**Bug**
+
+* [DIRSTUDIO-630](https://issues.apache.org/jira/browse/DIRSTUDIO-630) - Importing a Schema project twice shouldn't be possible
+* [DIRSTUDIO-733](https://issues.apache.org/jira/browse/DIRSTUDIO-733) - Error while reading RootDSE on Sun One directory server
+* [DIRSTUDIO-739](https://issues.apache.org/jira/browse/DIRSTUDIO-739) - Using 'Quick Search' in the DN editor while editing some object cancels editing and jumps to 'Quick Search' in the main window
+* [DIRSTUDIO-759](https://issues.apache.org/jira/browse/DIRSTUDIO-759) - Exit confirmation dialog is showed twice when quitting the application by closing the window on Linux and Windows
+* [DIRSTUDIO-760](https://issues.apache.org/jira/browse/DIRSTUDIO-760) - Unable to bind on an Active Directory server using 'domain\userid'
+* [DIRSTUDIO-763](https://issues.apache.org/jira/browse/DIRSTUDIO-763) - Typo in some English error messages ('occured' instead of 'occurred')
+
+***
+
+## Apache Directory Studio 2.0.0-M1 (January 11th 2012)
+
+**Bug**
+
+* [DIRSTUDIO-301](https://issues.apache.org/jira/browse/DIRSTUDIO-301) - Intermittant ClassCastException from dom4j.DocumentFactory.getInstance()
+* [DIRSTUDIO-428](https://issues.apache.org/jira/browse/DIRSTUDIO-428) - Same Name for attribute type and objectclass
+* [DIRSTUDIO-454](https://issues.apache.org/jira/browse/DIRSTUDIO-454) - Colliding attributeType and objectClass names not supported
+* [DIRSTUDIO-564](https://issues.apache.org/jira/browse/DIRSTUDIO-564) - Update ApacheDS core schema files to the latest version
+* [DIRSTUDIO-651](https://issues.apache.org/jira/browse/DIRSTUDIO-651) - Typo in french translation
+* [DIRSTUDIO-653](https://issues.apache.org/jira/browse/DIRSTUDIO-653) - The 'Choose' text for buttons on the AT and OC selection dialog has not been extracted for localization
+* [DIRSTUDIO-658](https://issues.apache.org/jira/browse/DIRSTUDIO-658) - Exiting Directory Studio consumes CPU for couple of minutes
+* [DIRSTUDIO-659](https://issues.apache.org/jira/browse/DIRSTUDIO-659) - Studio prompts for password even when "No Authentication" is selected
+* [DIRSTUDIO-663](https://issues.apache.org/jira/browse/DIRSTUDIO-663) - can't import openldap schema having an attribute and an objectclass with the same alias
+* [DIRSTUDIO-673](https://issues.apache.org/jira/browse/DIRSTUDIO-673) - Typo in the "check authentication" error message in the french translation
+* [DIRSTUDIO-696](https://issues.apache.org/jira/browse/DIRSTUDIO-696) - ApacheDS Configuration plugin fails to open configuration file version 1.5.5 and 1.5.4 when NTP is enabled
+* [DIRSTUDIO-698](https://issues.apache.org/jira/browse/DIRSTUDIO-698) - KeyDerivation interceptor missing in the ApacheDS Configuration Editor
+* [DIRSTUDIO-699](https://issues.apache.org/jira/browse/DIRSTUDIO-699) - Interceptors order is not read/saved correctly in the ApacheDS Configuration Editor
+* [DIRSTUDIO-703](https://issues.apache.org/jira/browse/DIRSTUDIO-703) - DSML Export fails to export when the size limit is hit
+* [DIRSTUDIO-704](https://issues.apache.org/jira/browse/DIRSTUDIO-704) - NullPointerException creating new online schema editor project
+* [DIRSTUDIO-708](https://issues.apache.org/jira/browse/DIRSTUDIO-708) - NPE when renaming a referral in 'Automatic' or 'Manual' Referral Handling mode
+* [DIRSTUDIO-710](https://issues.apache.org/jira/browse/DIRSTUDIO-710) - SearchResultEntryDsml not setting attribute name correctly
+* [DIRSTUDIO-716](https://issues.apache.org/jira/browse/DIRSTUDIO-716) - Error while opening connection : NPE
+* [DIRSTUDIO-724](https://issues.apache.org/jira/browse/DIRSTUDIO-724) - Too many events: Outline and Modifications Logs views are refreshed multiple times
+* [DIRSTUDIO-726](https://issues.apache.org/jira/browse/DIRSTUDIO-726) - Added a binary attributes in preference is not stored correctly
+* [DIRSTUDIO-727](https://issues.apache.org/jira/browse/DIRSTUDIO-727) - It is possible to add empty Binary Attributes and Binary Syntax Definitions in the preferences
+* [DIRSTUDIO-728](https://issues.apache.org/jira/browse/DIRSTUDIO-728) - Wrong attribute name in entry editor
+* [DIRSTUDIO-731](https://issues.apache.org/jira/browse/DIRSTUDIO-731) - Editing RDN attribute should open rename dialog
+* [DIRSTUDIO-734](https://issues.apache.org/jira/browse/DIRSTUDIO-734) - Schema error: Alias NAME is already used by another item: object class with OID
+* [DIRSTUDIO-740](https://issues.apache.org/jira/browse/DIRSTUDIO-740) - Potential bug when using String.toLowerCase() method with a Turkish locale
+* [DIRSTUDIO-742](https://issues.apache.org/jira/browse/DIRSTUDIO-742) - Directory Studio will not start if its installation directory is not writeable
+* [DIRSTUDIO-748](https://issues.apache.org/jira/browse/DIRSTUDIO-748) - Entry attribute name not displayed correctly in Table Entry Editor.
+* [DIRSTUDIO-749](https://issues.apache.org/jira/browse/DIRSTUDIO-749) - Syntaxes shouldn't have/use 'names' (or 'aliases') but 'description' instead
+* [DIRSTUDIO-754](https://issues.apache.org/jira/browse/DIRSTUDIO-754) - Some values in the 'Text Formats' preference page are not saved between launches
+
+**Improvement**
+
+* [DIRSTUDIO-413](https://issues.apache.org/jira/browse/DIRSTUDIO-413) - Add possibility to make connections read-only
+* [DIRSTUDIO-432](https://issues.apache.org/jira/browse/DIRSTUDIO-432) - Better error message for invalid LDIF records on import
+* [DIRSTUDIO-445](https://issues.apache.org/jira/browse/DIRSTUDIO-445) - Allow the user to rename a schema in the editor
+* [DIRSTUDIO-446](https://issues.apache.org/jira/browse/DIRSTUDIO-446) - Allow the user to rename any item using the F2 shortcut
+* [DIRSTUDIO-447](https://issues.apache.org/jira/browse/DIRSTUDIO-447) - Add the ability to use wildcards (?, *) in the ATs or OCs selection dialog to ease the search
+* [DIRSTUDIO-649](https://issues.apache.org/jira/browse/DIRSTUDIO-649) - The 'Installed JREs' preference page should mention Apache DS plugin and not Java projects
+* [DIRSTUDIO-655](https://issues.apache.org/jira/browse/DIRSTUDIO-655) - Switch usage of SWT MessageBox to JFace MessageDialog for info, warning and error dialogs
+* [DIRSTUDIO-685](https://issues.apache.org/jira/browse/DIRSTUDIO-685) - Move duplicated 'ViewFormWidget' class to the 'common.ui' plugin
+* [DIRSTUDIO-717](https://issues.apache.org/jira/browse/DIRSTUDIO-717) - Add application for Windows 64 Bit
+* [DIRSTUDIO-722](https://issues.apache.org/jira/browse/DIRSTUDIO-722) - LDIF parser should allow attribute names with underscore ("_")
+* [DIRSTUDIO-746](https://issues.apache.org/jira/browse/DIRSTUDIO-746) - Add support for the Full Screen feature of OS X Lion
+* [DIRSTUDIO-752](https://issues.apache.org/jira/browse/DIRSTUDIO-752) - Improve fault tolerance when reading an online schema from a connection
+
+**New Feature**
+* [DIRSTUDIO-112](https://issues.apache.org/jira/browse/DIRSTUDIO-112) - Export schema
+* [DIRSTUDIO-320](https://issues.apache.org/jira/browse/DIRSTUDIO-320) - Studio exits without showing a confirmation dialog
+* [DIRSTUDIO-692](https://issues.apache.org/jira/browse/DIRSTUDIO-692) - User should be able to supress the version line in exported LDIF files
+* [DIRSTUDIO-694](https://issues.apache.org/jira/browse/DIRSTUDIO-694) - Add ability to export certificates in the 'Certificate Validation' preference page
+* [DIRSTUDIO-712](https://issues.apache.org/jira/browse/DIRSTUDIO-712) - Add a 'Go to DN...' action to the Navigate menu in Eclipse
+* [DIRSTUDIO-755](https://issues.apache.org/jira/browse/DIRSTUDIO-755) - Implement the 'Add...' button in the 'Certificate Validation' preference page
+
+**Task**
+
+* [DIRSTUDIO-683](https://issues.apache.org/jira/browse/DIRSTUDIO-683) - Add a generic way to run Eclipse Jobs and Studio runnables in the 'common.core' plugin and extend this in other plugins
+* [DIRSTUDIO-684](https://issues.apache.org/jira/browse/DIRSTUDIO-684) - Convert remaining Eclipse Jobs in LDAP Browser to Studio runnable API
+* [DIRSTUDIO-688](https://issues.apache.org/jira/browse/DIRSTUDIO-688) - Remove the 'jars' plugins and create one specific plugin per external library dependency
+* [DIRSTUDIO-697](https://issues.apache.org/jira/browse/DIRSTUDIO-697) - Add support for ApacheDS 1.5.7 'server.xml' configuration file
+* [DIRSTUDIO-718](https://issues.apache.org/jira/browse/DIRSTUDIO-718) - Update Eclipse dependencies to version 3.6.1
+* [DIRSTUDIO-737](https://issues.apache.org/jira/browse/DIRSTUDIO-737) - Update Eclipse dependencies to version 3.7.0
+* [DIRSTUDIO-751](https://issues.apache.org/jira/browse/DIRSTUDIO-751) - Update Eclipse dependencies to version 3.7.1
+* [DIRSTUDIO-757](https://issues.apache.org/jira/browse/DIRSTUDIO-757) - Update all features with the new 'library' plugins
+
+***
+
+## Apache Directory Studio 1.5.3 (March 30th 2010)
+
+**Bug**
+
+* [DIRSTUDIO-424](https://issues.apache.org/jira/browse/DIRSTUDIO-424) - Canceling a search gives an error sometimes
+* [DIRSTUDIO-585](https://issues.apache.org/jira/browse/DIRSTUDIO-585) - Do not modify the current thread's ClassLoader; or reset it afterwards
+* [DIRSTUDIO-608](https://issues.apache.org/jira/browse/DIRSTUDIO-608) - Non-translated string in the French version of the "Export Connections" wizard
+* [DIRSTUDIO-609](https://issues.apache.org/jira/browse/DIRSTUDIO-609) - Studio "hangs" when performing large search that is to be displayed
+* [DIRSTUDIO-610](https://issues.apache.org/jira/browse/DIRSTUDIO-610) - Unable to export to "My Documents"
+* [DIRSTUDIO-611](https://issues.apache.org/jira/browse/DIRSTUDIO-611) - Unable to add a third party Entry Editor
+* [DIRSTUDIO-613](https://issues.apache.org/jira/browse/DIRSTUDIO-613) - Certificate with empty common name (cn) appears almost hidden in the preference page table view
+* [DIRSTUDIO-614](https://issues.apache.org/jira/browse/DIRSTUDIO-614) - The 'Installed JREs' preference page is no longer displayed in Apache Directory Studio's preferences
+* [DIRSTUDIO-615](https://issues.apache.org/jira/browse/DIRSTUDIO-615) - Various typos in the french translation
+* [DIRSTUDIO-616](https://issues.apache.org/jira/browse/DIRSTUDIO-616) - Entry Editor Manager does not ensure that the entry's attributes are initialized (loaded) before testing and opening editors
+* [DIRSTUDIO-617](https://issues.apache.org/jira/browse/DIRSTUDIO-617) - Tabular and LDIF Entry Single-Tab Editors should warn the user when modifications are pending (auto-save disabled) and their input is changed
+* [DIRSTUDIO-623](https://issues.apache.org/jira/browse/DIRSTUDIO-623) - NPE in the ModificationLogsViewUniversalListener under rare circumstances when selecting a connection
+* [DIRSTUDIO-624](https://issues.apache.org/jira/browse/DIRSTUDIO-624) - NPE in the SearchLogsViewUniversalListener.java under rare circumstances when selecting a connection
+* [DIRSTUDIO-627](https://issues.apache.org/jira/browse/DIRSTUDIO-627) - Can't open a relatively big LDIF file
+* [DIRSTUDIO-629](https://issues.apache.org/jira/browse/DIRSTUDIO-629) - Entry editor tab is activated when executing a search
+* [DIRSTUDIO-629](https://issues.apache.org/jira/browse/DIRSTUDIO-629) - Endless event loop
+* [DIRSTUDIO-637](https://issues.apache.org/jira/browse/DIRSTUDIO-637) - copy/paste of attributes no longer works
+* [DIRSTUDIO-639](https://issues.apache.org/jira/browse/DIRSTUDIO-639) - Exception when navigation history contains bookmarks of an deleted connection
+* [DIRSTUDIO-642](https://issues.apache.org/jira/browse/DIRSTUDIO-642) - ADS does not remember the certificate if two certificates are used for the same server
+* [DIRSTUDIO-643](https://issues.apache.org/jira/browse/DIRSTUDIO-643) - Missing modules when importing into Eclipse as existing project
+
+**Improvement**
+
+* [DIRSTUDIO-612](https://issues.apache.org/jira/browse/DIRSTUDIO-612) - The 'Properties' item in the context menu of the default Entry Editor should be enabled and linked to the entry properties when no particular attribute is selected in the table
+* [DIRSTUDIO-618](https://issues.apache.org/jira/browse/DIRSTUDIO-618) - The icon of the entry in the 'Outline' view for the LDIF Entry Editor should be the same as the one in the 'LDAP Browser' view
+* [DIRSTUDIO-619](https://issues.apache.org/jira/browse/DIRSTUDIO-619) - Outline view for the LDIF Entry Editor should display by default the nodes underneath the entry
+* [DIRSTUDIO-625](https://issues.apache.org/jira/browse/DIRSTUDIO-625) - Add Connection Context in the LDAP Browser Window
+* [DIRSTUDIO-633](https://issues.apache.org/jira/browse/DIRSTUDIO-633) - Delete all searches context menu
+* [DIRSTUDIO-634](https://issues.apache.org/jira/browse/DIRSTUDIO-634) - Add search context menu entry / simplify search
+* [DIRSTUDIO-638](https://issues.apache.org/jira/browse/DIRSTUDIO-638) - Improve the way we ask for operational attributes
+
+**Task**
+
+* [DIRSTUDIO-635](https://issues.apache.org/jira/browse/DIRSTUDIO-635) - Update Eclipse dependencies to version 3.5.2
+* [DIRSTUDIO-636](https://issues.apache.org/jira/browse/DIRSTUDIO-636) - Update copyright in spash screen to 2010
+* [DIRSTUDIO-640](https://issues.apache.org/jira/browse/DIRSTUDIO-640) - Support for server.xml file of Apache DS version 1.5.6
+* [DIRSTUDIO-641](https://issues.apache.org/jira/browse/DIRSTUDIO-641) - Integrate Apache DS version 1.5.6 in the Apache DS plugin
+
+***
+
+## Apache Directory Studio 1.5.2 (December 14th 2009)
+
+**Bug**
+
+* [DIRSTUDIO-601](https://issues.apache.org/jira/browse/DIRSTUDIO-601) - The 'Perform Search/Search Again' button in the Search Result Editor does not work correctly
+* [DIRSTUDIO-602](https://issues.apache.org/jira/browse/DIRSTUDIO-602) - Unable to start an Apache DS version 1.5.5 server
+* [DIRSTUDIO-603](https://issues.apache.org/jira/browse/DIRSTUDIO-603) - Error browsing/entering rfc2307 compliant host entry
+
+**Task**
+
+* [DIRSTUDIO-605](https://issues.apache.org/jira/browse/DIRSTUDIO-605) - Update the help content of the configuration editor for version 1.5.5 of Apache DS
+
+***
+
+## Apache Directory Studio 1.5.1 (December 2nd 2009)
+
+**Bug**
+
+* [DIRSTUDIO-576](https://issues.apache.org/jira/browse/DIRSTUDIO-576) - Context menu not shown after a right-click on a non-cached entry
+* [DIRSTUDIO-577](https://issues.apache.org/jira/browse/DIRSTUDIO-577) - LDIF editor doesn't notify Eclipse that the LDIF file has changed when saving
+* [DIRSTUDIO-580](https://issues.apache.org/jira/browse/DIRSTUDIO-580) - Setting "Validate certificates for secure LDAP connections" is not saved
+* [DIRSTUDIO-587](https://issues.apache.org/jira/browse/DIRSTUDIO-587) - UI flickers on quick search
+* [DIRSTUDIO-589](https://issues.apache.org/jira/browse/DIRSTUDIO-589) - InvalidNameException: unexpected token for user ids starting with hash sign
+* [DIRSTUDIO-590](https://issues.apache.org/jira/browse/DIRSTUDIO-590) - The 'Quick Search' string has not been externalized in the LDAP Browser view
+* [DIRSTUDIO-591](https://issues.apache.org/jira/browse/DIRSTUDIO-591) - Error reading objects with # in DN
+* [DIRSTUDIO-592](https://issues.apache.org/jira/browse/DIRSTUDIO-592) - LDAP Browser view is refreshed twice after the initialization of the children of an entry
+* [DIRSTUDIO-593](https://issues.apache.org/jira/browse/DIRSTUDIO-593) - Missing string and typo in the french translation of the Password Editor
+* [DIRSTUDIO-594](https://issues.apache.org/jira/browse/DIRSTUDIO-594) - The 'Show new password details' checkbox does not display the 'Enter new password' text field as clear text when checked in the Password Editor
+* [DIRSTUDIO-596](https://issues.apache.org/jira/browse/DIRSTUDIO-596) - Various typos in the french translation
+* [DIRSTUDIO-597](https://issues.apache.org/jira/browse/DIRSTUDIO-597) - Modification sent to the server while browsing through the DIT and refreshing entries
+* [DIRSTUDIO-598](https://issues.apache.org/jira/browse/DIRSTUDIO-598) - Base64 encoded DN marked as invalid in LDIF editor
+
+**Improvement**
+
+* [DIRSTUDIO-595](https://issues.apache.org/jira/browse/DIRSTUDIO-595) - The icon of the entry in the 'Outline' view should be the same as the one in the 'LDAP Browser' view
+
+***
+
+## Apache Directory Studio 1.5.0 (November 8th 2009)
+
+**Bug**
+
+* [DIRSTUDIO-282](https://issues.apache.org/jira/browse/DIRSTUDIO-282) - Save failed: null, when adding an attribute to a class, if attribute is also open in gui
+* [DIRSTUDIO-331](https://issues.apache.org/jira/browse/DIRSTUDIO-331) - Instant error when importing schema in a new schema-project
+* [DIRSTUDIO-334](https://issues.apache.org/jira/browse/DIRSTUDIO-334) - Built-in help doesn't show icons for "Icons" and "Toolbars" tables in "LDAP Browser View"
+* [DIRSTUDIO-370](https://issues.apache.org/jira/browse/DIRSTUDIO-370) - Welcome screen subpages mouse-over images displays red crosses
+* [DIRSTUDIO-402](https://issues.apache.org/jira/browse/DIRSTUDIO-402) - The ManageDsaIT control should be activable for a single request, not at the connection level
+* [DIRSTUDIO-403](https://issues.apache.org/jira/browse/DIRSTUDIO-403) - Cannot add refs when the ExtensibleObject OC has been added to a referral
+* [DIRSTUDIO-409](https://issues.apache.org/jira/browse/DIRSTUDIO-409) - No error message in some special case
+* [DIRSTUDIO-410](https://issues.apache.org/jira/browse/DIRSTUDIO-410) - Referral handling is problematic
+* [DIRSTUDIO-418](https://issues.apache.org/jira/browse/DIRSTUDIO-418) - Slow LDIF/CSV export
+* [DIRSTUDIO-429](https://issues.apache.org/jira/browse/DIRSTUDIO-429) - Meaningless error message on importing schema
+* [DIRSTUDIO-437](https://issues.apache.org/jira/browse/DIRSTUDIO-437) - Alias are not exposed as such in the browser
+* [DIRSTUDIO-441](https://issues.apache.org/jira/browse/DIRSTUDIO-441) - New ObjectClass and AttributeType wizards always show a warning indicating that the item does not have any name
+* [DIRSTUDIO-443](https://issues.apache.org/jira/browse/DIRSTUDIO-443) - The warning and error overlay for OCs and ATs sometimes (often) lacks forgets some items
+* [DIRSTUDIO-473](https://issues.apache.org/jira/browse/DIRSTUDIO-473) - Import OpenLDAP core schema
+* [DIRSTUDIO-481](https://issues.apache.org/jira/browse/DIRSTUDIO-481) - Improve refreshing of attributes and children
+* [DIRSTUDIO-483](https://issues.apache.org/jira/browse/DIRSTUDIO-483) - DN Editor escapes all non-ascii characters
+* [DIRSTUDIO-484](https://issues.apache.org/jira/browse/DIRSTUDIO-484) - Rename dialog does not work with escaped RDNs
+* [DIRSTUDIO-486](https://issues.apache.org/jira/browse/DIRSTUDIO-486) - Include Version Specifier in LDIF export
+* [DIRSTUDIO-488](https://issues.apache.org/jira/browse/DIRSTUDIO-488) - New context entry creation is not shown just after connection
+* [DIRSTUDIO-489](https://issues.apache.org/jira/browse/DIRSTUDIO-489) - LDIF Import very slow
+* [DIRSTUDIO-490](https://issues.apache.org/jira/browse/DIRSTUDIO-490) - Copy/Paste a search from one connection to another doesn't work
+* [DIRSTUDIO-493](https://issues.apache.org/jira/browse/DIRSTUDIO-493) - Aliased attributes show only one attribute name in the RDN selection list instead of the full aliases list
+* [DIRSTUDIO-495](https://issues.apache.org/jira/browse/DIRSTUDIO-495) - Cannot edit password field
+* [DIRSTUDIO-497](https://issues.apache.org/jira/browse/DIRSTUDIO-497) - LdapSchema plugin 'Save' is erratic
+* [DIRSTUDIO-499](https://issues.apache.org/jira/browse/DIRSTUDIO-499) - SOCKS proxy settings not used on startup
+* [DIRSTUDIO-502](https://issues.apache.org/jira/browse/DIRSTUDIO-502) - Copy/Paste the context entry from one connection to another doesn't work
+* [DIRSTUDIO-503](https://issues.apache.org/jira/browse/DIRSTUDIO-503) - New Entry -> Available object classes list remains stale after new objectclasses added
+* [DIRSTUDIO-504](https://issues.apache.org/jira/browse/DIRSTUDIO-504) - Timestamp attribute with an invalid time in it is read only - editor ignores entry
+* [DIRSTUDIO-506](https://issues.apache.org/jira/browse/DIRSTUDIO-506) - Export Schemas for ApacheDS: object classes must be sorted by hierarchy
+* [DIRSTUDIO-507](https://issues.apache.org/jira/browse/DIRSTUDIO-507) - Attempt to rename the rdn results in message contain \{0\} and \{1\}
+* [DIRSTUDIO-512](https://issues.apache.org/jira/browse/DIRSTUDIO-512) - Deletion of entries very slow
+* [DIRSTUDIO-514](https://issues.apache.org/jira/browse/DIRSTUDIO-514) - Unable to restore last opened ldif-editors on restart
+* [DIRSTUDIO-520](https://issues.apache.org/jira/browse/DIRSTUDIO-520) - NPE when saving a 1.5.0 server configuration
+* [DIRSTUDIO-524](https://issues.apache.org/jira/browse/DIRSTUDIO-524) - Operational attributes are not show, although enabled under preferences
+* [DIRSTUDIO-527](https://issues.apache.org/jira/browse/DIRSTUDIO-527) - Unable to display Active Directory GUIDs
+* [DIRSTUDIO-529](https://issues.apache.org/jira/browse/DIRSTUDIO-529) - Unpretty 2-3 pixels height margin at the top of the Browser view
+* [DIRSTUDIO-530](https://issues.apache.org/jira/browse/DIRSTUDIO-530) - Unpretty 2-3 pixels height margin at the top of the Entry editor
+* [DIRSTUDIO-531](https://issues.apache.org/jira/browse/DIRSTUDIO-531) - Unpretty 2-3 pixels height margin at the top of the Search Results editor
+* [DIRSTUDIO-532](https://issues.apache.org/jira/browse/DIRSTUDIO-532) - Refreshing parent of referral may give ConcurrentModificationException
+* [DIRSTUDIO-537](https://issues.apache.org/jira/browse/DIRSTUDIO-537) - Error in the title of the Properties window of a server in the Apache DS plugin
+* [DIRSTUDIO-545](https://issues.apache.org/jira/browse/DIRSTUDIO-545) - Widget disposed too early
+* [DIRSTUDIO-547](https://issues.apache.org/jira/browse/DIRSTUDIO-547) - Editor for Classes userClass saves or reloads incorrect value
+* [DIRSTUDIO-549](https://issues.apache.org/jira/browse/DIRSTUDIO-549) - subtree userClass editor does not keep full DN for base component upon its selection
+* [DIRSTUDIO-550](https://issues.apache.org/jira/browse/DIRSTUDIO-550) - Root DSE properties: Directory types IBM Tivoli Directory Server 6.1 and 6.2 not detected correctly
+* [DIRSTUDIO-552](https://issues.apache.org/jira/browse/DIRSTUDIO-552) - NullPointerException if Root DSE of IBM Tivoli Directory Server displayed in Entry Editor
+* [DIRSTUDIO-553](https://issues.apache.org/jira/browse/DIRSTUDIO-553) - Add descriptions for server specific OIDs of IBM Tivoli Directory Server 6.1 and 6.2
+* [DIRSTUDIO-557](https://issues.apache.org/jira/browse/DIRSTUDIO-557) - Edit value and edit entry are not working if DN is invalid
+* [DIRSTUDIO-565](https://issues.apache.org/jira/browse/DIRSTUDIO-565) - Inconsistent handling of the 'modified schemas' flag
+* [DIRSTUDIO-568](https://issues.apache.org/jira/browse/DIRSTUDIO-568) - When editing an AT or OC, using the scroll wheel may trigger a combo change
+* [DIRSTUDIO-569](https://issues.apache.org/jira/browse/DIRSTUDIO-569) - Exceptions showing up in the log when starting a server in the Apache DS plugin
+* [DIRSTUDIO-570](https://issues.apache.org/jira/browse/DIRSTUDIO-570) - Integer Value Editor does not accept negative numbers
+* [DIRSTUDIO-571](https://issues.apache.org/jira/browse/DIRSTUDIO-571) - Modification is logged even if referred to another directory server
+* [DIRSTUDIO-575](https://issues.apache.org/jira/browse/DIRSTUDIO-575) - Bookmarks not working
+
+**Improvement**
+
+* [DIRSTUDIO-145](https://issues.apache.org/jira/browse/DIRSTUDIO-145) - Multiple tabs for entry editor
+* [DIRSTUDIO-263](https://issues.apache.org/jira/browse/DIRSTUDIO-263) - Add certificate validation for ldaps and StartTLS
+* [DIRSTUDIO-371](https://issues.apache.org/jira/browse/DIRSTUDIO-371) - Entries with a ref attribute should be shown N times in the browser (N = number of ref values)
+* [DIRSTUDIO-444](https://issues.apache.org/jira/browse/DIRSTUDIO-444) - Allow the user to enter the names of an item inline (using ',' as separator) in the OC and AT Editors
+* [DIRSTUDIO-485](https://issues.apache.org/jira/browse/DIRSTUDIO-485) - Provide default IAuthHandler and IReferralHandler to be used in connections core without connections ui
+* [DIRSTUDIO-487](https://issues.apache.org/jira/browse/DIRSTUDIO-487) - Empty namingcontexts causes javax.naming.InvalidNameException: Bad DN
+* [DIRSTUDIO-496](https://issues.apache.org/jira/browse/DIRSTUDIO-496) - Password editor improvements
+* [DIRSTUDIO-509](https://issues.apache.org/jira/browse/DIRSTUDIO-509) - Load schema from the directory server
+* [DIRSTUDIO-513](https://issues.apache.org/jira/browse/DIRSTUDIO-513) - Do delete before add when modifying attribute values
+* [DIRSTUDIO-521](https://issues.apache.org/jira/browse/DIRSTUDIO-521) - Replace the XSLT transformation by the use of the Dom4J OutputFormat class for XML pretty print
+* [DIRSTUDIO-533](https://issues.apache.org/jira/browse/DIRSTUDIO-533) - Only show referral handling dialog when opening or expanding referral entry
+* [DIRSTUDIO-534](https://issues.apache.org/jira/browse/DIRSTUDIO-534) - Re-order the preference pages for better understanding
+* [DIRSTUDIO-535](https://issues.apache.org/jira/browse/DIRSTUDIO-535) - Use SWT.SEARCH and SWT.CANCEL style bits on search text field for a native search field on Mac OS X
+* [DIRSTUDIO-541](https://issues.apache.org/jira/browse/DIRSTUDIO-541) - Add support for version 1.5.5 of the Apache DS
+* [DIRSTUDIO-548](https://issues.apache.org/jira/browse/DIRSTUDIO-548) - SubtreeSpecification Editor does not accept empty filter if it's selected
+* [DIRSTUDIO-554](https://issues.apache.org/jira/browse/DIRSTUDIO-554) - Add option to save tabular entry editor automatically or manually
+* [DIRSTUDIO-555](https://issues.apache.org/jira/browse/DIRSTUDIO-555) - Human readable descriptions of OIDs in binary attributes preference page
+* [DIRSTUDIO-558](https://issues.apache.org/jira/browse/DIRSTUDIO-558) - Load special entries (aliases, referrals, subentries) per request, add menu items to browser's context menu
+* [DIRSTUDIO-574](https://issues.apache.org/jira/browse/DIRSTUDIO-574) - Add 'Cancel' button to "Select copy strategy" (was Abort of copy/paste not possible)
+
+**New Feature**
+
+* [DIRSTUDIO-62](https://issues.apache.org/jira/browse/DIRSTUDIO-62) - Add GSSAPI authentication - Cannot connect to Active Directory if not using Simple authentication
+* [DIRSTUDIO-434](https://issues.apache.org/jira/browse/DIRSTUDIO-434) - Add value editor for Active Directory objectGUID and objectSid attributes
+* [DIRSTUDIO-462](https://issues.apache.org/jira/browse/DIRSTUDIO-462) - Add Export to Open Document Format
+* [DIRSTUDIO-494](https://issues.apache.org/jira/browse/DIRSTUDIO-494) - Add value editor for certificates (syntax 1.3.6.1.4.1.1466.115.121.1.8)
+* [DIRSTUDIO-510](https://issues.apache.org/jira/browse/DIRSTUDIO-510) - Add functionality to copy/merge schema elements between schema projects
+* [DIRSTUDIO-515](https://issues.apache.org/jira/browse/DIRSTUDIO-515) - Add extensibility to Entry Editor
+* [DIRSTUDIO-536](https://issues.apache.org/jira/browse/DIRSTUDIO-536) - Add support for version 1.5.5 of the Apache DS server.xml configuration file
+* [DIRSTUDIO-556](https://issues.apache.org/jira/browse/DIRSTUDIO-556) - Add value editor for UUID
+* [DIRSTUDIO-562](https://issues.apache.org/jira/browse/DIRSTUDIO-562) - Add 'Copy Display Value' action, default copy action should copy displayed value
+
+**Task**
+
+* [DIRSTUDIO-479](https://issues.apache.org/jira/browse/DIRSTUDIO-479) - Object classes of an entry should always be present
+* [DIRSTUDIO-523](https://issues.apache.org/jira/browse/DIRSTUDIO-523) - Update Eclipse dependencies to version 3.5 Galileo
+* [DIRSTUDIO-525](https://issues.apache.org/jira/browse/DIRSTUDIO-525) - Remove support for the Linux PPC distribution
+* [DIRSTUDIO-573](https://issues.apache.org/jira/browse/DIRSTUDIO-573) - Update bundled Apache DS Schema files to version 1.5.5
+
+**Sub-task**
+
+* [DIRSTUDIO-516](https://issues.apache.org/jira/browse/DIRSTUDIO-516) - Create a new Entry Editor extension point
+* [DIRSTUDIO-517](https://issues.apache.org/jira/browse/DIRSTUDIO-517) - Create a new single-window Entry Editor
+* [DIRSTUDIO-518](https://issues.apache.org/jira/browse/DIRSTUDIO-518) - Create a new multi-window Entry Editor
+* [DIRSTUDIO-519](https://issues.apache.org/jira/browse/DIRSTUDIO-519) - Create a new LDIF Entry Editor
+
+**Wish**
+
+* [DIRSTUDIO-167](https://issues.apache.org/jira/browse/DIRSTUDIO-167) - Show custom icons for various kinds of schema elements while browsing schema data
+
+***
+
+## Apache Directory Studio 1.4.0 (April 10th 2009)
+
+**Bug**
+
+* [DIRSTUDIO-373](https://issues.apache.org/jira/browse/DIRSTUDIO-373) - Can't delete a tagged attribute if the non tagged attribute belong to the DN
+* [DIRSTUDIO-395](https://issues.apache.org/jira/browse/DIRSTUDIO-395) - Problems with special chars (german Umlauts)
+* [DIRSTUDIO-396](https://issues.apache.org/jira/browse/DIRSTUDIO-396) - Custom LDAP attributes not shown in entry editor
+* [DIRSTUDIO-419](https://issues.apache.org/jira/browse/DIRSTUDIO-419) - Problems switching between connections
+* [DIRSTUDIO-420](https://issues.apache.org/jira/browse/DIRSTUDIO-420) - Unable to locate in DIT (f3)
+* [DIRSTUDIO-423](https://issues.apache.org/jira/browse/DIRSTUDIO-423) - Outline view does not respect the settings of the Entry Editor on displaying or not the operational attributes
+* [DIRSTUDIO-427](https://issues.apache.org/jira/browse/DIRSTUDIO-427) - Operational attributes turned on by itself
+* [DIRSTUDIO-430](https://issues.apache.org/jira/browse/DIRSTUDIO-430) - NullPointer exception when fetching children of a node
+* [DIRSTUDIO-436](https://issues.apache.org/jira/browse/DIRSTUDIO-436) - Eclipse Hangs on Startup
+* [DIRSTUDIO-440](https://issues.apache.org/jira/browse/DIRSTUDIO-440) - Multiple user permissions precedence issue
+* [DIRSTUDIO-442](https://issues.apache.org/jira/browse/DIRSTUDIO-442) - Typo in a warning of the New ObjectClass wizard ('attribute type' instead of 'object class')
+* [DIRSTUDIO-456](https://issues.apache.org/jira/browse/DIRSTUDIO-456) - Cannot create an entry with mandatory binary attribute
+* [DIRSTUDIO-457](https://issues.apache.org/jira/browse/DIRSTUDIO-457) - Unknown schema causes attributes to be treated as operational
+* [DIRSTUDIO-460](https://issues.apache.org/jira/browse/DIRSTUDIO-460) - Pressing 'Enter' in New Entry wizard should edit the attribute
+* [DIRSTUDIO-463](https://issues.apache.org/jira/browse/DIRSTUDIO-463) - Browsing the directory produce too many search requests
+* [DIRSTUDIO-465](https://issues.apache.org/jira/browse/DIRSTUDIO-465) - Context entry created from an LDIF import is not shown in the Browser view
+* [DIRSTUDIO-466](https://issues.apache.org/jira/browse/DIRSTUDIO-466) - Incorrect error message when importing a bad XML schema file
+* [DIRSTUDIO-468](https://issues.apache.org/jira/browse/DIRSTUDIO-468) - The LDIF parser does not correctly parse changes
+* [DIRSTUDIO-469](https://issues.apache.org/jira/browse/DIRSTUDIO-469) - Added wrong AttributeTypes can't be deleted
+* [DIRSTUDIO-470](https://issues.apache.org/jira/browse/DIRSTUDIO-470) - Schema Browser view is not bring to front when using the 'Open Schema Browser' menu item while the view is already opened but not the frontmost view
+* [DIRSTUDIO-472](https://issues.apache.org/jira/browse/DIRSTUDIO-472) - SWTException (Widget is disposed) when disabling DIT Quick Search
+
+**Improvement**
+
+* [DIRSTUDIO-115](https://issues.apache.org/jira/browse/DIRSTUDIO-115) - Unable to edit operational attribute values
+* [DIRSTUDIO-150](https://issues.apache.org/jira/browse/DIRSTUDIO-150) - Improve error handling
+* [DIRSTUDIO-207](https://issues.apache.org/jira/browse/DIRSTUDIO-207) - Operationnal attributes cannot be shown entirely
+* [DIRSTUDIO-234](https://issues.apache.org/jira/browse/DIRSTUDIO-234) - Greyed out menu items should have a tool tip explaining *why* they're greyed out
+* [DIRSTUDIO-241](https://issues.apache.org/jira/browse/DIRSTUDIO-241) - The "New Value" action (in the Entry Editor) should be disabled if the AT is defined as single valued
+* [DIRSTUDIO-411](https://issues.apache.org/jira/browse/DIRSTUDIO-411) - Select a new created folder in the connection view
+* [DIRSTUDIO-412](https://issues.apache.org/jira/browse/DIRSTUDIO-412) - Add expand all and collapse all actions to the connections view
+* [DIRSTUDIO-426](https://issues.apache.org/jira/browse/DIRSTUDIO-426) - Overwritten hashCode() method should not use super.hashCode()
+* [DIRSTUDIO-455](https://issues.apache.org/jira/browse/DIRSTUDIO-455) - Cannot copy/past an existing search
+* [DIRSTUDIO-477](https://issues.apache.org/jira/browse/DIRSTUDIO-477) - Update Eclipse dependencies to version 3.4.2
+* [DIRSTUDIO-478](https://issues.apache.org/jira/browse/DIRSTUDIO-478) - The 'Exit' menu item from the 'File' menu should be removed when running on Mac OS X
+
+**New Feature**
+
+* [DIRSTUDIO-335](https://issues.apache.org/jira/browse/DIRSTUDIO-335) - DIT Quick Search
+* [DIRSTUDIO-397](https://issues.apache.org/jira/browse/DIRSTUDIO-397) - Request for multi-language GUI
+* [DIRSTUDIO-474](https://issues.apache.org/jira/browse/DIRSTUDIO-474) - Add a new GeneralizedTime Value Editor
+* [DIRSTUDIO-474](https://issues.apache.org/jira/browse/DIRSTUDIO-474) - Support for parentOfEntry userClass in ACI Editor
+
+**Task**
+
+* [DIRSTUDIO-451](https://issues.apache.org/jira/browse/DIRSTUDIO-451) - (I18n) Templates not I18ned in LdifEditor
+* [DIRSTUDIO-458](https://issues.apache.org/jira/browse/DIRSTUDIO-458) - (I18n) Bundle Eclipse language packs
+* [DIRSTUDIO-480](https://issues.apache.org/jira/browse/DIRSTUDIO-480) - Update copyright year in the splash screen to 2009
+
+**Wish**
+
+* [DIRSTUDIO-439](https://issues.apache.org/jira/browse/DIRSTUDIO-439) - Ldif importer should be case-insensitive in the changeType attribute
+
+***
+
+## Apache Directory Studio 1.3.0 (November 24th 2008)
+
+**Sub-task**
+
+* [DIRSTUDIO-398](https://issues.apache.org/jira/browse/DIRSTUDIO-398) - Improve the DSML decorated classes by adding an empty constructor and linking the methods of the underlying ldapmessage
+
+**Bug**
+
+* [DIRSTUDIO-260](https://issues.apache.org/jira/browse/DIRSTUDIO-260) - Unable to do a DSML Export from eDirectory
+* [DIRSTUDIO-291](https://issues.apache.org/jira/browse/DIRSTUDIO-291) - Adding of an objectclass requiring attributes not present to an entry in the ldap browser, modify operation fails
+* [DIRSTUDIO-293](https://issues.apache.org/jira/browse/DIRSTUDIO-293) - Values of attributes of the syntax 'Generalized Time' must have the g-time-zone 'Z' and minutes and seconds set to be interpreted and shown as a date instead of the raw value
+* [DIRSTUDIO-354](https://issues.apache.org/jira/browse/DIRSTUDIO-354) - Search window, paste problem
+* [DIRSTUDIO-355](https://issues.apache.org/jira/browse/DIRSTUDIO-355) - DSML Import and Export fail with "Internal Error: null"
+* [DIRSTUDIO-367](https://issues.apache.org/jira/browse/DIRSTUDIO-367) - Tree delete control should not be used automatically
+* [DIRSTUDIO-372](https://issues.apache.org/jira/browse/DIRSTUDIO-372) - NPE when using the LdifEntryEditorDialog w/o selecting a connection
+* [DIRSTUDIO-379](https://issues.apache.org/jira/browse/DIRSTUDIO-379) - Class NewEntryWizard not found, application doesn't starts
+* [DIRSTUDIO-380](https://issues.apache.org/jira/browse/DIRSTUDIO-380) - Attribute and Entry property pages makes the dialog very tall
+* [DIRSTUDIO-382](https://issues.apache.org/jira/browse/DIRSTUDIO-382) - Unable to launch Apache Directory Server with Turkish Regional Settings
+* [DIRSTUDIO-386](https://issues.apache.org/jira/browse/DIRSTUDIO-386) - Can't change 5-digit port number by typing
+* [DIRSTUDIO-389](https://issues.apache.org/jira/browse/DIRSTUDIO-389) - Back/Forward Navigation isn't working
+* [DIRSTUDIO-394](https://issues.apache.org/jira/browse/DIRSTUDIO-394) - SASL Realms are not correctly saved in the 1.5.2 and 1.5.3 Apache DS Configuration Editor
+
+**Improvement**
+
+* [DIRSTUDIO-114](https://issues.apache.org/jira/browse/DIRSTUDIO-114) - Group container entries first in browser view
+* [DIRSTUDIO-116](https://issues.apache.org/jira/browse/DIRSTUDIO-116) - Expand all folds by default
+* [DIRSTUDIO-147](https://issues.apache.org/jira/browse/DIRSTUDIO-147) - Allow LDIF imports to overwrite existing entries
+* [DIRSTUDIO-182](https://issues.apache.org/jira/browse/DIRSTUDIO-182) - Use property file to designate ldap context factory etc. instead of hard code
+* [DIRSTUDIO-228](https://issues.apache.org/jira/browse/DIRSTUDIO-228) - Mask userPassword in the log view
+* [DIRSTUDIO-244](https://issues.apache.org/jira/browse/DIRSTUDIO-244) - Add selection for copy strategy if an entry to copy already exists
+* [DIRSTUDIO-255](https://issues.apache.org/jira/browse/DIRSTUDIO-255) - Run in background should be configurable so one could set it to true by default
+* [DIRSTUDIO-272](https://issues.apache.org/jira/browse/DIRSTUDIO-272) - Use the rat maven plugin with the -Prelease profile option to generate releases
+* [DIRSTUDIO-292](https://issues.apache.org/jira/browse/DIRSTUDIO-292) - Using the 'new entry'/'use existing entry as template' feature from the context menu of an entry, the parent dn is also copied from the template entry
+* [DIRSTUDIO-311](https://issues.apache.org/jira/browse/DIRSTUDIO-311) - Provide Goto DN dialog
+* [DIRSTUDIO-327](https://issues.apache.org/jira/browse/DIRSTUDIO-327) - Add support for Paged Results Control
+* [DIRSTUDIO-358](https://issues.apache.org/jira/browse/DIRSTUDIO-358) - Connections View can have an extension point for initial values
+* [DIRSTUDIO-363](https://issues.apache.org/jira/browse/DIRSTUDIO-363) - Browser View doesn't accept menu additions thru viewerContribution extension point
+* [DIRSTUDIO-377](https://issues.apache.org/jira/browse/DIRSTUDIO-377) - Add value editor for OIDs
+* [DIRSTUDIO-378](https://issues.apache.org/jira/browse/DIRSTUDIO-378) - An attribute name containing an underscore ("_") is split in two when used in "Returning Attributes" field of the "Search" dialog
+* [DIRSTUDIO-383](https://issues.apache.org/jira/browse/DIRSTUDIO-383) - Make "Fetch subentries" setting configurable per connection, move from browser preferences to connection properties
+* [DIRSTUDIO-384](https://issues.apache.org/jira/browse/DIRSTUDIO-384) - Improve New Attribute Type, New Object Class and New Schema Wizards when no schema project is opened
+* [DIRSTUDIO-391](https://issues.apache.org/jira/browse/DIRSTUDIO-391) - Show default values directly
+* [DIRSTUDIO-393](https://issues.apache.org/jira/browse/DIRSTUDIO-393) - Add support for ApacheDS 1.5.4 server.xml file in the ApacheDS Configuration Editor
+* [DIRSTUDIO-405](https://issues.apache.org/jira/browse/DIRSTUDIO-405) - Update the Apache DS plugin to use Apache DS 1.5.4 dependencies
+* [DIRSTUDIO-406](https://issues.apache.org/jira/browse/DIRSTUDIO-406) - The New Server Wizard should be listed in the NewWizards section
+* [DIRSTUDIO-407](https://issues.apache.org/jira/browse/DIRSTUDIO-407) - Stack the Servers view aside the Connections view as a perpective extension of the LDAP Browser Perpective
+* [DIRSTUDIO-408](https://issues.apache.org/jira/browse/DIRSTUDIO-408) - In the NewEntryWizard, the first selected object class on the left side should be added if the Enter key is hit in the text field
+
+**New Feature**
+
+* [DIRSTUDIO-85](https://issues.apache.org/jira/browse/DIRSTUDIO-85) - Add support for search dialog to include * and + for returnable attributes
+* [DIRSTUDIO-107](https://issues.apache.org/jira/browse/DIRSTUDIO-107) - Enable Select/Copy in Property page of RootDSE in order to copy and paste detected OIDs
+* [DIRSTUDIO-153](https://issues.apache.org/jira/browse/DIRSTUDIO-153) - Allow offline modifications of entries
+* [DIRSTUDIO-297](https://issues.apache.org/jira/browse/DIRSTUDIO-297) - Add a 'save as' for logs
+* [DIRSTUDIO-356](https://issues.apache.org/jira/browse/DIRSTUDIO-356) - Add a way to get the connection config as an URL
+* [DIRSTUDIO-385](https://issues.apache.org/jira/browse/DIRSTUDIO-385) - Add dialog to create a new context entry
+
+**Task**
+
+* [DIRSTUDIO-19](https://issues.apache.org/jira/browse/DIRSTUDIO-19) - Add Javadoc to LDAP Browser classes
+* [DIRSTUDIO-374](https://issues.apache.org/jira/browse/DIRSTUDIO-374) - Clean duplicated dependencies in plugins
+* [DIRSTUDIO-375](https://issues.apache.org/jira/browse/DIRSTUDIO-375) - Move each plugin IDs in a plugin.properties file
+* [DIRSTUDIO-376](https://issues.apache.org/jira/browse/DIRSTUDIO-376) - Move to the latest Eclipse 3.4 dependencies
+
+***
+
+## Apache Directory Studio 1.2.0 (August 19th 2008)
+
+**Bug**
+
+* [DIRSTUDIO-89](https://issues.apache.org/jira/browse/DIRSTUDIO-89) - Entry painted even though not created in server
+* [DIRSTUDIO-121](https://issues.apache.org/jira/browse/DIRSTUDIO-121) - Some property pages make the dialog very tall
+* [DIRSTUDIO-157](https://issues.apache.org/jira/browse/DIRSTUDIO-157) - Studio looses STRG-V over some time of use
+* [DIRSTUDIO-209](https://issues.apache.org/jira/browse/DIRSTUDIO-209) - Cannot expand attribute list
+* [DIRSTUDIO-266](https://issues.apache.org/jira/browse/DIRSTUDIO-266) - OpenLDAP schema files parser fails when DESC contains an empty string ''
+* [DIRSTUDIO-273](https://issues.apache.org/jira/browse/DIRSTUDIO-273) - Unable to get Base DNs on OID (Oracle Internet Directory)
+* [DIRSTUDIO-298](https://issues.apache.org/jira/browse/DIRSTUDIO-298) - NullPointerException raised when drag'n'dropping a connection to a folder (on Mac OS X only)
+* [DIRSTUDIO-315](https://issues.apache.org/jira/browse/DIRSTUDIO-315) - Choosing new value, in entry editor shows new entry when server error occures
+* [DIRSTUDIO-318](https://issues.apache.org/jira/browse/DIRSTUDIO-318) - Rename of multi-values RDN does not work when changing the second RDN
+* [DIRSTUDIO-319](https://issues.apache.org/jira/browse/DIRSTUDIO-319) - LDAP Browser creating new entry becomes empty and unusable in Windows Vista after certain actions
+* [DIRSTUDIO-323](https://issues.apache.org/jira/browse/DIRSTUDIO-323) - Studio fails to read ApacheDS server.xml
+* [DIRSTUDIO-325](https://issues.apache.org/jira/browse/DIRSTUDIO-325) - Keybinding conflicts occurred. They may interfere with normal accelerator operation.
+* [DIRSTUDIO-326](https://issues.apache.org/jira/browse/DIRSTUDIO-326) - Non-Operational attributes are marked as operational when bind to Siemens DirX 7.0
+* [DIRSTUDIO-330](https://issues.apache.org/jira/browse/DIRSTUDIO-330) - CoreException raised in editor when opening a *.txt file
+* [DIRSTUDIO-336](https://issues.apache.org/jira/browse/DIRSTUDIO-336) - Errors when parsing schema of some LDAP servers
+* [DIRSTUDIO-341](https://issues.apache.org/jira/browse/DIRSTUDIO-341) - Paste error
+* [DIRSTUDIO-342](https://issues.apache.org/jira/browse/DIRSTUDIO-342) - Relax the parser for the *.schema files
+* [DIRSTUDIO-343](https://issues.apache.org/jira/browse/DIRSTUDIO-343) - Referrals not handled.
+* [DIRSTUDIO-347](https://issues.apache.org/jira/browse/DIRSTUDIO-347) - Keybinding conflict for CTRL+Q
+* [DIRSTUDIO-349](https://issues.apache.org/jira/browse/DIRSTUDIO-349) - Unable to enter large values for uid
+* [DIRSTUDIO-350](https://issues.apache.org/jira/browse/DIRSTUDIO-350) - DS is not properly displaying case of group DN
+* [DIRSTUDIO-360](https://issues.apache.org/jira/browse/DIRSTUDIO-360) - cannot read attribute from items with a / in the dn
+* [DIRSTUDIO-364](https://issues.apache.org/jira/browse/DIRSTUDIO-364) - Installing in Eclipse fails
+* [DIRSTUDIO-365](https://issues.apache.org/jira/browse/DIRSTUDIO-365) - Can't delete entry with studio 1.1.0. works with 1.0.1
+
+**Improvement**
+
+* [DIRSTUDIO-46](https://issues.apache.org/jira/browse/DIRSTUDIO-46) - Add connections import/export
+* [DIRSTUDIO-126](https://issues.apache.org/jira/browse/DIRSTUDIO-126) - Triple click to edit attribute
+* [DIRSTUDIO-295](https://issues.apache.org/jira/browse/DIRSTUDIO-295) - Add a console for errors
+* [DIRSTUDIO-329](https://issues.apache.org/jira/browse/DIRSTUDIO-329) - Replace internal URL class by shared-ldap LdapURL class
+* [DIRSTUDIO-337](https://issues.apache.org/jira/browse/DIRSTUDIO-337) - Add Save and Print actions in the toolbar of the RCP application
+* [DIRSTUDIO-361](https://issues.apache.org/jira/browse/DIRSTUDIO-361) - Auto-activate 'show operational attributes' when adding an operational attribute
+
+**New Feature**
+
+* [DIRSTUDIO-321](https://issues.apache.org/jira/browse/DIRSTUDIO-321) - Need to be able to set SOCKS proxy in the RCP version
+* [DIRSTUDIO-328](https://issues.apache.org/jira/browse/DIRSTUDIO-328) - Search Logs View
+
+**Task**
+
+* [DIRSTUDIO-128](https://issues.apache.org/jira/browse/DIRSTUDIO-128) - Replace internal schema parser with the schema parser in shared-ldap.
+* [DIRSTUDIO-317](https://issues.apache.org/jira/browse/DIRSTUDIO-317) - Update legal files after moving to Apache Directory Shared LDAP version 0.9.9
+* [DIRSTUDIO-332](https://issues.apache.org/jira/browse/DIRSTUDIO-332) - Add support for 1.5.3, 1.5.2 and 1.5.0 server.xml configuration files
+* [DIRSTUDIO-338](https://issues.apache.org/jira/browse/DIRSTUDIO-338) - Update Eclipse dependencies to the latest Eclipse version (3.3.2)
+* [DIRSTUDIO-339](https://issues.apache.org/jira/browse/DIRSTUDIO-339) - Add the 'org.eclipse.ui.carbon' Eclipse plugin to the Mac OS X distribution
+
+***
+
+## Apache Directory Studio 1.1.0 (April 8th 2008)
+
+See changelog of Apache Directory Studio 1.1.0 RC and Apache Directory Studio 1.1.0 RC2
+
+***
+
+## Apache Directory Studio 1.1.0 RC2 (March 4th 2008)
+
+**Bug**
+
+* [DIRSTUDIO-286](https://issues.apache.org/jira/browse/DIRSTUDIO-286) - Update Site is not working, missing dependencies in ldifeditor, ldapbrower and schemaeditor feature
+* [DIRSTUDIO-285](https://issues.apache.org/jira/browse/DIRSTUDIO-285) - Export into LDIF format could be corrupted
+* [DIRSTUDIO-284](https://issues.apache.org/jira/browse/DIRSTUDIO-284) - Changing "Supported Authentication Mechanism" doesn't set the dirty flag.
+* [DIRSTUDIO-281](https://issues.apache.org/jira/browse/DIRSTUDIO-281) - LDIF and Apache DS configuration files can't be saved in RCP mode
+* [DIRSTUDIO-279](https://issues.apache.org/jira/browse/DIRSTUDIO-279) - Filter Editor doesn't remove spaces and line breaks after OK
+* [DIRSTUDIO-270](https://issues.apache.org/jira/browse/DIRSTUDIO-270) - Copy and paste does not work when value being edited
+
+**Task**
+
+* [DIRSTUDIO-280](https://issues.apache.org/jira/browse/DIRSTUDIO-280) - Remove remaining unwanted contributions from Eclipse
+
+***
+
+## Apache Directory Studio 1.1.0 RC (February 20th 2008)
+
+**Sub-task**
+
+* [DIRSTUDIO-142](https://issues.apache.org/jira/browse/DIRSTUDIO-142) - Add SASL authentication
+
+**Bug**
+
+* [DIRSTUDIO-48](https://issues.apache.org/jira/browse/DIRSTUDIO-48) - Errors when help is open
+* [DIRSTUDIO-95](https://issues.apache.org/jira/browse/DIRSTUDIO-95) - Not returning large queries
+* [DIRSTUDIO-120](https://issues.apache.org/jira/browse/DIRSTUDIO-120) - 100% CPU when deleting thousands of entries
+* [DIRSTUDIO-139](https://issues.apache.org/jira/browse/DIRSTUDIO-139) - Operational attributes not shown in the Entry Editor
+* [DIRSTUDIO-152](https://issues.apache.org/jira/browse/DIRSTUDIO-152) - New entry creator does not know that 'dc' and 'domainComponent' is the same thing
+* [DIRSTUDIO-154](https://issues.apache.org/jira/browse/DIRSTUDIO-154) - Studio getting slower and slower on bulk operations
+* [DIRSTUDIO-161](https://issues.apache.org/jira/browse/DIRSTUDIO-161) - Unable to enter Base DN ending in 'dc='
+* [DIRSTUDIO-166](https://issues.apache.org/jira/browse/DIRSTUDIO-166) - LDif Import changetype: modify add attribute attrId is not case insensitive
+* [DIRSTUDIO-184](https://issues.apache.org/jira/browse/DIRSTUDIO-184) - Error while reading entry in Active Directory
+* [DIRSTUDIO-191](https://issues.apache.org/jira/browse/DIRSTUDIO-191) - Connection Name mess up if it contains non-ascii chars
+* [DIRSTUDIO-196](https://issues.apache.org/jira/browse/DIRSTUDIO-196) - Error dialog displayed after Problems View is closed
+* [DIRSTUDIO-197](https://issues.apache.org/jira/browse/DIRSTUDIO-197) - Following referrals throws NPE
+* [DIRSTUDIO-198](https://issues.apache.org/jira/browse/DIRSTUDIO-198) - Search string is not working properly with metacharacters (*, +...)
+* [DIRSTUDIO-201](https://issues.apache.org/jira/browse/DIRSTUDIO-201) - Project Name mess up if it contains non-ascii chars
+* [DIRSTUDIO-203](https://issues.apache.org/jira/browse/DIRSTUDIO-203) - Help contexts of LDAP Browser does not display in the Dynamic Help window
+* [DIRSTUDIO-204](https://issues.apache.org/jira/browse/DIRSTUDIO-204) - Warning displayed when showing the properties of a connection
+* [DIRSTUDIO-205](https://issues.apache.org/jira/browse/DIRSTUDIO-205) - Windows installer's publisher is set to "Unknown Publisher"
+* [DIRSTUDIO-206](https://issues.apache.org/jira/browse/DIRSTUDIO-206) - Browse does not work in subtree editor base selection
+* [DIRSTUDIO-210](https://issues.apache.org/jira/browse/DIRSTUDIO-210) - Filter parser accepts bad filters
+* [DIRSTUDIO-211](https://issues.apache.org/jira/browse/DIRSTUDIO-211) - Connections window doesn't display swedish characters properly
+* [DIRSTUDIO-213](https://issues.apache.org/jira/browse/DIRSTUDIO-213) - NullPointerException raised when selecting an OC with no alias as a superior in the NewObjectClassWizard
+* [DIRSTUDIO-214](https://issues.apache.org/jira/browse/DIRSTUDIO-214) - IllegalArgumentException raised when selecting an AT with no alias as superior in the NewAttributeTypeWizard
+* [DIRSTUDIO-217](https://issues.apache.org/jira/browse/DIRSTUDIO-217) - Eclipse 3.3 New Connections shows "Browser Options" without possibility to add new address
+* [DIRSTUDIO-220](https://issues.apache.org/jira/browse/DIRSTUDIO-220) - lowercase {crypt} in userPassword is an "Unsupported Hash Method"
+* [DIRSTUDIO-222](https://issues.apache.org/jira/browse/DIRSTUDIO-222) - Pb when creating an entry with an invalid atribute as a RDN
+* [DIRSTUDIO-223](https://issues.apache.org/jira/browse/DIRSTUDIO-223) - NullPointerException raised when adding values in the New Entry Wizard
+* [DIRSTUDIO-224](https://issues.apache.org/jira/browse/DIRSTUDIO-224) - Can't Open Schema View with JDK 6.0
+* [DIRSTUDIO-226](https://issues.apache.org/jira/browse/DIRSTUDIO-226) - Attribute Type Description is not imported when reading an OpenLDAP schema file
+* [DIRSTUDIO-230](https://issues.apache.org/jira/browse/DIRSTUDIO-230) - Locate Dn in DIT Action does not work well
+* [DIRSTUDIO-233](https://issues.apache.org/jira/browse/DIRSTUDIO-233) - Browsing base DN returns [LDAP: error code 10 - Referral)
+* [DIRSTUDIO-235](https://issues.apache.org/jira/browse/DIRSTUDIO-235) - Non ASCII characters are not rendered properly in the LDAP Browser View when label is limited to a certain number of characters
+* [DIRSTUDIO-239](https://issues.apache.org/jira/browse/DIRSTUDIO-239) - No error message when importing a bad schema
+* [DIRSTUDIO-242](https://issues.apache.org/jira/browse/DIRSTUDIO-242) - Inconsistent state of the Entry Editor after using "New Value" (or "New Attribute...") and pressing "Escape".
+* [DIRSTUDIO-243](https://issues.apache.org/jira/browse/DIRSTUDIO-243) - Modified value of Equality Matching Rule in the AttributeTypeEditor is not saved
+* [DIRSTUDIO-245](https://issues.apache.org/jira/browse/DIRSTUDIO-245) - Apache DS Configuration Plugin cannot parse server.xml file correctly
+* [DIRSTUDIO-247](https://issues.apache.org/jira/browse/DIRSTUDIO-247) - Don't use implicit ManageDsaIT control magic of JNDI
+* [DIRSTUDIO-249](https://issues.apache.org/jira/browse/DIRSTUDIO-249) - Modification Logs view does not display request controls, if sent to the server
+* [DIRSTUDIO-250](https://issues.apache.org/jira/browse/DIRSTUDIO-250) - Unable to load entries if RDN is quoted and contains unescaped comma
+* [DIRSTUDIO-252](https://issues.apache.org/jira/browse/DIRSTUDIO-252) - Advanced value editors don't work in NewEntryWizard
+* [DIRSTUDIO-253](https://issues.apache.org/jira/browse/DIRSTUDIO-253) - cant open server.xml with directory studio
+* [DIRSTUDIO-258](https://issues.apache.org/jira/browse/DIRSTUDIO-258) - ArrayIndexOutOfBoundsException when changing Base DN
+* [DIRSTUDIO-259](https://issues.apache.org/jira/browse/DIRSTUDIO-259) - NPE when trying to turn back on "save password" on connection properties
+* [DIRSTUDIO-261](https://issues.apache.org/jira/browse/DIRSTUDIO-261) - LDAP Browser shows same root objects two times under Root DSE
+* [DIRSTUDIO-264](https://issues.apache.org/jira/browse/DIRSTUDIO-264) - ldif parser doesn't accept attributes with empty values
+* [DIRSTUDIO-267](https://issues.apache.org/jira/browse/DIRSTUDIO-267) - Clicking on a bookmark loops and does not display attributes
+* [DIRSTUDIO-269](https://issues.apache.org/jira/browse/DIRSTUDIO-269) - Attributes not displayed when browsing BEA Weblogic embedded LDAP
+
+**Improvement**
+
+* [DIRSTUDIO-37](https://issues.apache.org/jira/browse/DIRSTUDIO-37) - Improve authentication methods and security mechanisms
+* [DIRSTUDIO-119](https://issues.apache.org/jira/browse/DIRSTUDIO-119) - Allow user to disabled the Modification logs windows
+* [DIRSTUDIO-123](https://issues.apache.org/jira/browse/DIRSTUDIO-123) - Refactor IConnection interface and Connection class
+* [DIRSTUDIO-136](https://issues.apache.org/jira/browse/DIRSTUDIO-136) - Remove the "Apache DS" menu from the Java Perspective
+* [DIRSTUDIO-138](https://issues.apache.org/jira/browse/DIRSTUDIO-138) - Add visual feedback to the user, if SSL (ldaps) is enabled
+* [DIRSTUDIO-156](https://issues.apache.org/jira/browse/DIRSTUDIO-156) - useability improvement: when exporting an OU use the applied filter by default
+* [DIRSTUDIO-187](https://issues.apache.org/jira/browse/DIRSTUDIO-187) - Add the ability to organize connections in folders
+* [DIRSTUDIO-189](https://issues.apache.org/jira/browse/DIRSTUDIO-189) - Replace connection combo-box with BrowserConnectionWidget
+* [DIRSTUDIO-195](https://issues.apache.org/jira/browse/DIRSTUDIO-195) - Add key bindings to the Schema Editor
+* [DIRSTUDIO-199](https://issues.apache.org/jira/browse/DIRSTUDIO-199) - Add scopes for OC and AT in search
+* [DIRSTUDIO-200](https://issues.apache.org/jira/browse/DIRSTUDIO-200) - Add an OC and AT hierarchical global view
+* [DIRSTUDIO-202](https://issues.apache.org/jira/browse/DIRSTUDIO-202) - Add help contexts to the help plugin of the Schema Editor
+* [DIRSTUDIO-216](https://issues.apache.org/jira/browse/DIRSTUDIO-216) - Improve Type Hierarchy View
+* [DIRSTUDIO-221](https://issues.apache.org/jira/browse/DIRSTUDIO-221) - Improve Object Class selection in the New Entry Wizard
+* [DIRSTUDIO-227](https://issues.apache.org/jira/browse/DIRSTUDIO-227) - Add the ability to select OpenLDAP schema files as core schemas when creating a project
+* [DIRSTUDIO-237](https://issues.apache.org/jira/browse/DIRSTUDIO-237) - It would be good to be able to import 'core' schemas into an existing project
+* [DIRSTUDIO-238](https://issues.apache.org/jira/browse/DIRSTUDIO-238) - Automatically add an alias when the 'ok' button is selected
+* [DIRSTUDIO-240](https://issues.apache.org/jira/browse/DIRSTUDIO-240) - Memorize the last import's path
+* [DIRSTUDIO-251](https://issues.apache.org/jira/browse/DIRSTUDIO-251) - Replace the Text Widget for the OID in the new AT and OC wizards by a Drop-Down Combo with history of the last used OIDs
+* [DIRSTUDIO-254](https://issues.apache.org/jira/browse/DIRSTUDIO-254) - schema import does not provide error reporting when parsing schema file
+* [DIRSTUDIO-257](https://issues.apache.org/jira/browse/DIRSTUDIO-257) - Use system small fonts on Mac OS X
+* [DIRSTUDIO-275](https://issues.apache.org/jira/browse/DIRSTUDIO-275) - Import/Export wizards should display an error if no Schema Project is open
+
+**New Feature**
+
+* [DIRSTUDIO-192](https://issues.apache.org/jira/browse/DIRSTUDIO-192) - Add an extension point in the Schema Editor for SchemaConnectors
+* [DIRSTUDIO-193](https://issues.apache.org/jira/browse/DIRSTUDIO-193) - Add the abitilty to import/export the Schema from/to a directory Server
+* [DIRSTUDIO-194](https://issues.apache.org/jira/browse/DIRSTUDIO-194) - Add a SchemaConnector for Apache Directory Server
+* [DIRSTUDIO-246](https://issues.apache.org/jira/browse/DIRSTUDIO-246) - Add support for simulated renaming of non-leaf entries
+* [DIRSTUDIO-248](https://issues.apache.org/jira/browse/DIRSTUDIO-248) - Add support for simulated moving of non-leaf entries
+
+**Task**
+
+* [DIRSTUDIO-218](https://issues.apache.org/jira/browse/DIRSTUDIO-218) - Some packages are not signed
+* [DIRSTUDIO-225](https://issues.apache.org/jira/browse/DIRSTUDIO-225) - Update documentation for Schema Editor Plugin
+* [DIRSTUDIO-229](https://issues.apache.org/jira/browse/DIRSTUDIO-229) - Replace internal DN/RDN/RDNPart with LdapDN/Rdn/ATAV of shared-ldap
+* [DIRSTUDIO-236](https://issues.apache.org/jira/browse/DIRSTUDIO-236) - Update the Apache DS Configuration plugin to work with the server.xml file of Apache DS 1.5.1
+* [DIRSTUDIO-265](https://issues.apache.org/jira/browse/DIRSTUDIO-265) - Migrate our build system from Ant+Ivy to Maven
+
+***
+
+## Apache Directory Studio 1.0.1 (September 18th 2007)
+
+**Bug**
+
+* [DIRSTUDIO-162](https://issues.apache.org/jira/browse/DIRSTUDIO-162) - Delete old RDN on rename has no effect
+* [DIRSTUDIO-180](https://issues.apache.org/jira/browse/DIRSTUDIO-180) - Connection wizard and properties tabs are out of order
+* [DIRSTUDIO-183](https://issues.apache.org/jira/browse/DIRSTUDIO-183) - It's not possible to select a Connection in a New Search
+* [DIRSTUDIO-186](https://issues.apache.org/jira/browse/DIRSTUDIO-186) - When copying an entry it isn't displayed correctly in the browser tree
+* [DIRSTUDIO-190](https://issues.apache.org/jira/browse/DIRSTUDIO-190) - SSL connections are no longer working
+
+**Improvement**
+
+* [DIRSTUDIO-185](https://issues.apache.org/jira/browse/DIRSTUDIO-185) - Provide completion for all attribute types in the attribute wizard
+
+**Task**
+
+* [DIRSTUDIO-181](https://issues.apache.org/jira/browse/DIRSTUDIO-181) - Update the documentation of the Schema Editor Plugin
+* [DIRSTUDIO-188](https://issues.apache.org/jira/browse/DIRSTUDIO-188) - Move LDIF Editor help to its own help plugin
+
+***
+
+## Apache Directory Studio 1.0.0 (September 4th 2007)
+
+**Sub-task**
+
+* [DIRSTUDIO-131](https://issues.apache.org/jira/browse/DIRSTUDIO-131) - Rename package names and plugin IDs for ldap browser plugins and features
+* [DIRSTUDIO-140](https://issues.apache.org/jira/browse/DIRSTUDIO-140) - Add Eclipse Intro mecanism to the Apache Directory Studio RCP plugin
+* [DIRSTUDIO-141](https://issues.apache.org/jira/browse/DIRSTUDIO-141) - Add content to Apache Directory Studio Intro
+* [DIRSTUDIO-177](https://issues.apache.org/jira/browse/DIRSTUDIO-177) - Update dependencies on Apache DS jars
+
+**Bug**
+
+* [DIRSTUDIO-73](https://issues.apache.org/jira/browse/DIRSTUDIO-73) - Password appears in clear
+* [DIRSTUDIO-96](https://issues.apache.org/jira/browse/DIRSTUDIO-96) - installation into existing Eclipse ruins key bindings for JDT
+* [DIRSTUDIO-101](https://issues.apache.org/jira/browse/DIRSTUDIO-101) - Configuration lost on brutal exit
+* [DIRSTUDIO-110](https://issues.apache.org/jira/browse/DIRSTUDIO-110) - No DIT shown when opening a connection with the 'open' icon
+* [DIRSTUDIO-117](https://issues.apache.org/jira/browse/DIRSTUDIO-117) - Double click attribute to rename entry displays two dialog boxes
+* [DIRSTUDIO-127](https://issues.apache.org/jira/browse/DIRSTUDIO-127) - Missing ASL 2.0 headers in package-info.java files for ACIEditor
+* [DIRSTUDIO-149](https://issues.apache.org/jira/browse/DIRSTUDIO-149) - Problems with the slash / in DN
+* [DIRSTUDIO-168](https://issues.apache.org/jira/browse/DIRSTUDIO-168) - NPE when opening search dialog and connection is closed
+* [DIRSTUDIO-172](https://issues.apache.org/jira/browse/DIRSTUDIO-172) - Syntax length definitions in schemas exported from LDAP Studio throws exception on Apache DS start-up.
+
+**Improvement**
+
+* [DIRSTUDIO-47](https://issues.apache.org/jira/browse/DIRSTUDIO-47) - Improve filter widget and filter editor dialog
+* [DIRSTUDIO-67](https://issues.apache.org/jira/browse/DIRSTUDIO-67) - Clear "Modification Logs" functionality missing
+* [DIRSTUDIO-75](https://issues.apache.org/jira/browse/DIRSTUDIO-75) - Improve LDAP Studio build system
+* [DIRSTUDIO-93](https://issues.apache.org/jira/browse/DIRSTUDIO-93) - Add server detection for ApacheDS and TivoliDS on RootDSE property page
+* [DIRSTUDIO-99](https://issues.apache.org/jira/browse/DIRSTUDIO-99) - Display both OID and text for controls etc. in the property page of the Root DSE
+* [DIRSTUDIO-102](https://issues.apache.org/jira/browse/DIRSTUDIO-102) - Add descriptions for OIDs for LDAP controls and extended ops specific to IBM Tivoli Directory Server
+* [DIRSTUDIO-103](https://issues.apache.org/jira/browse/DIRSTUDIO-103) - Include Apache brand in splash screen of RCP application
+* [DIRSTUDIO-104](https://issues.apache.org/jira/browse/DIRSTUDIO-104) - Add "Apache" prefix to window title of RCP Application
+* [DIRSTUDIO-105](https://issues.apache.org/jira/browse/DIRSTUDIO-105) - Add descriptions for OIDs for LDAP controls and extended ops specific to Netscape Directory Server
+* [DIRSTUDIO-106](https://issues.apache.org/jira/browse/DIRSTUDIO-106) - Add descriptions for OIDs for LDAP controls and extended ops specific to MS Active Directory
+* [DIRSTUDIO-108](https://issues.apache.org/jira/browse/DIRSTUDIO-108) - Superlasses
+* [DIRSTUDIO-122](https://issues.apache.org/jira/browse/DIRSTUDIO-122) - Schema editor should allow a user to add an OID in the Syntax input box
+* [DIRSTUDIO-125](https://issues.apache.org/jira/browse/DIRSTUDIO-125) - Bootstrap Ivy
+* [DIRSTUDIO-151](https://issues.apache.org/jira/browse/DIRSTUDIO-151) - Simplify IValueEditor interface
+* [DIRSTUDIO-158](https://issues.apache.org/jira/browse/DIRSTUDIO-158) - Create a separte connection plugin
+* [DIRSTUDIO-165](https://issues.apache.org/jira/browse/DIRSTUDIO-165) - Add the version number of Apache Directory Studio in the "About window" of the RCP application
+* [DIRSTUDIO-169](https://issues.apache.org/jira/browse/DIRSTUDIO-169) - Make connection parameters editable even if the connection is opened
+* [DIRSTUDIO-174](https://issues.apache.org/jira/browse/DIRSTUDIO-174) - Use an unique ID as connection identifier instead of the connection name
+
+**New Feature**
+
+* [DIRSTUDIO-90](https://issues.apache.org/jira/browse/DIRSTUDIO-90) - Add a Welcome view that is displayed at first launch
+
+**Task**
+
+* [DIRSTUDIO-113](https://issues.apache.org/jira/browse/DIRSTUDIO-113) - Rename "LDAP Studio" to "Apache Directory Studio"
+* [DIRSTUDIO-129](https://issues.apache.org/jira/browse/DIRSTUDIO-129) - Rename project names in trunk
+* [DIRSTUDIO-130](https://issues.apache.org/jira/browse/DIRSTUDIO-130) - Rename package names and plugin IDs
+* [DIRSTUDIO-159](https://issues.apache.org/jira/browse/DIRSTUDIO-159) - Create a separte feature project for the LDIF Editor
+* [DIRSTUDIO-175](https://issues.apache.org/jira/browse/DIRSTUDIO-175) - Verify and add if needed the Notice.txt and Licence.txt files of all plugins
+* [DIRSTUDIO-176](https://issues.apache.org/jira/browse/DIRSTUDIO-176) - Edit Release Notes.txt files for the 1.0 release
+* [DIRSTUDIO-178](https://issues.apache.org/jira/browse/DIRSTUDIO-178) - Edit features and update site with the new update site URL
+
+**Wish**
+
+* [DIRSTUDIO-100](https://issues.apache.org/jira/browse/DIRSTUDIO-100) - Interface IRootDSE does not sufficiently define return values of methods
+
+***
+
+## Apache LDAP Studio 0.8.1 (July 24th 2007)
+
+**Bug**
+
+* [DIRSTUDIO-80](https://issues.apache.org/jira/browse/DIRSTUDIO-80) - LDAP Studio does not work on x86_64
+* [DIRSTUDIO-144](https://issues.apache.org/jira/browse/DIRSTUDIO-144) - Unable to install plugins from updatesite on x86_64 architecture
+
+***
+
+## Apache LDAP Studio 0.8.0 (May 4th 2007)
+
+**Bug**
+
+* [DIRSTUDIO-71](https://issues.apache.org/jira/browse/DIRSTUDIO-71) - LDAP Studio installer creates bad shortcuts
+* [DIRSTUDIO-74](https://issues.apache.org/jira/browse/DIRSTUDIO-74) - empty DN does not work
+* [DIRSTUDIO-82](https://issues.apache.org/jira/browse/DIRSTUDIO-82) - Export to XLS or CSV
+* [DIRSTUDIO-83](https://issues.apache.org/jira/browse/DIRSTUDIO-83) - Generated LDIF of a schema doesn't support the m-dependencies attribute
+* [DIRSTUDIO-84](https://issues.apache.org/jira/browse/DIRSTUDIO-84) - Binding with a bad DN is accepted
+* [DIRSTUDIO-86](https://issues.apache.org/jira/browse/DIRSTUDIO-86) - No way to specify search on rootDSE in search dialog
+* [DIRSTUDIO-88](https://issues.apache.org/jira/browse/DIRSTUDIO-88) - Schema export to Apache DS has a spelling error which causes the import to fail.
+
+**Improvement**
+
+* [DIRSTUDIO-78](https://issues.apache.org/jira/browse/DIRSTUDIO-78) - Refactor browser-ui plugin
+
+**New Feature**
+
+* [DIRSTUDIO-12](https://issues.apache.org/jira/browse/DIRSTUDIO-12) - Editor for editing ACIs
+* [DIRSTUDIO-76](https://issues.apache.org/jira/browse/DIRSTUDIO-76) - Value editor for administrativeRole
+* [DIRSTUDIO-79](https://issues.apache.org/jira/browse/DIRSTUDIO-79) - Value editor for subtreeSpecification
+* [DIRSTUDIO-91](https://issues.apache.org/jira/browse/DIRSTUDIO-91) - Add a new plugin for handling the Apache DS server configuration file
+
+***
+
+## Apache LDAP Studio 0.7.0 (April 6th 2007)
+
+**Bug**
+
+* [DIRSTUDIO-1](https://issues.apache.org/jira/browse/DIRSTUDIO-1) - DSML Parser does not throw an exception when it doesn't find a requestID attribute when processing=parallel and responseOrder=unordered
+* [DIRSTUDIO-4](https://issues.apache.org/jira/browse/DIRSTUDIO-4) - Selection in Schema
+* [DIRSTUDIO-31](https://issues.apache.org/jira/browse/DIRSTUDIO-31) - Source Code View of a schema is not refreshed when one of its objectclasses or attributetypes is updated.
+* [DIRSTUDIO-57](https://issues.apache.org/jira/browse/DIRSTUDIO-57) - Search Result editor isn't initialized properly
+* [DIRSTUDIO-63](https://issues.apache.org/jira/browse/DIRSTUDIO-63) - Should not package ui-forms in org.apache.directory.ldapstudio.schemas_0.6.0jar
+* [DIRSTUDIO-64](https://issues.apache.org/jira/browse/DIRSTUDIO-64) - Unable to modify an Attribute Type's OID
+* [DIRSTUDIO-69](https://issues.apache.org/jira/browse/DIRSTUDIO-69) - Problems with search base and DN serialization
+
+**Improvement**
+
+* [DIRSTUDIO-33](https://issues.apache.org/jira/browse/DIRSTUDIO-33) - Add syntax coloring to the Source Code view of AT, OC & Schema editors
+* [DIRSTUDIO-35](https://issues.apache.org/jira/browse/DIRSTUDIO-35) - Disable action icons of the Schemas view when actions are not available
+* [DIRSTUDIO-39](https://issues.apache.org/jira/browse/DIRSTUDIO-39) - Allow the user to switch between 'Standard schemas files' and 'Use specific schemas files' without having to relaunch the application.
+* [DIRSTUDIO-40](https://issues.apache.org/jira/browse/DIRSTUDIO-40) - Source Code view of an AT or OC should reflect the changes made in the graphical editor
+* [DIRSTUDIO-44](https://issues.apache.org/jira/browse/DIRSTUDIO-44) - Add small hover icon identifiers for OC and AC to differenciate them
+* [DIRSTUDIO-49](https://issues.apache.org/jira/browse/DIRSTUDIO-49) - Improve history navigation
+* [DIRSTUDIO-51](https://issues.apache.org/jira/browse/DIRSTUDIO-51) - Add a way to get the OC which use an AT
+* [DIRSTUDIO-52](https://issues.apache.org/jira/browse/DIRSTUDIO-52) - may and must ATs are not sorted
+* [DIRSTUDIO-53](https://issues.apache.org/jira/browse/DIRSTUDIO-53) - Bad search incon in the Schema perspective
+* [DIRSTUDIO-55](https://issues.apache.org/jira/browse/DIRSTUDIO-55) - Adding 'instant search' into entry creation
+* [DIRSTUDIO-56](https://issues.apache.org/jira/browse/DIRSTUDIO-56) - Automatic completion of inherited OC
+* [DIRSTUDIO-58](https://issues.apache.org/jira/browse/DIRSTUDIO-58) - Improve the Hierarchy View
+* [DIRSTUDIO-59](https://issues.apache.org/jira/browse/DIRSTUDIO-59) - Add a Schema Field in the AT/OC editors
+* [DIRSTUDIO-61](https://issues.apache.org/jira/browse/DIRSTUDIO-61) - Pressing the down key in the search field of the Search View should pass the focus to the search results table
+* [DIRSTUDIO-66](https://issues.apache.org/jira/browse/DIRSTUDIO-66) - Refresh of the LDAP Browser viewer after import
+
+**New Feature**
+
+* [DIRSTUDIO-7](https://issues.apache.org/jira/browse/DIRSTUDIO-7) - OID View
+* [DIRSTUDIO-41](https://issues.apache.org/jira/browse/DIRSTUDIO-41) - Add an Overview page on the Schema Editor that displays all ATs and OCs of the schema
+
+***
+
+## Apache LDAP Studio 0.6.0 (February 13th 2007)
+
+Initial Release.
diff --git a/source/studio/developers-guide.md b/source/studio/developers-guide.md
new file mode 100644
index 0000000..402b9d5
--- /dev/null
+++ b/source/studio/developers-guide.md
@@ -0,0 +1,30 @@
+---
+title: Developer's Guide
+---
+
+# Developer's Guide
+
+This is a simple guide to various Apache Directory Studio resources to help developers get going. This guide can be found in the [README][README.md] file at the top level of the source tree.
+
+## Source Repository
+
+The [Source repository](source-repository.html) page describes source code location and organization.
+
+## Build
+
+The [README][README.md] describes how to build from source.
+
+## Issue Tracker
+
+[Jira](https://issues.apache.org/jira/browse/DIRSTUDIO).
+
+## Release
+
+The release process is described within the [README][README.md].
+
+## Internationalization
+
+The [Internationalization](internationalization.html) page describes how to enable multi-language support in the GUI (I18n).
+
+
+[README.md]: https://github.com/apache/directory-studio/blob/master/README.md
diff --git a/source/studio/developers-howtos/developers-howtos.md b/source/studio/developers-howtos/developers-howtos.md
new file mode 100644
index 0000000..3bcda2d
--- /dev/null
+++ b/source/studio/developers-howtos/developers-howtos.md
@@ -0,0 +1,33 @@
+---
+title: Developers' Howtos
+---
+
+# Studio Developers' Howtos
+
+Theses guides give some insight about how is developped Studio, so that some new comers can jump in at a limited cost (well, sort of...)
+
+
+## Introduction
+
+Studio is an Eclipse&tm; RCP application, which can also be loaded into an Eclipse&tm; instance. It's a set of plugins :
+
+* a LDAP Browser
+* a LDAP Schema Editor
+* an embedded ApacheDS 2.0 server
+* an LDIF editor
+* an ApacheDS 2.0 configuration editor
+* an OpenDLAP&tm; 2.4 configuration editor
+
+and various utility plugins.
+
+## Prerequisites
+
+You can check about what is needed to be able to start coding on [the Developers' guide](../devezlopers-guide.mdtext).
+
+In any case, you need a Java JDK 7, Eclipse Luna-SR2, Maven 3.2.5, subversion 1.8.8.
+
+## Howtos
+
+* [1 - Using the TableWidget<E> widget](howtos/table-widget.html)
+
+
diff --git a/source/studio/developers-howtos/howtos/table-widget.md b/source/studio/developers-howtos/howtos/table-widget.md
new file mode 100644
index 0000000..08fd5a1
--- /dev/null
+++ b/source/studio/developers-howtos/howtos/table-widget.md
@@ -0,0 +1,464 @@
+---
+title: Table widget
+---
+
+# Table Widget
+
+It's sometime convenient to use a Table which is associated with a list of optionnally ordered elements, with Add/Edit/Delete actions, and up/down actions if the table is ordered. We have such a widget in _org.org.apache.directory.studio.common.ui.widgets_.
+
+The Table which will be exposed looks like this :
+
+ +--------------------------------------+
+ | Element 1 | (Add... )
+ | Element 2 | (Edit...)
+ | | (Delete )
+ +--------------------------------------+
+
+or this, if the elements are ordered
+
+ +--------------------------------------+
+ | Element 1 | (Add... )
+ | Element 2 | (Edit...)
+ | | (Delete )
+ | | ---------
+ | | (Up )
+ | | (Down )
+ +--------------------------------------+
+
+Optionally, the _Edit_ button might be disabled.
+
+Clicking on an element will select it, so that one can delete it.
+
+Last, not least, double clicking on an element will edit it, if allowed. In this case, a dedicated Dialog will be opened.
+
+## Ordered table
+
+Here, we are not talking about the fact that the elements are ordered using some comparator, but the fact that the elements have an associated numeral prefix which is used to order the elements, regardeless of the element's content. This is an OpenLDAP extension, where elements are prefixed with a _{n}_ String, where 'n' is a vlaue between 0 to MAX_INTEGER (but it can also be -1, in one specific case).
+
+Bottom line, when a table is declared as Ordered, we use this prefix (which is shown) to order the elements in the tbale, otherwise we use the _compareTo_ method.
+
+## The Element requirements
+
+First of all, we have to focus on the elements. There are some requirements that such Objects much fulfill :
+
+* Either the element can be compared and cloned natively (like an Enum)
+* or it has to implement those methods (and the _Cloneable_ and _Comparable_ interfaces):
+ * clone
+ * hashCode
+ * equals
+ * compareTo
+ * toString
+
+
+The idea is to be able to find an element in the table using the _equals()_ method, to copy an element, and to order the table content.
+
+## How it works
+
+Basically, we assemble 5 different elements :
+ * A Table
+ * A listener to handle the actions on the table
+ * A Decorator to show the elements in the Table
+ * A Dialog to edit the elements, or to add them
+ * A Wrapper to hold the elements that are stored in the Table
+
+Let see with some examples
+
+### Table with Add/Edit/Delete, no dialog
+
+Internally, we store the data in a _List<E>_ where *E* is the element's type (_TableWidget_ is a generic class). The only thing you need to do when you want to use this widget is to add this code snippet :
+
+
+ /** A TableWidget containing some RootDSE elements */
+ private TableWidget<StringValueWrapper> rootDseTableWidget;
+ ...
+ // Instanciate the TableWidget, associated with a Decorator
+ rootDseTableWidget = new TableWidget<StringValueWrapper>(
+ new StringValueDecorator( composite.getShell(), Messages.getString( "OpenLDAPOptionsPage.RootDSE" ) ) );
+
+ // We want an Edit button, but no Up/Down buttons
+ rootDseTableWidget.createWidgetWithEdit( composite, toolkit );
+ rootDseTableWidget.getControl().setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 2, 1 ) );
+
+ // Associate a listener to this table
+ addModifyListener( rootDseTableWidget, rootDseTableListener );
+
+
+Here, we declare a _TableWidget_, a type of elements (StringValueWrapper), a label provider (used to decorate the elements in the table, if needed).
+
+Last, not least, you create the widget and set its position in your screen.
+
+### The element wrapper
+
+We need to wrap the element in the table in order to expose a few basic functions :
+ * clone
+ * hashCode
+ * equals
+ * compareTo
+ * toString
+
+Here is an exemple, the _StringValueWrapper_, which wrap a simple value, which is itself a String :
+
+ public class StringValueWrapper implements Cloneable, Comparable<StringValueWrapper>
+ {
+ /** The value */
+ private String value;
+
+ /** A flag to tell if the compare should be case sensitive or not */
+ private boolean caseSensitive = true;
+
+ /**
+ * Creates a new instance of StringValueWrapper.
+ *
+ * @param value the value
+ */
+ public StringValueWrapper( String value, boolean caseSensitive )
+ {
+ this.value = value;
+ this.caseSensitive = caseSensitive;
+ }
+
+
+ /**
+ * @return the value
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * @param value the value to set
+ */
+ public void setValue( String value )
+ {
+ this.value = value;
+ }
+
+
+ /**
+ * Clone the current object
+ */
+ public StringValueWrapper clone()
+ {
+ try
+ {
+ return (StringValueWrapper)super.clone();
+ }
+ catch ( CloneNotSupportedException e )
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * @see Object#equals(Object)
+ */
+ public boolean equals( Object that )
+ {
+ // Quick test
+ if ( this == that )
+ {
+ return true;
+ }
+
+ if ( that instanceof StringValueWrapper )
+ {
+ StringValueWrapper thatInstance = (StringValueWrapper)that;
+
+ if ( caseSensitive )
+ {
+ return value.equals( thatInstance.value );
+ }
+ else
+ {
+ return value.equalsIgnoreCase( thatInstance.value );
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /**
+ * @see Object#hashCode()
+ */
+ public int hashCode()
+ {
+ int h = 37;
+
+ if ( value != null )
+ {
+ h += h*17 + value.hashCode();
+ }
+
+ return h;
+ }
+
+
+ /**
+ * @see Comparable#compareTo()
+ */
+ public int compareTo( StringValueWrapper that )
+ {
+ if ( that == null )
+ {
+ return 1;
+ }
+
+ // Check the value
+ if ( Strings.isEmpty( value ) )
+ {
+ return -1;
+ }
+ else
+ {
+ return value.compareToIgnoreCase( that.value );
+ }
+ }
+
+
+ /**
+ * @see Object#toString()
+ */
+ public String toString()
+ {
+ return value;
+ }
+ }
+
+Of course, your implementation may be way more complex, but all in all, the API contract is the same.
+
+### The Decorator
+
+This is just a class that extends the _TableDecorator_ abstract class. The _TableDecorator_ extendss the _LabelProvider_ class and implements the _Comparator_ interface.
+
+Here is an example :
+
+ public class StringValueDecorator extends TableDecorator<StringValueWrapper>
+ {
+ /**
+ * Create a new instance of StringValueDecorator
+ * @param parentShell The parent Shell
+ * @param attributeName the name of the attribute which will contain the value
+ */
+ public StringValueDecorator( Shell parentShell, String attributeName )
+ {
+ setDialog( new StringValueDialog( parentShell, attributeName ) );
+ }
+
+
+ /**
+ * Construct the label for a String.
+ * @param element the Element for which we want the value
+ * @return a String representation of the element
+ */
+ public String getText( Object element )
+ {
+ if ( element instanceof StringValueWrapper )
+ {
+ return ( ( StringValueWrapper ) element ).getValue();
+ }
+
+ return super.getText( element );
+ };
+
+
+ /**
+ * Get the image. We have none
+ * @param element The element for which we want the image
+ * @return The associated Image, or Null
+ */
+ public Image getImage( Object element )
+ {
+ return null;
+ };
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int compare( StringValueWrapper e1, StringValueWrapper e2 )
+ {
+ if ( e1 != null )
+ {
+ if ( e2 == null )
+ {
+ return 1;
+ }
+ else
+ {
+ return e1.compareTo( e2 );
+ }
+ }
+ else
+ {
+ if ( e2 == null )
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ }
+ }
+
+Here, each line in the Table will represent an instance of a _WtringValueWrapper_, with no image. Would you need to add an image before the text, it's just a matter to return this image in the _getImage()_ method.
+
+The constructor takes 2 arguments, the second one will be used in the default Dialog we use to create new String values.
+
+The text is simply constructed using the _toString()_ method, but you may use whatever fits your need.
+
+### The Dialog
+
+This is the complex part, which totally depends on what you want to do. In any case, all the User's Dialog will inherit from the _AddEditDialog_ class, which defines some default actions.
+
+Here is a quick description of this abstract class :
+
+ AddEditDialog<E> extends Dialog
+
+ fields :
+ E editedElement : The element that is edited, if one clicked on the Edit button, or the new element to create for the Add action
+ List<E> elements : The list of elements already in the Table
+ int selectedPosition : If an element has been selected in the Table, contain its position in the _elements_ list
+ boolean isAdd : A flag set to true if the Add button has been clicked.
+ boolean okDisabled : A flag to tell if the OK button has to be disabled (for instance, if the data are invalid while creating or editing an element)
+
+ abstract methods :
+ void addNewElement() : If the Add button is clicked, we ask the specific Dialog to create an empty instance of Element. This method has to be implemented.
+ void initDialog() : read the wrapped element into the dialog's Widgets
+
+
+ public methods :
+ E getEditedElement() : Get the element that is currently being edited.
+ int getSelectedPosition() : Get the selected position, if any
+ boolean isAdd() : Tells if the element is an addition or an edition
+ void setAdd() : This is an Addition
+ void setEdit() : This is an Edition
+ void setEditedElement( E editedElement ) : Set the element that will be edited. Actually, a new instance is created, that will contain a copy of the edited element.
+ void setElements( List<E> elements ) : Keep a copy (not shallow) of the Table content.
+ void setSelectedPosition( int selectedPosition ) : Store the selected position
+
+ protected methods :
+ Control createButtonBar( Composite parent ) : Used to hide the OK button if needed
+ List<E> getElements() : Returns the list of elements
+ void initDialog() : Can be overloaded if the Dialog needs to inject an edited element in the Dialog widgets. Optional.
+
+You generally have to implement the _addNewElement()_ and _initDialog()_ methods in your own Dialog class, then implement all the logic to render your dialog.
+
+Here is how you set up your Dialog instance :
+
+ protected Control createDialogArea( Composite parent )
+ {
+ Composite composite = ( Composite ) super.createDialogArea( parent );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ composite.setLayoutData( gd );
+
+ // StringValue Group
+ Group stringValueGroup = BaseWidgetUtils.createGroup( parent, null, 1 );
+ GridLayout stringValueGroupGridLayout = new GridLayout( 2, false );
+ stringValueGroup.setLayout( stringValueGroupGridLayout );
+ stringValueGroup.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ // String Text
+ BaseWidgetUtils.createLabel( stringValueGroup, attributeName + ":", 1 );
+ stringValue = BaseWidgetUtils.createText( stringValueGroup, "", 1 );
+ stringValue.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
+
+ initDialog();
+ addListeners();
+
+ applyDialogFont( composite );
+
+ return composite;
+ }
+
+Here is what you'll get on the screen when an element is selected :
+
+ +---------------------------------------+
+ | .-----------------------------------. |
+ | | Value : [ ] | |
+ | '-----------------------------------' |
+ | |
+ | (cancel) (OK) |
+ +---------------------------------------+
+
+The rendering can be way more complex though.
+
+### Actions
+
+There are two, three, four or five possible actions on this table :
+* Add
+* Edit (optional)
+* Delete
+* Up (optional)
+* Down (optional)
+
+Let's see how it works.
+
+#### Add action
+
+We will open the Dialog that is provided, and get back a new element which will be exposed in the Table. We also will check that the element is not already present, and if so, no duplicate will be added, except if the table is ordered.
+
+If the table is not ordered, the newly created element will be injected at the right place in the Table : we use the _compareTo_ method to find the position it as to be added in. If the element already exists, it's not added.
+
+If the table is ordered, this is a different story :
+* there is a selected element : the newly created element is added _after_ the selection, and all the following elements' prefix are incremented.
+* we don't have any selected element : the newly created element is added at the end of the Table, and its prefix is the laset element's prefix, plus one.
+
+#### Delete action
+
+The delete action only works for a selected element.
+
+If the Table is ordered, we will update the prefix of the elements after the deleted one, decrementing all of them.
+
+#### Edit action
+
+The edition of an element will replace the selected element by its new value.
+
+If the Table is ordered, the prefix will not be changed. Otherwise, the edited element might be moved to another position, depending on where it fits accordingly to the _compareTo_ method.
+
+#### Up Action
+
+The Up action will move one element up in the table. It's only valid for an ordered Table. Basically, it does nothing more than just exchanging two elements, and sapping their prefix.
+
+#### Down action
+
+The Up action will move one element down in the table. It's only valid for an ordered Table. Basically, it does nothing more than just exchanging two elements, and sapping their prefix.
+### The listener
+
+Last, not least, we have to add a Listener to react on what happens on the table itself.
+
+It's all about post-modification actions. In our case, we want to update the underlaying OpenLDAP configuration :
+
+ private WidgetModifyListener rootDseTableListener = new WidgetModifyListener()
+ {
+ public void widgetModified( WidgetModifyEvent e )
+ {
+ List<String> rootDses = new ArrayList<String>();
+
+ for ( StringValueWrapper rootDse : rootDseTableWidget.getElements() )
+ {
+ rootDses.add( rootDse.getValue() );
+ }
+
+ getConfiguration().getGlobal().setOlcRootDSE( rootDses );
+ }
+ };
+
+But it can be hatever fits your need.
+## Creating a Table with no edit button, or an Ordered table
+
+We have seen how to create a Table with an Edit button. Creating teh other Table's flawors is easy :
+
+* With edit : TableWidget.createWidgetWithEdit( Composite, FormToolkit );
+* No edit : TableWidget.createWidgetNoEdit( Composite, FormToolkit );
+* Ordered, No edit : TableWidget.createOrderedWidgetNoEdit( Composite, FormToolkit );
+* Ordered, with edit : TableWidget.createOrderedWidgetWithEdit( Composite, FormToolkit );
+
+Everything else is the same.
\ No newline at end of file
diff --git a/source/studio/download-old-versions.md b/source/studio/download-old-versions.md
new file mode 100644
index 0000000..c263ec3
--- /dev/null
+++ b/source/studio/download-old-versions.md
@@ -0,0 +1,31 @@
+---
+title: Download Old Versions
+---
+
+# Download Old Versions
+
+Old version can be found in the [archive](https://archive.apache.org/dist/directory/studio/).
+
+> **Note:** We encourage you to verify the integrity of the downloaded file using:
+>
+> * the ASC file (OpenPGP compatible signature) with the [KEYS](https://downloads.apache.org/directory/KEYS) file (code signing keys used to sign the product)
+> * the MD5 file (checksum).
+
+## Verify the integrity of the file
+
+The PGP signatures can be verified using PGP or GPG. First download the [KEYS file](https://downloads.apache.org/directory/KEYS) as well as the asc signature file for the relevant distribution. Then verify the signatures using:
+
+ $ pgpk -a KEYS
+ $ pgpv apache_1.3.24.tar.gz.asc
+
+or
+
+ $ pgp -ka KEYS
+ $ pgp apache_1.3.24.tar.gz.asc
+
+or
+
+ $ gpg --import KEYS
+ $ gpg --verify apache_1.3.24.tar.gz.asc
+
+Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/), [here](http://www.pc-tools.net/win32/freeware/console/), or [here](http://www.slavasoft.com/fsum/).
diff --git a/source/studio/download/download-linux.md b/source/studio/download/download-linux.md
new file mode 100644
index 0000000..f3e6be1
--- /dev/null
+++ b/source/studio/download/download-linux.md
@@ -0,0 +1,108 @@
+---
+title: Downloads for Linux
+---
+
+# Downloads for Linux
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Linux 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86_64.tar.gz ">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86_64.tar.gz">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86_64.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Linux 32 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86.tar.gz.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_1.jpg" width="225" height="141"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Studio for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_linux_2.jpg" width="225" height="150"/></td>
+ <td> </td>
+ <td>Extract the downladed archive and place the extracted folder where you want Apache Directory Studio to be installed.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+Apache Directory Studio requires at least:
+
+* a recent Linux distribution. It has been tested successfully on Ubuntu and Arch Linux.
+* [Java Development Kit](http://jdk.java.net/) 8 or later.
+
+<p> </p>
+
+{{< download-verify >}}ApacheDirectoryStudio-{{< param version_studio >}}-linux.gtk.x86_64.tar.gz{{< /download-verify >}}
diff --git a/source/studio/download/download-macosx.md b/source/studio/download/download-macosx.md
new file mode 100644
index 0000000..41c6116
--- /dev/null
+++ b/source/studio/download/download-macosx.md
@@ -0,0 +1,85 @@
+---
+title: Downloads for macOS
+---
+
+# Downloads for macOS
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## macOS 64 bit
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_1.jpg" width="225" height="120"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Studio for macOS.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_2.jpg" width="225" height="161"/></td>
+ <td> </td>
+ <td>The download appeares in the Downloads folder in Finder. Double-click on the disk image to open it.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_macosx_3.jpg" width="225" height="207"/></td>
+ <td> </td>
+ <td>Drag-and-drop the <em>Apache Directory Studio</em> application on the <em>Applications</em> folder to install it.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+Apache Directory Studio requires at least:
+
+* macOS version 10.10 (Yosemite) or later.
+* [Java Development Kit](http://jdk.java.net/) 8 or later.
+
+<p> </p>
+
+{{< download-verify >}}ApacheDirectoryStudio-{{< param version_studio >}}-macosx.cocoa.x86_64.dmg{{< /download-verify >}}
diff --git a/source/studio/download/download-sources.md b/source/studio/download/download-sources.md
new file mode 100644
index 0000000..3f1f8a1
--- /dev/null
+++ b/source/studio/download/download-sources.md
@@ -0,0 +1,47 @@
+---
+title: Download for Sources
+---
+
+# Download for Sources
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-src.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+{{< download-verify >}}ApacheDirectoryStudio-{{< param version_studio >}}-src.zip{{< /download-verify >}}
diff --git a/source/studio/download/download-windows.md b/source/studio/download/download-windows.md
new file mode 100644
index 0000000..693e74c
--- /dev/null
+++ b/source/studio/download/download-windows.md
@@ -0,0 +1,178 @@
+---
+title: Downloads for Windows
+---
+
+## Downloads for Windows
+
+<p>
+ [if-any logo]
+ <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
+ [end]
+ We suggest the following mirror site for your download:
+</p>
+
+## Windows 64 bit installer
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Windows 64 bit zip archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Windows 32 bit installer
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe.sha256">SHA256</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.exe.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+## Windows 32 bit zip archive
+
+<p>
+ <div class="download">
+ <table width="100%" class="noBorder">
+ <tr>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip">
+ <img src="/images/download.png" width="32" height="32" border="0"/>
+ </a>
+ </td>
+ <td> </td>
+ <td>
+ <a href="[preferred]directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip">
+ <strong>
+ [preferred][...]/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip
+ </strong>
+ </a>
+ </td>
+ <td align="right">
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip.asc">ASC</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip.sha256">SHA512</a>]
+ [<a href="https://downloads.apache.org/directory/studio/{{< param version_studio >}}/ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86.zip.sha512">SHA512</a>]
+ </td>
+ </tr>
+ </table>
+ </div>
+</p>
+
+<p> </p>
+
+{{< download-change-mirror >}}
+
+<p> </p>
+
+# Installation
+
+<p>
+ <table class="noBorder">
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_1.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_1.jpg" width="225" height="141"/></td>
+ <td> </td>
+ <td>Click on the link above to download Apache Directory Studio for Windows.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_2.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_2.jpg" width="225" height="150"/></td>
+ <td> </td>
+ <td>Double-click on the installer to open it.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_3.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_3.jpg" width="225" height="180"/></td>
+ <td> </td>
+ <td>You may be prompted to confirm that you are sure you want to open the installer. Answer <em>Run</em> if such a popup is displayed.</td>
+ </tr>
+ <tr>
+ <td width="64" height="64"><img src="/images/figure_4.gif" width="64" height="64"/></td>
+ <td><img src="images/installation_windows_4.jpg" width="225" height="176"/></td>
+ <td> </td>
+ <td>Follow the instructions of the installer to complete the installation.</td>
+ </tr>
+ </table>
+</p>
+
+<p> </p>
+
+# Requirements
+
+Apache Directory Studio requires at least:
+
+* a recent Windows version.
+* [Java Development Kit](http://jdk.java.net/) 8 or later.
+
+<p> </p>
+
+{{< download-verify >}}ApacheDirectoryStudio-{{< param version_studio >}}-win32.win32.x86_64.exe{{< /download-verify >}}
diff --git a/source/studio/downloads.md b/source/studio/downloads.md
new file mode 100644
index 0000000..1bd402e
--- /dev/null
+++ b/source/studio/downloads.md
@@ -0,0 +1,44 @@
+---
+title: Downloads
+---
+
+# Downloads
+
+Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with the ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.
+
+## Apache Directory Studio RCP Application
+
+Apache Directory Studio is a multi-platform application and runs on macOS, Linux and Windows.
+
+Please select the download corresponding to your operating system:
+
+* ![Download](../images/download-macosx.png) [Download for macOS](download/download-macosx.html)
+
+* ![Download](../images/download-linux.png) [Download for Linux](download/download-linux.html)
+
+* ![Download](../images/download-windows.png) [Download for Windows](download/download-windows.html)
+
+
+On macOS you can also install Apache Directory Studio via [MacPorts][1]:
+
+
+> `# sudo port install directory-studio`
+
+## Plugins for Eclipse
+
+You can also install plugins for Eclipse using our update site (requires Java 8 or newer and a recent Eclipse version).
+
+The URL of our update site is **[https://directory.apache.org/studio/update](https://directory.apache.org/studio/update)**
+
+Learn how to [install Apache Directory Studio plugins in Eclipse](installation-in-eclipse.html) [![Download](../images/download-eclipse.png)](installation-in-eclipse.html)
+
+## Sources
+
+The sources of Apache Directory Studio and its plugins are available [here](download/download-sources.html) [![Download](../images/download-sources.png)](download/download-sources.html).
+
+## Old Versions
+
+You can download old versions of Apache Directory Studio (or Apache LDAP Studio) [here](download-old-versions.html).
+
+
+ [1]: https://www.macports.org/
diff --git a/source/studio/faqs.md b/source/studio/faqs.md
new file mode 100644
index 0000000..99c4334
--- /dev/null
+++ b/source/studio/faqs.md
@@ -0,0 +1,85 @@
+---
+title: FAQs
+---
+
+# FAQs
+
+{{% toc %}}
+
+### How to set the language of Studio?
+
+Studio currentlly is translated in three languages: English (en), French (fr) and German (de). When starting Studio, the language setting of your operation system is used to determine the language of Studio (On linux, the LC_CTYPE environment variable is used to determinate the default language).
+
+However it is possible to force another language. Add the following content to the _ApacheDirectoryStudio.ini_ file (before the "-vmargs" line):
+
+ -nl
+ en
+
+Please notice the line break between -nl and the language.
+
+
+### When browsing and expanding an entry, Studio only shows 1000 child entries.
+
+Studio uses a client-side count limit when browsing the DIT. This limit is defined in the connection properties. See
+[Connection Properties](./users-guide/ldap_browser/tools_connection_properties.html#tools_connection_properties_browser_options) how to change it.
+
+
+### How to set the Java VM to use?
+
+Add the following content to _ApacheDirectoryStudio.ini_ file (before the "-vmargs" line):
+
+ -vm
+ <path to java executable>
+
+Please notice the line break between -vm and the path.
+
+Studio requires Java 8 or newer.
+
+MacOS notes:
+
+* You need to install the JDK (Java Development Kit), the JRE is not enough!
+* You can find out the Java home directories with `/usr/libexec/java_home -V`, append `/bin/java` to the path
+
+
+### How to increase the heap memory?
+
+Add the following content to _ApacheDirectoryStudio.ini_ file:
+
+ -vmargs
+ -Xms128m
+ -Xmx512m
+
+Please notice the line breaks.
+
+
+### Location of `ApacheDirectoryStudio.ini` file
+
+* On Linux: in the installation folder
+* On macOS: `/Applications/ApacheDirectoryStudio.app/Contents/Eclipse/ApacheDirectoryStudio.ini`
+* On Windows: in the installation folder
+
+
+### Location of Apache Directory Studio settings
+
+The settings are located per default in your home directory under the directory _.ApacheDirectoryStudio_.
+
+The file containing all connections is:
+
+ ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.connection.core/connections.xml
+
+The file containing all searches and bookmarks is:
+
+ ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.ldapbrowser.core/browserconnections.xml
+
+The file containing the history of the connection wizard (recently used hosts and bind users) is:
+
+ ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.connection.ui/dialog_settings.xml
+
+The file containing the history of search settings (recently used DNs, filters, returning attributes) is:
+
+ ~/.ApacheDirectoryStudio/.metadata/.plugins/org.apache.directory.studio.ldapbrowser.common/dialog_settings.xml
+
+There are some more _dialog_settings.xml_ files in the other plugins directories.
+
+Note: the location of the settings directory could be configured by changing the parameter "osgi.instance.area.default" in configuration/config.ini.
+
diff --git a/source/studio/installation-in-eclipse.md b/source/studio/installation-in-eclipse.md
new file mode 100644
index 0000000..64fe067
--- /dev/null
+++ b/source/studio/installation-in-eclipse.md
@@ -0,0 +1,76 @@
+---
+title: Installing Apache Directory Studio in Eclipse
+---
+
+# Installing Apache Directory Studio in Eclipse
+
+> **Note:**
+>
+> The Apache Directory Studio plugins require Java 8 or newer and a recent Eclipse version.
+
+From workbench menu choose **Help > Install New Software...**.
+
+<center>![Help -> Install New Software...](installation-in-eclipse.data/1-menu.png)</center>
+
+In the opened wizard input `https://directory.apache.org/studio/update` into the **Work with:** text field and press **Enter**.
+
+
+After a while the table below will show the available categories.
+
+Choose **Apache Directory Studio**. You don't need to choose **Apache Directory Studio Dependencies**, the required dependencies will be automatically installed if required. Click **Next**.
+
+<center>![Available Software](installation-in-eclipse.data/2-available-software.png)</center>
+
+Review the installation details and click **Next**.
+
+<center>![Install Details](installation-in-eclipse.data/3-install-details.png)</center>
+
+Accept the license agreement, Apache Directory Studio is licensed under the Apache License, Version 2.0. Click **Finish**.
+
+<center>![Review Licenses](installation-in-eclipse.data/4-review-licenses.png)</center>
+
+Apache Directory Studio plugins are not signed yet, so you have to agree to the warning.
+
+<center>![Warning](installation-in-eclipse.data/5-warning.png)</center>
+
+You also have to trust the JCE Code Signing CA.
+
+<center>![Certificates](installation-in-eclipse.data/6-certificates.png)</center>
+
+After installation it is recommended to restart Eclipse.
+
+<!--
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_1.png)</center>
+
+Next, please specify the Apache Directory Studio update site. Click the **New Remote Site...** button. In the dialog input the following and press **OK**:
+
+Name: **Apache Directory Studio Update Site**
+URL: **[https://directory.apache.org/studio/update](https://directory.apache.org/studio/update)**
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_2.png)</center>
+
+Make sure the new update site is checked an press **Finish**.
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_3.png)</center>
+
+Now the install manager checks the update site and presents the search results. Select the feature you want to install and click **Next**.
+In our example, we have selected the LDAP Browser.
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_4.png)</center>
+
+Accept the license agreement, the Apache Directory Studio Browser is distributed under the Apache License, Version 2.0 and click **Next**.
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_5.png)</center>
+
+In the next dialog ensure that the Apache Directory Studio features you have choosen are selected (here the LDAP Browser) and click to **Finish**.
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_6.png)</center>
+
+Now the install manager loads the necessary files. When download is finished you have to verify the installation, please click to **Install**.
+
+<center>![Download](installation-in-eclipse.data/gettingstarted_install_7.png)</center>
+
+After installation it is recommended to restart the Eclipse workbench.
+
+-->
diff --git a/source/studio/internationalization.md b/source/studio/internationalization.md
new file mode 100644
index 0000000..cc3fae5
--- /dev/null
+++ b/source/studio/internationalization.md
@@ -0,0 +1,35 @@
+---
+title: Internationalization (i18n)
+---
+
+# Internationalization (i18n)
+
+It exists a good guide on internationalization (and externalizing string) at [How to Internationalize your Eclipse Plug-In](http://www.eclipse.org/articles/Article-Internationalization/how2I18n.html).
+
+## Translating the current code
+
+Translating Studio is not an simple task. There are many files to translate :
+
+* messages.properties
+* plugin.properties
+* help files
+* some other semi-random files ;)
+
+## When writing code...
+
+When doing the translation for a specific language please add in any case the messages_\{language\}.properties file of the language to the resource folder, even if it's empty (meaning all translations are taken from the messages.properties file). This will show to other developers, that you've thought about translation but no one was needed.
+
+Notes:
+
+* The message".properties files are located in the src/main/java/** folder (not following maven's philosophy) to be able to use Eclipse' 'Externalize Strings' wizard also later on. Following maven philosophy (*.properties in src/main/resources) the wizard doesn't finds the created properties files anymore.
+* To replace placeholders we use Eclipse's NLS.bind function, e.g.
+
+ From messages.properties:
+ EditAliasesDialog.TheAliasBegin=The alias "{0}" is invalid.
+
+ Will look like in Java code:
+ NLS.bind( Messages.getString( "EditAliasesDialog.TheAliasBegin" ), new String[] { alias } ) );
+
+Hints:
+
+* Using Eclipse' Property-Editor in the 'Properties' view will prevent you from getting into troubles with uncomment characters like e.g. the German 'Umlauts'
diff --git a/source/studio/news.md b/source/studio/news.md
new file mode 100644
index 0000000..dea0d9a
--- /dev/null
+++ b/source/studio/news.md
@@ -0,0 +1,534 @@
+---
+title: News
+---
+
+# News
+
+<h2 class="news">Apache Directory Studio 2.0-0-M14 released <em>posted on September 8th, 2018</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M14, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M14 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
+
+Backward incompatible changes:
+
+* Existing ApacheDS servers (2.0.0-M24) don't work after update
+* Manual step may be required to make password keystore accessible, see [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179).
+
+Here are the release notes for Apache Directory Studio 2.0.0-M14:
+
+* [DIRSTUDIO-987](https://issues.apache.org/jira/browse/DIRSTUDIO-987) - strange behaviour with multi-valued RDN
+* [DIRSTUDIO-1057](https://issues.apache.org/jira/browse/DIRSTUDIO-1057) - Update site doesn't work with https
+* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
+* [DIRSTUDIO-1148](https://issues.apache.org/jira/browse/DIRSTUDIO-1148) - IOConsole Updater - An internal error has occurred.Java heap space
+* [DIRSTUDIO-1151](https://issues.apache.org/jira/browse/DIRSTUDIO-1151) - DN with backslash not displayed
+* [DIRSTUDIO-1157](https://issues.apache.org/jira/browse/DIRSTUDIO-1157) - Values cannot be modified by text editor
+* [DIRSTUDIO-1163](https://issues.apache.org/jira/browse/DIRSTUDIO-1163) - Apache Directory Studio not starting on my MacBookPro running MacOS 10.13
+* [DIRSTUDIO-1166](https://issues.apache.org/jira/browse/DIRSTUDIO-1166) - Studio crashes frequently Ever since MacOS High Sierra upgrade
+* [DIRSTUDIO-1172](https://issues.apache.org/jira/browse/DIRSTUDIO-1172) - Studio doesn't display entries due to Invalid DN exception, but DN is compliant with RFC4514.
+* [DIRSTUDIO-1174](https://issues.apache.org/jira/browse/DIRSTUDIO-1174) - Directory Studio startup very slow due to schema LDIF processing
+* [DIRSTUDIO-1179](https://issues.apache.org/jira/browse/DIRSTUDIO-1179) - java.io.IOException: Invalid secret key format after Java update
+* [DIRSTUDIO-1180](https://issues.apache.org/jira/browse/DIRSTUDIO-1180) - Value changed by Text Editor doesn't save
+* [DIRSTUDIO-1184](https://issues.apache.org/jira/browse/DIRSTUDIO-1184) - ClassDef not found for @PostConstruct and @PreDestroy for JDK >=9
+* [DIRSTUDIO-1185](https://issues.apache.org/jira/browse/DIRSTUDIO-1185) - OS reported defective Software and needs to be deleted
+* [DIRSTUDIO-1191](https://issues.apache.org/jira/browse/DIRSTUDIO-1191) - Apache Directory Studio (Version: 2.0.0.v20170904-M13) suddenly crashes while browsing in MacOS (10.13.6)
+* [DIRSTUDIO-1156](https://issues.apache.org/jira/browse/DIRSTUDIO-1156) - Text Editor usability improvements
+* [DIRSTUDIO-1175](https://issues.apache.org/jira/browse/DIRSTUDIO-1175) - Description for 1.3.18.0.2.32.102 - 1.3.18.0.2.32.104 missing
+* [DIRSTUDIO-1176](https://issues.apache.org/jira/browse/DIRSTUDIO-1176) - Sign dmg in MacOS release
+* [DIRSTUDIO-1177](https://issues.apache.org/jira/browse/DIRSTUDIO-1177) - Enhance default editor mappings for eDirectory/Identity Manager
+* [DIRSTUDIO-1186](https://issues.apache.org/jira/browse/DIRSTUDIO-1186) - Make Studio Java 11 ready
+* [DIRSTUDIO-1187](https://issues.apache.org/jira/browse/DIRSTUDIO-1187) - Disable JNDI connection provider for Java 9+
+* [DIRSTUDIO-1192](https://issues.apache.org/jira/browse/DIRSTUDIO-1192) - Change update site to use https
+* [DIRSTUDIO-1193](https://issues.apache.org/jira/browse/DIRSTUDIO-1193) - Cleanup documenation
+
+<h2 class="news">Apache Directory Studio 2.0-0-M13 released <em>posted on September 4th, 2017</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M13, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M13 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
+
+Here are the release notes for Apache Directory Studio 2.0.0-M13:
+
+* [DIRSTUDIO-1120](https://issues.apache.org/jira/browse/DIRSTUDIO-1120) - Checkbox active protocols
+* [DIRSTUDIO-1127](https://issues.apache.org/jira/browse/DIRSTUDIO-1127) - Configuration of Kerberos and ChangePassword port is not working
+* [DIRSTUDIO-1129](https://issues.apache.org/jira/browse/DIRSTUDIO-1129) - Referrals do not work in v2
+* [DIRSTUDIO-1130](https://issues.apache.org/jira/browse/DIRSTUDIO-1130) - Password from Keystore not used
+* [DIRSTUDIO-1133](https://issues.apache.org/jira/browse/DIRSTUDIO-1133) - Potential NPE issue
+* [DIRSTUDIO-1134](https://issues.apache.org/jira/browse/DIRSTUDIO-1134) - Boolean Attribute Addition with no value causes Directory Studio crash on Mac
+* [DIRSTUDIO-1140](https://issues.apache.org/jira/browse/DIRSTUDIO-1140) - Apple Sierra shows corrupted app when launching Studio
+* [DIRSTUDIO-1143](https://issues.apache.org/jira/browse/DIRSTUDIO-1143) - Stack trace when saving configuration
+* [DIRSTUDIO-1147](https://issues.apache.org/jira/browse/DIRSTUDIO-1147) - bad links studio welcome overview page
+* [DIRSTUDIO-1131](https://issues.apache.org/jira/browse/DIRSTUDIO-1131) - Update for OIDDescriptions.properties
+* [DIRSTUDIO-1144](https://issues.apache.org/jira/browse/DIRSTUDIO-1144) - Upgrade to Eclipse Neon.3
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M12 released <em>posted on November 1st, 2016</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M12, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M12 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
+
+Here are the release notes for Apache Directory Studio 2.0.0-M12:
+
+* [DIRSTUDIO-738](https://issues.apache.org/jira/browse/DIRSTUDIO-738) - Modular Crypt Format Salts are incorrectly displayed
+* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
+* [DIRSTUDIO-1026](https://issues.apache.org/jira/browse/DIRSTUDIO-1026) - Searching for an AT or an OC using an alternate name does not find it
+* [DIRSTUDIO-1050](https://issues.apache.org/jira/browse/DIRSTUDIO-1050) - High CPU load when opening attribute editor with Eclipse Mars
+* [DIRSTUDIO-1075](https://issues.apache.org/jira/browse/DIRSTUDIO-1075) - ADS does not work with Oracle JRE 9
+* [DIRSTUDIO-1080](https://issues.apache.org/jira/browse/DIRSTUDIO-1080) - Unable to save Server-Configuration: ERR_55 Trying to remove an non-existant attribute: attributetype
+* [DIRSTUDIO-1081](https://issues.apache.org/jira/browse/DIRSTUDIO-1081) - Unable to save any configuration with apacheDS 2.0 and apache studio 2.0 M10
+* [DIRSTUDIO-1082](https://issues.apache.org/jira/browse/DIRSTUDIO-1082) - 'Save configuration' encountered a problem
+* [DIRSTUDIO-1083](https://issues.apache.org/jira/browse/DIRSTUDIO-1083) - Unable to save Configuration
+* [DIRSTUDIO-1085](https://issues.apache.org/jira/browse/DIRSTUDIO-1085) - "Show Default Schema" doesn't seem to do anything
+* [DIRSTUDIO-1090](https://issues.apache.org/jira/browse/DIRSTUDIO-1090) - Sorting by value not being applied
+* [DIRSTUDIO-1091](https://issues.apache.org/jira/browse/DIRSTUDIO-1091) - Apache DS M10 hangs at 14% when connectiing on Windows 10
+* [DIRSTUDIO-1095](https://issues.apache.org/jira/browse/DIRSTUDIO-1095) - Preferences : Connections : Certificates => java.lang.NullPointer
+* [DIRSTUDIO-1098](https://issues.apache.org/jira/browse/DIRSTUDIO-1098) - Refresh of entry causes: "Unhandled event loop exception"
+* [DIRSTUDIO-1100](https://issues.apache.org/jira/browse/DIRSTUDIO-1100) - Race condition.
+* [DIRSTUDIO-1101](https://issues.apache.org/jira/browse/DIRSTUDIO-1101) - Can't disable "Allow Anonymous Access"
+* [DIRSTUDIO-1108](https://issues.apache.org/jira/browse/DIRSTUDIO-1108) - Getting Invalid Certificate for userCertificate;binary entry when connecting with LDAPS, LDAP works fine
+* [DIRSTUDIO-1111](https://issues.apache.org/jira/browse/DIRSTUDIO-1111) - Unable to connect to LDS connected to Active Directory over SSL
+* [DIRSTUDIO-1112](https://issues.apache.org/jira/browse/DIRSTUDIO-1112) - NullPointerException when clicking a certificate on the Certificate Validation preference page
+* [DIRSTUDIO-1114](https://issues.apache.org/jira/browse/DIRSTUDIO-1114) - Bad encoding used in text editor for binary data
+* [DIRSTUDIO-1115](https://issues.apache.org/jira/browse/DIRSTUDIO-1115) - Value editor settings are not used and the menu displays wrong entries
+* [DIRSTUDIO-1116](https://issues.apache.org/jira/browse/DIRSTUDIO-1116) - Attribute not sorted alphabetically for multiple entries
+* [DIRSTUDIO-1121](https://issues.apache.org/jira/browse/DIRSTUDIO-1121) - Performance penalty as editor input is always set twice
+* [DIRSTUDIO-1118](https://issues.apache.org/jira/browse/DIRSTUDIO-1118) - Add menu item to repair ApacheDS partitions
+* [DIRSTUDIO-1093](https://issues.apache.org/jira/browse/DIRSTUDIO-1093) - Upgrade to Eclipse Mars.2
+* [DIRSTUDIO-1022](https://issues.apache.org/jira/browse/DIRSTUDIO-1022) - Installers
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M10 released <em>posted on January 2nd, 2016</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M10, the next milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M10 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
+
+Note: This version fixes a security issue (CVE-2015-5349) discovered by Muhammad Shahmeer Amir. The CSV export didn’t escape the fields properly. Malicious users can put specially crafted values into the LDAP server. When a user exports that data into CSV formatted file, and subsequently opens it with a spreadsheet application, the data is interpreted as a formula and executed. Users should upgrade to Apache Directory Studio 2.0.0-M10.
+
+Here are the release notes for Apache Directory Studio 2.0.0-M10:
+
+* CVE-2015-5349 - Command Injection through LDAP CSV export
+* [DIRSTUDIO-1060](https://issues.apache.org/jira/browse/DIRSTUDIO-1060) - Exported OpenLDAP schema has syntax errors
+* [DIRSTUDIO-1061](https://issues.apache.org/jira/browse/DIRSTUDIO-1061) - RawSchemaDefinition always shows single hyphen/dash (empty) for attributes or classes
+* [DIRSTUDIO-1068](https://issues.apache.org/jira/browse/DIRSTUDIO-1068) - Bundles are not resolved on Eclipse Mars
+* [DIRSTUDIO-1077](https://issues.apache.org/jira/browse/DIRSTUDIO-1077) - Logging for embedded ApacheDS servers broken (log4j.properties is deleted)
+* [DIRSTUDIO-1079](https://issues.apache.org/jira/browse/DIRSTUDIO-1079) - Creating a new entry using an existing one fails because teh entryCSN at is being copied
+* [DIRSTUDIO-1065](https://issues.apache.org/jira/browse/DIRSTUDIO-1065) - Have a better error message when the java version is wrong
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M9 released <em>posted on June 11th, 2015</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M9, the ninth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M9 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site: <https://directory.apache.org/studio/update/>
+
+Here are a few highlights of this new version:
+
+* The RCP application is based on the latest version of Eclipse (4.4 aka Luna).
+* Changed the update site to 'p2' format.
+* Added support for ApacheDS 2.0.0-M20 configuration and integrated it in the LDAP Servers plugin.
+
+Here are the release notes for Apache Directory Studio 2.0.0-M9:
+
+Bug
+
+* [DIRSTUDIO-815](https://issues.apache.org/jira/browse/DIRSTUDIO-815) - Tiny translation error [DE]
+* [DIRSTUDIO-819](https://issues.apache.org/jira/browse/DIRSTUDIO-819) - Cannot open entries with DNs with UTF8 characters (Active Directory)
+* [DIRSTUDIO-836](https://issues.apache.org/jira/browse/DIRSTUDIO-836) - Search for attributes with underscore "_" in attribute name eg. attr_name is not possible
+* [DIRSTUDIO-855](https://issues.apache.org/jira/browse/DIRSTUDIO-855) - Some logical site artifact paths do not exist in site.xml / Apache Directory Studio 2.X Update Site / Nexus P2 Update Site Proxy
+* [DIRSTUDIO-860](https://issues.apache.org/jira/browse/DIRSTUDIO-860) - Apache Directory Studio Update Site ZIP Archive not installable in Eclipse Indigo
+* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
+* [DIRSTUDIO-922](https://issues.apache.org/jira/browse/DIRSTUDIO-922) - Eclipse plugin for version 2.0.0-M7 not installing correctly
+* [DIRSTUDIO-932](https://issues.apache.org/jira/browse/DIRSTUDIO-932) - NPE while importing an ApacheDS 2.0 configuration from within the editor
+* [DIRSTUDIO-934](https://issues.apache.org/jira/browse/DIRSTUDIO-934) - Exporting the configuration from the ApacheDS 2.0 Configuration Editor should not change the input
+* [DIRSTUDIO-938](https://issues.apache.org/jira/browse/DIRSTUDIO-938) - LDAP Browser shows non ascii symbols as escaped
+* [DIRSTUDIO-948](https://issues.apache.org/jira/browse/DIRSTUDIO-948) - Sorting search results does not work with over 1000 results
+* [DIRSTUDIO-950](https://issues.apache.org/jira/browse/DIRSTUDIO-950) - Add support for PKCS5S2 hashing mechanism in Password Dialog
+* [DIRSTUDIO-955](https://issues.apache.org/jira/browse/DIRSTUDIO-955) - Quick search one/subtree scope button is not sticky/always defaults to "one" when starting DS
+* [DIRSTUDIO-958](https://issues.apache.org/jira/browse/DIRSTUDIO-958) - Exporting schemas as OpenLDAP files outputs entries in random order
+* [DIRSTUDIO-959](https://issues.apache.org/jira/browse/DIRSTUDIO-959) - Exporting schemas as OpenLDAP files does not use proper escaping
+* [DIRSTUDIO-961](https://issues.apache.org/jira/browse/DIRSTUDIO-961) - Crash during loading after recent uplate of libraries on Ubuntu
+* [DIRSTUDIO-962](https://issues.apache.org/jira/browse/DIRSTUDIO-962) - Crash at startup : gtk_widget_get_tooltip_text
+* [DIRSTUDIO-963](https://issues.apache.org/jira/browse/DIRSTUDIO-963) - Why UTF-8 is escaped in DN strings since 2.0.0?
+* [DIRSTUDIO-964](https://issues.apache.org/jira/browse/DIRSTUDIO-964) - Fonts look ugly on Mac with Retina Display
+* [DIRSTUDIO-965](https://issues.apache.org/jira/browse/DIRSTUDIO-965) - SIGSEGV on Startup
+* [DIRSTUDIO-966](https://issues.apache.org/jira/browse/DIRSTUDIO-966) - NullPointerException after expanding LDAP tree and "Error notifying a preference change listener" in "attr/val quick filter"
+* [DIRSTUDIO-967](https://issues.apache.org/jira/browse/DIRSTUDIO-967) - Timeout occurs during LDAP search
+* [DIRSTUDIO-970](https://issues.apache.org/jira/browse/DIRSTUDIO-970) - gui quit whithout any prompt
+* [DIRSTUDIO-979](https://issues.apache.org/jira/browse/DIRSTUDIO-979) - Crash with port already in use issues
+* [DIRSTUDIO-983](https://issues.apache.org/jira/browse/DIRSTUDIO-983) - Package org.eclipse.update has been removed in Eclipse 4.2
+* [DIRSTUDIO-988](https://issues.apache.org/jira/browse/DIRSTUDIO-988) - Studio plugins don't work in Eclipse Luna
+* [DIRSTUDIO-993](https://issues.apache.org/jira/browse/DIRSTUDIO-993) - Directory studio stops after a few commands issued
+* [DIRSTUDIO-999](https://issues.apache.org/jira/browse/DIRSTUDIO-999) - Fails to start after upgrade to CentOS 6.6/cairo 1.8.8-3.1
+* [DIRSTUDIO-1000](https://issues.apache.org/jira/browse/DIRSTUDIO-1000) - LDAP perspective not opening on STS 3.6.2
+* [DIRSTUDIO-1001](https://issues.apache.org/jira/browse/DIRSTUDIO-1001) - Unable to install in Luna
+* [DIRSTUDIO-1012](https://issues.apache.org/jira/browse/DIRSTUDIO-1012) - Wrong USAGE for 9 passwordPolicy attributes
+* [DIRSTUDIO-1014](https://issues.apache.org/jira/browse/DIRSTUDIO-1014) - Cannot remove the 'finished operations' in the progress pane
+* [DIRSTUDIO-1018](https://issues.apache.org/jira/browse/DIRSTUDIO-1018) - Adding a new LDIF file directly fails with an error "can't find IDfind.ext"
+* [DIRSTUDIO-1020](https://issues.apache.org/jira/browse/DIRSTUDIO-1020) - Fail to launch
+* [DIRSTUDIO-1038](https://issues.apache.org/jira/browse/DIRSTUDIO-1038) - Dispose the various org.eclipse.swt.graphics.* objects we use
+* [DIRSTUDIO-1039](https://issues.apache.org/jira/browse/DIRSTUDIO-1039) - SWTBot test suite hangs on opening connection
+* [DIRSTUDIO-1040](https://issues.apache.org/jira/browse/DIRSTUDIO-1040) - Job found still running after platform shutdown
+* [DIRSTUDIO-1042](https://issues.apache.org/jira/browse/DIRSTUDIO-1042) - Fix logging system
+* [DIRSTUDIO-1043](https://issues.apache.org/jira/browse/DIRSTUDIO-1043) - First open of LDIF editor fails
+* [DIRSTUDIO-1045](https://issues.apache.org/jira/browse/DIRSTUDIO-1045) - New Connection problem - ERR_04269 ATTRIBUTE_TYPE for OID ads-basedn does not exist
+* [DIRSTUDIO-1047](https://issues.apache.org/jira/browse/DIRSTUDIO-1047) - No BrowserViewUniversalListener.connectionOpened null checks
+
+Improvement
+
+* [DIRSTUDIO-425](https://issues.apache.org/jira/browse/DIRSTUDIO-425) - Please provide the eclipse update site as zipfile
+* [DIRSTUDIO-937](https://issues.apache.org/jira/browse/DIRSTUDIO-937) - No password confirmation while changing it
+* [DIRSTUDIO-940](https://issues.apache.org/jira/browse/DIRSTUDIO-940) - Have schema editor populate creatorsName attribute for new objects (needed by ApacheDS)
+* [DIRSTUDIO-941](https://issues.apache.org/jira/browse/DIRSTUDIO-941) - Friendly name for attribute syntax not shown when creating new attribute
+* [DIRSTUDIO-942](https://issues.apache.org/jira/browse/DIRSTUDIO-942) - Description for OID 1.3.18.0.2.32.99 missing
+* [DIRSTUDIO-980](https://issues.apache.org/jira/browse/DIRSTUDIO-980) - Make the new schema element visible withoit needing to click refresh in an obscure popup...
+* [DIRSTUDIO-985](https://issues.apache.org/jira/browse/DIRSTUDIO-985) - member;Range
+* [DIRSTUDIO-1003](https://issues.apache.org/jira/browse/DIRSTUDIO-1003) - The "Open Configuration" function is broken and doesn't work
+* [DIRSTUDIO-1041](https://issues.apache.org/jira/browse/DIRSTUDIO-1041) - Headless run of SWTBot tests
+
+New Feature
+
+* [DIRSTUDIO-756](https://issues.apache.org/jira/browse/DIRSTUDIO-756) - Provide a P2 repository
+* [DIRSTUDIO-949](https://issues.apache.org/jira/browse/DIRSTUDIO-949) - Add the ability to configure a Mavibot partition
+
+Task
+
+* [DIRSTUDIO-646](https://issues.apache.org/jira/browse/DIRSTUDIO-646) - Exclude ".gitignore" from source distribution
+* [DIRSTUDIO-995](https://issues.apache.org/jira/browse/DIRSTUDIO-995) - Migrate build system to use Tycho
+* [DIRSTUDIO-1005](https://issues.apache.org/jira/browse/DIRSTUDIO-1005) - Cleanup ApacheDS plugins
+* [DIRSTUDIO-1006](https://issues.apache.org/jira/browse/DIRSTUDIO-1006) - Fix ODF export
+* [DIRSTUDIO-1007](https://issues.apache.org/jira/browse/DIRSTUDIO-1007) - Replace org.eclipse.update.*
+* [DIRSTUDIO-1009](https://issues.apache.org/jira/browse/DIRSTUDIO-1009) - Check legal files
+* [DIRSTUDIO-1010](https://issues.apache.org/jira/browse/DIRSTUDIO-1010) - Hide unwanted UI items contributed by org.eclipse.* plugins
+* [DIRSTUDIO-1016](https://issues.apache.org/jira/browse/DIRSTUDIO-1016) - Adapt ApacheDS plugins to new configuration scheme
+* [DIRSTUDIO-1051](https://issues.apache.org/jira/browse/DIRSTUDIO-1051) - Update developer documentation
+* [DIRSTUDIO-1021](https://issues.apache.org/jira/browse/DIRSTUDIO-1021) - Enable tests
+* [DIRSTUDIO-1023](https://issues.apache.org/jira/browse/DIRSTUDIO-1023) - Generate P2 repository / update site
+* [DIRSTUDIO-1024](https://issues.apache.org/jira/browse/DIRSTUDIO-1024) - Define release process
+* [DIRSTUDIO-1025](https://issues.apache.org/jira/browse/DIRSTUDIO-1025) - Cleanup after Tycho Migration
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M8 released <em>posted on July 4th, 2013</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M8, the eighth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M8 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are a few highlights of this new version:
+
+* Fixed major issues related to the Schema Editor and object classes not displaying properly.
+* Fixed the support for SSHA2 in Password Editor.
+* Added support for ApacheDS 2.0.0-M14 configuration and integrated it in the LDAP Servers plugin.
+
+Here are the release notes for Apache Directory Studio 2.0.0-M8:
+
+Bug
+
+* [DIRSTUDIO-788](https://issues.apache.org/jira/browse/DIRSTUDIO-788) - Date and Time editor incorrect time format for eDirectory
+* [DIRSTUDIO-792](https://issues.apache.org/jira/browse/DIRSTUDIO-792) - Batch operation Next button inactive
+* [DIRSTUDIO-868](https://issues.apache.org/jira/browse/DIRSTUDIO-868) - Do not send an unbind request if the authentication fails
+* [DIRSTUDIO-911](https://issues.apache.org/jira/browse/DIRSTUDIO-911) - Object classes not visible within Schema View of OS X
+* [DIRSTUDIO-912](https://issues.apache.org/jira/browse/DIRSTUDIO-912) - No connection pre-selected when DIT, Searches or Bookmarks is selected in the LDAP Brower view and the wizard is accessed via 'File' > 'Import' menu
+* [DIRSTUDIO-917](https://issues.apache.org/jira/browse/DIRSTUDIO-917) - Exporting for ApacheDS an AT with a not-set syntax length results in 'm-length: 0' output in the resulting LDIF file
+* [DIRSTUDIO-918](https://issues.apache.org/jira/browse/DIRSTUDIO-918) - Wrong error message in Import LDIF wizard when no connection is selected
+* [DIRSTUDIO-919](https://issues.apache.org/jira/browse/DIRSTUDIO-919) - Invalid thread access when saving an new ApacheDS 2.0 configuration file
+* [DIRSTUDIO-921](https://issues.apache.org/jira/browse/DIRSTUDIO-921) - Schema Pane does not refresh when creating a new object class
+* [DIRSTUDIO-927](https://issues.apache.org/jira/browse/DIRSTUDIO-927) - The "options... Advanced Options Configuration" link on the "Overview" age does not work
+
+Improvement
+
+* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
+* [DIRSTUDIO-929](https://issues.apache.org/jira/browse/DIRSTUDIO-929) - Improve Hex Value Editor to allow text edition
+
+Task
+
+* [DIRSTUDIO-925](https://issues.apache.org/jira/browse/DIRSTUDIO-925) - Add new mandatory and optional attributes introduced for the 'ads-delegatingAuthenticator' object class
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M7 released <em>posted on May 31rd, 2013</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M7, the seventh milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M7 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are a few highlights of this new version:
+
+* A major new addition is the ability to store connection passwords in a password-protected keystore, rather than in plain text on disk.
+* The LDAP Servers and ApacheDS 2.0 Configuration plugins have been updated with the latest and greatest ApacheDS (version 2.0.0-M12).
+* The update site problem where Apache Directory Studio fails to install correctly has been fixed.
+
+Here are the release notes for Apache Directory Studio 2.0.0-M7:
+
+Bug
+
+* [DIRSTUDIO-865](https://issues.apache.org/jira/browse/DIRSTUDIO-865) - NullPointerException thrown when connecting to Domino 8.5.2FP3 LDAP
+* [DIRSTUDIO-888](https://issues.apache.org/jira/browse/DIRSTUDIO-888) - Improve editing of boolean values to allow lowercased values and shortcuts
+* [DIRSTUDIO-891](https://issues.apache.org/jira/browse/DIRSTUDIO-891) - A schema project containing a reference to a deleted connection makes the perspective completely unusable
+* [DIRSTUDIO-892](https://issues.apache.org/jira/browse/DIRSTUDIO-892) - Unable to import ApacheDS core schemas
+* [DIRSTUDIO-893](https://issues.apache.org/jira/browse/DIRSTUDIO-893) - ConcurrentModificationException thrown while deleting multiple schema elements
+* [DIRSTUDIO-899](https://issues.apache.org/jira/browse/DIRSTUDIO-899) - Unable to install Studio using the update site: "Missing requirement: ApacheDS Core 2.0.0.M11"
+* [DIRSTUDIO-902](https://issues.apache.org/jira/browse/DIRSTUDIO-902) - Unusable configuration of the HashingPasswordInterceptor with recent milestone of ApacheDS 2.0
+* [DIRSTUDIO-903](https://issues.apache.org/jira/browse/DIRSTUDIO-903) - Clicking "Accept" when no changes have been made on the password edit dialog changes the password
+* [DIRSTUDIO-904](https://issues.apache.org/jira/browse/DIRSTUDIO-904) - Directory Studio create files with french "accents"
+* [DIRSTUDIO-905](https://issues.apache.org/jira/browse/DIRSTUDIO-905) - IOException (Document is closed) thrown when quitting Apache Directory Studio with an LDAP Server running
+* [DIRSTUDIO-907](https://issues.apache.org/jira/browse/DIRSTUDIO-907) - ERR_04269 ATTRIBUTE_TYPE for OID ads-replpingersleep does not exist!
+* [DIRSTUDIO-916](https://issues.apache.org/jira/browse/DIRSTUDIO-916) - Can not open configuration for fresh installed ApacheDS and Studio
+
+Improvement
+
+* [DIRSTUDIO-857](https://issues.apache.org/jira/browse/DIRSTUDIO-857) - Add support for PasswordPolicy configuration
+* [DIRSTUDIO-884](https://issues.apache.org/jira/browse/DIRSTUDIO-884) - Add new MessageDigest algorithm for passwords
+* [DIRSTUDIO-890](https://issues.apache.org/jira/browse/DIRSTUDIO-890) - Add support for SSHA2 in Password Editor
+* [DIRSTUDIO-895](https://issues.apache.org/jira/browse/DIRSTUDIO-895) - Add a 'Show password' checkbox to the CredentialsDialog used to ask the connection's password when it's not saved
+* [DIRSTUDIO-897](https://issues.apache.org/jira/browse/DIRSTUDIO-897) - Active Directory attribute type 'lockoutTime' should be linked with the 'MS AD Date and Time Editor'
+* [DIRSTUDIO-898](https://issues.apache.org/jira/browse/DIRSTUDIO-898) - Add case-insensitive support for the attribute types aliases in the 'Value Editors' preferences page
+
+New Feature
+
+* [DIRSTUDIO-901](https://issues.apache.org/jira/browse/DIRSTUDIO-901) - Add the ability to store connection passwords in a password-protected keystore
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M6 released <em>posted on March 14th, 2013</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M6, the sixth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M6 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are a few highlights of this new version:
+
+* The integrated Apache Directory LDAP API has been upgraded to the latest version (1.0.0-M16).
+* The LDAP Servers plugin has been updated with the latest and greatest ApacheDS (version 2.0.0-M11).
+
+Here are the release notes for Apache Directory Studio 2.0.0-M6:
+
+Bug
+
+* [DIRSTUDIO-861](https://issues.apache.org/jira/browse/DIRSTUDIO-861) - Errors with DNs containing non-ASCII values on Active Directory
+* [DIRSTUDIO-873](https://issues.apache.org/jira/browse/DIRSTUDIO-873) - Kerberos encryption types are not saved correctly
+* [DIRSTUDIO-876](https://issues.apache.org/jira/browse/DIRSTUDIO-876) - Integer Editor should focus on the value text field upon opening
+* [DIRSTUDIO-878](https://issues.apache.org/jira/browse/DIRSTUDIO-878) - Generation of the user guides as PDF and standalone HTML is broken
+* [DIRSTUDIO-879](https://issues.apache.org/jira/browse/DIRSTUDIO-879) - Flags for an attribute type in the Schema Browser are not correctly rendered on OS X
+* [DIRSTUDIO-889](https://issues.apache.org/jira/browse/DIRSTUDIO-889) - Error "Changes could not be saved to the connection" when saving server configuration on stock server and studio
+
+Improvement
+
+* [DIRSTUDIO-872](https://issues.apache.org/jira/browse/DIRSTUDIO-872) - The list of possible Kerberos encryption type should be available
+
+Task
+
+* [DIRSTUDIO-874](https://issues.apache.org/jira/browse/DIRSTUDIO-874) - Remove all ApacheDS and Apache Mina libraries plugins from trunk in '/libraries'
+* [DIRSTUDIO-877](https://issues.apache.org/jira/browse/DIRSTUDIO-877) - Update ApacheDS schema files to the latest version
+* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M5 released <em>posted on February 12th, 2013</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M5, the fifth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M5 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are the release notes for Apache Directory Studio 2.0.0-M5:
+
+* [DIRSTUDIO-867](https://issues.apache.org/jira/browse/DIRSTUDIO-867) - References of old projects and packages name 'org.apache.directory.shared' still present in the code
+
+
+<h2 class="news">Apache Directory Studio 2.0-0-M4 released <em>posted on January 30th, 2013</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M4, the fourth milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M4 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can also install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are a few highlights of this new version:
+
+* The integrated Apache Directory LDAP API has been upgraded to the latest version (1.0.0-M15), fixing bugs and bringing performances improvements.
+* The LDAP Servers plugin has been updated with the latest and greatest ApacheDS (version 2.0.0-M10), which supports Multi-Master Replication.
+* The ApacheDS 2.0 Configuration plugin has also been updated to support ApacheDS 2.0.0-M10 and offers configuration for replication.
+* The RCP application is based on the latest version of Eclipse (3.8.1).
+* There are a lot more new additions, improvements and bug fixes (see release notes).
+
+Here are the release notes for Apache Directory Studio 2.0.0-M4:
+
+Bug
+
+* [DIRSTUDIO-775](https://issues.apache.org/jira/browse/DIRSTUDIO-775) - Display issues in Image Editor
+* [DIRSTUDIO-795](https://issues.apache.org/jira/browse/DIRSTUDIO-795) - Unable to delete multiple schema elements (attribute type, object class or schema)
+* [DIRSTUDIO-796](https://issues.apache.org/jira/browse/DIRSTUDIO-796) - Unable to open multiple schema elements (attribute type, object class or schema)
+* [DIRSTUDIO-799](https://issues.apache.org/jira/browse/DIRSTUDIO-799) - Unable to move object with Apache LDAP API
+* [DIRSTUDIO-802](https://issues.apache.org/jira/browse/DIRSTUDIO-802) - Confusion between ISO-8859-1 and UTF-8 in the Encode/Decode dialog
+* [DIRSTUDIO-808](https://issues.apache.org/jira/browse/DIRSTUDIO-808) - "Update existing entries" checkbox in "LDIF Import" wizard fails to work with the Apache Directory LDAP API
+* [DIRSTUDIO-810](https://issues.apache.org/jira/browse/DIRSTUDIO-810) - Fullscreen plugin is /not/ under the Apache license
+* [DIRSTUDIO-812](https://issues.apache.org/jira/browse/DIRSTUDIO-812) - Error while performing search
+* [DIRSTUDIO-822](https://issues.apache.org/jira/browse/DIRSTUDIO-822) - Typo in one of the default indexed attributes when creating a new partition in the ApacheDS Configuration Editor v2
+* [DIRSTUDIO-823](https://issues.apache.org/jira/browse/DIRSTUDIO-823) - Integer Value Editor only selects values of Java Integer magnitude
+* [DIRSTUDIO-827](https://issues.apache.org/jira/browse/DIRSTUDIO-827) - Quick Search is not displayed when folding is activated
+* [DIRSTUDIO-829](https://issues.apache.org/jira/browse/DIRSTUDIO-829) - NPE when trying to add a 'subtreeSpecification' value
+* [DIRSTUDIO-833](https://issues.apache.org/jira/browse/DIRSTUDIO-833) - NPE in ACI Item Editor when adding AttributeType permission
+* [DIRSTUDIO-834](https://issues.apache.org/jira/browse/DIRSTUDIO-834) - Unable to edit subtreeSpecification
+* [DIRSTUDIO-835](https://issues.apache.org/jira/browse/DIRSTUDIO-835) - Display issues in the Password Editor on OS X
+* [DIRSTUDIO-840](https://issues.apache.org/jira/browse/DIRSTUDIO-840) - Help system is not working
+* [DIRSTUDIO-850](https://issues.apache.org/jira/browse/DIRSTUDIO-850) - The "Remove" button for mandatory ATs in the OC Editor does nothing
+* [DIRSTUDIO-858](https://issues.apache.org/jira/browse/DIRSTUDIO-858) - The Entry Editor's Outline view should be unavailable when the selection isn't an entry or a bookmark
+* [DIRSTUDIO-864](https://issues.apache.org/jira/browse/DIRSTUDIO-864) - Error message appears: "ERR_04269 ATTRIBUTE_TYPE for OID ads-replenabled does not exist!" when trying to open configuration
+
+Improvement
+
+* [DIRSTUDIO-657](https://issues.apache.org/jira/browse/DIRSTUDIO-657) - Add options to output the resulting LDIF of a batch operation to a file or to the clipboard
+* [DIRSTUDIO-793](https://issues.apache.org/jira/browse/DIRSTUDIO-793) - Batch Operation define modification slowdown, needs scrollbar
+* [DIRSTUDIO-797](https://issues.apache.org/jira/browse/DIRSTUDIO-797) - Two different 'HistoryUtils' classes should be merged into a single one in 'common.ui' plugin
+* [DIRSTUDIO-809](https://issues.apache.org/jira/browse/DIRSTUDIO-809) - Improve the behavior of the "Execute LDIF" action of the LDIF Editor
+* [DIRSTUDIO-813](https://issues.apache.org/jira/browse/DIRSTUDIO-813) - Add default value editors for eDirectory
+* [DIRSTUDIO-828](https://issues.apache.org/jira/browse/DIRSTUDIO-828) - The Quick Search context menu item could reuse the currently selected entry in the Browser view as search base
+* [DIRSTUDIO-838](https://issues.apache.org/jira/browse/DIRSTUDIO-838) - Add support for configuring the context entry of a partition in the ApacheDS 2.0 Configuration Editor
+* [DIRSTUDIO-841](https://issues.apache.org/jira/browse/DIRSTUDIO-841) - When creating a connection from an existing ApacheDS 2.0 server, the "Open Configuration" item is not available
+* [DIRSTUDIO-851](https://issues.apache.org/jira/browse/DIRSTUDIO-851) - Add a hint in the Connection Properties dialog about Certifcate Validation with a link to the corresponding preference page
+* [DIRSTUDIO-852](https://issues.apache.org/jira/browse/DIRSTUDIO-852) - Display issues in the Certificate Validation preference page on OS X
+
+New Feature
+
+* [DIRSTUDIO-804](https://issues.apache.org/jira/browse/DIRSTUDIO-804) - Interpret Active Directory Timestamps
+* [DIRSTUDIO-806](https://issues.apache.org/jira/browse/DIRSTUDIO-806) - Editing Multiple Directory Objects at once
+* [DIRSTUDIO-843](https://issues.apache.org/jira/browse/DIRSTUDIO-843) - There is no place we can configure the KeyStore to use while configuring an ApacheDS server
+
+Task
+
+* [DIRSTUDIO-736](https://issues.apache.org/jira/browse/DIRSTUDIO-736) - Implement the "Execute Online" button of the BatchOperationWizard
+* [DIRSTUDIO-791](https://issues.apache.org/jira/browse/DIRSTUDIO-791) - Update supportedControl and supportedExtension descriptions
+* [DIRSTUDIO-811](https://issues.apache.org/jira/browse/DIRSTUDIO-811) - Review and remove any source file under Eclipse Public License (EPL) v 1.0
+* [DIRSTUDIO-816](https://issues.apache.org/jira/browse/DIRSTUDIO-816) - Update OIDs to Descriptions properties file
+* [DIRSTUDIO-839](https://issues.apache.org/jira/browse/DIRSTUDIO-839) - Update Eclipse dependencies to version 3.8.1
+
+
+<h2 class="news">Apache Directory Studio 2.0.0-M3 released <em>posted on March 12, 2012</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M3, the third milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M3 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here is the release note for Apache Directory Studio 2.0.0-M3:
+
+Bug
+
+* [DIRSTUDIO-764](https://issues.apache.org/jira/browse/DIRSTUDIO-764) - Image Editor does not work correctly
+* [DIRSTUDIO-765](https://issues.apache.org/jira/browse/DIRSTUDIO-765) - Can not export DSML
+* [DIRSTUDIO-767](https://issues.apache.org/jira/browse/DIRSTUDIO-767) - All attribute names are lowercase when using Apache Directory LDAP Client API
+* [DIRSTUDIO-768](https://issues.apache.org/jira/browse/DIRSTUDIO-768) - Error while searching using a filter on a binary attribute
+* [DIRSTUDIO-769](https://issues.apache.org/jira/browse/DIRSTUDIO-769) - Alt-S shortkey does not work in Search Dialog
+* [DIRSTUDIO-770](https://issues.apache.org/jira/browse/DIRSTUDIO-770) - Typos in french translation
+* [DIRSTUDIO-771](https://issues.apache.org/jira/browse/DIRSTUDIO-771) - Searches are not saved when closing Studio 2.0 M1/M2
+* [DIRSTUDIO-772](https://issues.apache.org/jira/browse/DIRSTUDIO-772) - Entry UUID Editor can't display eDirectory GUID
+* [DIRSTUDIO-773](https://issues.apache.org/jira/browse/DIRSTUDIO-773) - IllegalArgumentException thrown when copying the RootDSE
+* [DIRSTUDIO-776](https://issues.apache.org/jira/browse/DIRSTUDIO-776) - Misleading title for action "Open 'Search Result'/'Bookmark'/'Entry' in DIT" in LDAP Browser view context menu
+* [DIRSTUDIO-777](https://issues.apache.org/jira/browse/DIRSTUDIO-777) - Renaming entry fails when using Apache Directory LDAP API
+* [DIRSTUDIO-778](https://issues.apache.org/jira/browse/DIRSTUDIO-778) - NullPointerException when refreshing a TableEntryEditor
+* [DIRSTUDIO-779](https://issues.apache.org/jira/browse/DIRSTUDIO-779) - Label for folded attributes in TableEntryEditor is not updated when quick filter is used
+* [DIRSTUDIO-783](https://issues.apache.org/jira/browse/DIRSTUDIO-783) - The 'Rename Entry' dialog doesn't resize automatically when adding or removing RDN parts
+
+Improvement
+
+* [DIRSTUDIO-713](https://issues.apache.org/jira/browse/DIRSTUDIO-713) - Improve the 'Show in' sub-menu of the TableEntryEditor
+* [DIRSTUDIO-780](https://issues.apache.org/jira/browse/DIRSTUDIO-780) - Allow Apache Directory Studio to be pinned to Windows 7's taskbar
+* [DIRSTUDIO-782](https://issues.apache.org/jira/browse/DIRSTUDIO-782) - Improve Windows installer with JRE detection and creation of 'Apache Directory Studio.ini' file
+* [DIRSTUDIO-784](https://issues.apache.org/jira/browse/DIRSTUDIO-784) - Add the ability to sort searches in the LDAP Browser view
+* [DIRSTUDIO-785](https://issues.apache.org/jira/browse/DIRSTUDIO-785) - Add the ability to sort bookmarks in the LDAP Browser view
+
+
+Click here to view the full [Release Notes](changelog.html).
+
+
+<h2 class="news">Apache Directory Studio 2.0.0-M2 released <em>posted on February 07, 2012</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M2, the second milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M2as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are the release notes for Apache Directory Studio 2.0.0-M2:
+
+* [DIRSTUDIO-630](https://issues.apache.org/jira/browse/DIRSTUDIO-630) - Importing a Schema project twice shouldn't be possible
+* [DIRSTUDIO-733](https://issues.apache.org/jira/browse/DIRSTUDIO-733) - Error while reading RootDSE on Sun One directory server
+* [DIRSTUDIO-739](https://issues.apache.org/jira/browse/DIRSTUDIO-739) - Using 'Quick Search' in the DN editor while editing some object cancels editing and jumps to 'Quick Search' in the main window
+* [DIRSTUDIO-759](https://issues.apache.org/jira/browse/DIRSTUDIO-759) - Exit confirmation dialog is showed twice when quitting the application by closing the window on Linux and Windows
+* [DIRSTUDIO-760](https://issues.apache.org/jira/browse/DIRSTUDIO-760) - Unable to bind on an Active Directory server using 'domain\userid'
+* [DIRSTUDIO-763](https://issues.apache.org/jira/browse/DIRSTUDIO-763) - Typo in some English error messages ('occured' instead of 'occurred')
+
+Click here to view the full [Release Notes](changelog.html).
+
+
+<h2 class="news">Apache Directory Studio 2.0.0-M1 released <em>posted on January 18, 2012</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 2.0.0-M1, a first milestone release of the version 2.0 of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 2.0.0-M1 as a standalone RCP application for Mac OS X, Linux and Windows here: <https://directory.apache.org/studio/downloads.html>
+
+You can install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/2.x/>
+
+Here are a few highlights of this new version:
+
+* The Apache Directory LDAP API has now been integrated in Apache Directory Studio:
+ * it is used as default network provider (as a replacement for JNDI - which is still selectable)
+ * and also in the Schema Editor plugin for checking the schema inconsistencies
+* A new LDAP Servers plugin has been introduced and replaces the ApacheDS plugin:
+ * it provides an open way to include LDAP Server adapters which allows you create and run a new LDAP Server within seconds
+ * LDAP Server adapters are provided for all ApacheDS versions from 1.5.3 to the latest milestone 2.0 M4).
+* A new ApacheDS 2.0 Configuration plugin takes care of editing the configuration of a 2.0 ApacheDS instance:
+ * it reads the configuration from the LDIF configuration file on the filesystem
+ * it can also read the configuration via LDAP using a connection defined in the LDAP Browser
+* The RCP application is based on the latest version of Eclipse (3.7.1):
+ * it is provided in two versions (32 bit and 64 bit) for each major operating system (Mac OS X, Linux & Windows)
+* There are a lot more new additions, improvements and bug fixes (see release notes)
+
+Click here to view the [Release Notes](changelog.html).
+
+
+<h2 class="news">Apache Directory Studio 1.5.3 released <em>posted on April 05, 2010</em></h2>
+
+The Apache Directory Team is pleased to announce the release of Apache Directory Studio 1.5.3, a bug fix and enhancement update of its Eclipse based LDAP Browser and Directory client.
+
+You can download Apache Directory Studio 1.5.3 as a standalone RCP application for Mac OS X, Linux and Windows here:
+<https://directory.apache.org/studio/downloads.html>
+
+You can install it directly in Eclipse using this update site:
+<https://directory.apache.org/studio/update/1.5.3.v20100330/>
+
+Here are a few highlights of this new version:
+
+* fixed a critical bug that makes Studio gone into an endless event loop
+* Apache DS plugin comes with the latest 1.5.6 version of Apache DS
+* Apache DS Configuration plugin can now handle correctly the latest 1.5.6 version of Apache DS server.xml file
+* editors now warns the user if they contain modifications and the input is changed
+* various improvements in certificates handling
+* added a new 'Delete All' menu item for entries, bookmarks and searches
+
+Click here to view the [Release Notes](changelog.html).
diff --git a/source/studio/screenshots.md b/source/studio/screenshots.md
new file mode 100644
index 0000000..18a418e
--- /dev/null
+++ b/source/studio/screenshots.md
@@ -0,0 +1,213 @@
+---
+title: Screenshots
+---
+
+# Screenshots
+
+<script src="static/js/FancyZoom.js" type="text/javascript"></script>
+<script src="static/js/FancyZoomHTML.js" type="text/javascript"></script>
+<script type="text/javascript">
+ window.onload = function()
+ {
+ setupZoom();
+ }
+</script>
+
+<style type="text/css" media="all">
+ .screenshot_table
+ {
+ border: 1px #ccc solid;
+ border-left: 0px;
+ }
+
+ .screenshot_table tr td
+ {
+ width: 140px;
+ text-align: center;
+ border-left: 1px #ccc solid;
+ padding: 5px;
+ }
+
+ .screenshot_table tr th
+ {
+ font-weight: bold;
+ text-align: center;
+ border-left: 1px #ccc solid;
+ }
+</style>
+
+## Apache Directory Studio Application
+
+<center>
+ <table class="screenshot_table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <img src="screenshots.data/studio-icon_128x128.png" align="absmiddle" border="0">
+ </td>
+ <td>
+ <a href="screenshots.data/LDAPStudioApp_Preferences.png" title="Application - Preferences">
+ <img src="screenshots.data/LDAPStudioApp_Preferences.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/LDAPStudioApp_Help.png" title="Application - Help">
+ <img src="screenshots.data/LDAPStudioApp_Help.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>Icon</th>
+ <th>Preferences</th>
+ <th>Help</th>
+ </tr>
+ </table>
+</center>
+
+
+## LDAP Browser
+
+TODO...
+
+<center>
+ <table class="screenshot_table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <a href="screenshots.data/LDAP_Browser_Plugin.png" title="LDAP Browser - LDAP Perspective">
+ <img src="screenshots.data/LDAP_Browser_Plugin.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>LDAP Perspective</th>
+ </tr>
+ </table>
+</center>
+
+## LDIF Editor
+
+TODO...
+
+## Schema Editor
+
+TODO...
+
+<center>
+ <table class="screenshot_table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <a href="screenshots.data/SchemasEditor_Plugin.png" title="Schema Editor - Schema Editor Perspective">
+ <img src="screenshots.data/SchemasEditor_Plugin.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/SchemasEditor_AttributeTypeEditor.png" title="Schema Editor - Attribute Type Editor">
+ <img src="screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png" align="absmiddle" border="0"></a>
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/SchemasEditor_ObjectClassEditor.png" title="Schema Editor - Object Class Editor">
+ <img src="screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/SchemasEditor_SchemaEditor.png" title="Schema Editor - Schema Editor">
+ <img src="screenshots.data/SchemasEditor_SchemaEditor.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/SchemasEditor_SourceCodeEditor.png" title="Schema Editor - Source Code Editor">
+ <img src="screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/SchemasEditor_PluginOptions.png" title="Schema Editor - Options">
+ <img src="screenshots.data/SchemasEditor_PluginOptions.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>Schema Editor Perspective</th>
+ <th>Attribute Type Editor</th>
+ <th>Object Class Editor</th>
+ <th>Schema Editor</th>
+ <th>Source Code Editor</th>
+ <th>Options</th>
+ </tr>
+ </table>
+</center>
+
+## Embedded ApacheDS
+
+TODO...
+
+## ApacheDS Configuration
+
+TODO...
+
+<center>
+ <table class="screenshot_table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <a href="screenshots.data/ads_configuration_general.png" title="Apache DS Configuration - General Page">
+ <img src="screenshots.data/ads_configuration_general.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/ads_configuration_partitions.png" title="Apache DS Configuration - Partitions Page">
+ <img src="screenshots.data/ads_configuration_partitions.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/ads_configuration_interceptors.png" title="Apache DS Configuration - Interceptors Page">
+ <img src="screenshots.data/ads_configuration_interceptors.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/ads_configuration_extop.png" title="Apache DS Configuration - Extended Operations Page">
+ <img src="screenshots.data/ads_configuration_extop.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>General Page</th>
+ <th>Partitions Page</th>
+ <th>Interceptors Page</th>
+ <th>Extended Operations Page</th>
+ </tr>
+ </table>
+</center>
+
+## ACI Editor
+
+<center>
+ <table class="screenshot_table" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <a href="screenshots.data/aci_visual_1.png" title="ACI Editor - Visual Editor">
+ <img src="screenshots.data/aci_visual_1.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/aci_visual_2.png" title="ACI Editor - Visual Editor">
+ <img src="screenshots.data/aci_visual_2.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/aci_source.png" title="ACI Editor - Source Editor">
+ <img src="screenshots.data/aci_source.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ <td>
+ <a href="screenshots.data/subtree_editor.png" title="ACI Editor - Subtree Editor">
+ <img src="screenshots.data/subtree_editor.thumb.png" align="absmiddle" border="0">
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>ACI Visual Editor</th>
+ <th>ACI Visual Editor</th>
+ <th>ACI Source Editor</th>
+ <th>Subtree Editor</th>
+ </tr>
+ </table>
+</center>
\ No newline at end of file
diff --git a/source/studio/source-repository.md b/source/studio/source-repository.md
new file mode 100644
index 0000000..761d88b
--- /dev/null
+++ b/source/studio/source-repository.md
@@ -0,0 +1,67 @@
+---
+title: Source Repository
+---
+
+# Source Repository
+
+## Canonical Source Repository
+
+The canonical source is managed in Apache GitBox. Just type the following command to get the latest development version:
+
+ git clone https://gitbox.apache.org/repos/asf/directory-studio.git
+
+## GitHub Mirror
+
+There is a GitHub mirror available: <https://github.com/apache/directory-studio/>
+
+Pull requests welcomed.
+
+## Source Repository Organization
+
+The repository is organized as follows :
+
+ |-- pom-first.xml pom.xml to generate the Eclipse Target Platform and the MANIFEST.MF files
+ |-- pom.xml The main pom
+ |-- eclipse-trgt-platform The target platform, defines Eclipse, ApacheDS, and 3rd party dependencies
+ |-- features The features
+ | |-- apacheds.feature
+ | |-- ldapbrowser.feature
+ | |-- ldifeditor.feature
+ | |-- openldap.feature
+ | |-- rcp.feature
+ | |-- schemaeditor.feature
+ |-- helps The help plugins in Docbook format
+ | |-- apacheds.help
+ | |-- ldapbrowser.help
+ | |-- ldifeditor.help
+ | |-- rcp.help
+ | |-- schemaeditor.help
+ |-- plugins The real plugins, here is the code
+ | |-- aciitemeditor
+ | |-- apacheds
+ | |-- apacheds-launcher
+ | |-- apacheds.configuration
+ | |-- common.core
+ | |-- common.ui
+ | |-- connection.core
+ | |-- connection.ui
+ | |-- ldapbrowser.common
+ | |-- ldapbrowser.core
+ | |-- ldapbrowser.ui
+ | |-- ldapservers
+ | |-- ldapservers.apacheds.v153
+ | |-- ldapservers.apacheds.v154
+ | |-- ldapservers.apacheds.v155
+ | |-- ldapservers.apacheds.v156
+ | |-- ldapservers.apacheds.v157
+ | |-- ldifeditor
+ | |-- ldifparser
+ | |-- rcp
+ | |-- schemaeditor
+ | |-- valueeditors
+ |-- tests Integration Tests
+ | |-- test.integration.core
+ | |-- test.integration.ui
+ |-- product The packaged products for all supported platforms
+ |-- p2repositories The update sites
+
diff --git a/source/studio/testimonials.md b/source/studio/testimonials.md
new file mode 100644
index 0000000..6043aa8
--- /dev/null
+++ b/source/studio/testimonials.md
@@ -0,0 +1,56 @@
+---
+title: Testimonials
+---
+
+# Testimonials
+
+This page is dedicated to people using *{_}Apache Directory Studio{_}* and like it \!
+
+### In English:
+
+* <http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-896.html>
+* <http://www.eclipse-plugins.info/eclipse/plugin_details.jsp?id=1752>
+* <http://www.idtopia.com/blog/2007/04/03/ldap-studio-07-released>
+* <http://anothergeekwebsite.com/en/2007/03/ldapstudio-0>
+* <http://www.c-note.dk/2007/03/30/ldapbrowsers/>
+* <http://rcrblog.blogspot.com/2007/08/why-i-love-apaches-ldap-studio.html>
+* <http://blog.fupps.com/2007/09/10/apache-directory-studio/>
+* <http://marksparhawk.com/articles/2007/10/03/apache-does-ldap-well>
+* <http://www.mikeperham.com/2007/09/28/using-apache-ds-part-2/>
+
+### In French:
+
+* <http://anothergeekwebsite.com/fr/2007/03/ldapstudio>
+
+### In Hungarian:
+
+* <http://www.kroy.hu/blog/?p=34#comment-12>
+
+### In Czech:
+
+* <http://www.benak.net/node/33>
+
+### In German:
+
+* <http://blog.dogan.ch/2007/09/28/apache-directory-studio/>
+* <http://www.hare.at/ccldap/index.html>
+
+### George Stoianov says:
+
+> I have spend only a limited time with LDAP Studio maybe 1-2 hours, so
+> far and I am really impressed with the way it works and behaves. I
+> have seen other Linux GUI LDAP clients but they had limited
+> capabilities in some ways, did not work in others or were not very
+> user friendly, as subjective as that is, in my mind. Long story short
+> they kept me wanting more:
+> be it a way to limit the entries returned instead of opening a tree
+> branch and having the whole application freeze, or an easy way to
+> switch connections etc. etc.. All of this kept me going back to a
+> Windows only client.
+>
+> LDAP Studio is sleek, fast and responds to user input even when
+> extracting LDIFs with records in the size of hundreds of thousands. It
+> is intuitive to use and has a really nice look and feel to it.
+>
+> It simply rocks so far\!\!\! (I do not want to puch my luck :-) but that
+> is how it feels).
\ No newline at end of file
diff --git a/source/studio/update/__index.md b/source/studio/update/__index.md
new file mode 100644
index 0000000..ac3c3f3
--- /dev/null
+++ b/source/studio/update/__index.md
@@ -0,0 +1,8 @@
+---
+title: Update Site
+slug: index
+---
+
+## Update Site
+
+This is the update site for Apache Directory Studio. Please visit [Installing Apache Directory Studio in Eclipse](../installation-in-eclipse.html) for instructions how to use it.
diff --git a/source/studio/update/product/__index.md b/source/studio/update/product/__index.md
new file mode 100644
index 0000000..1a84935
--- /dev/null
+++ b/source/studio/update/product/__index.md
@@ -0,0 +1,8 @@
+---
+title: Update Site
+slug: index
+---
+
+## Update Site
+
+This is the update site for Apache Directory Studio. Please visit [Installing Apache Directory Studio in Eclipse](../../installation-in-eclipse.html) for instructions how to use it.
diff --git a/source/studio/users-guide.md b/source/studio/users-guide.md
new file mode 100644
index 0000000..da4d103
--- /dev/null
+++ b/source/studio/users-guide.md
@@ -0,0 +1,42 @@
+---
+title: User's Guide
+---
+
+# User's Guide
+
+Here are the User's Guides available for Apache Directory Studio:
+
+
+## LDAP Browser
+
+![HTML Guide](users-guide.data/html.png) [Click here to consult the LDAP Browser User's Guide](users-guide/2.0.0.v20180908-M14/ldap_browser/)
+
+![PDF Guide](users-guide.data/pdf.png) [The LDAP Browser User's Guide is also available as PDF ](users-guide/2.0.0.v20180908-M14/Apache_Directory_Studio_LDAP_Browser_User_Guide.pdf)
+
+
+## LDIF Editor
+
+![HTML Guide](users-guide.data/html.png) [Click here to consult the LDIF Editor User's Guide](users-guide/2.0.0.v20180908-M14/ldif_editor/)
+
+![PDF Guide](users-guide.data/pdf.png) [The LDIF Editor User's Guide is also available as PDF ](users-guide/2.0.0.v20180908-M14/Apache_Directory_Studio_LDIF_Editor_User_Guide.pdf)
+
+
+## Schema Editor
+
+![HTML Guide](users-guide.data/html.png) [Click here to consult the Schema Editor User's Guide](users-guide/2.0.0.v20180908-M14/schema_editor/)
+
+![PDF Guide](users-guide.data/pdf.png) [The Schema Editor User's Guide is also available as PDF ](users-guide/2.0.0.v20180908-M14/Apache_Directory_Studio_Schema_Editor_User_Guide.pdf)
+
+
+## Apache Directory Server
+
+![HTML Guide](users-guide.data/html.png) [Click here to consult the Apache Directory Server User's Guide](users-guide/2.0.0.v20180908-M14/apacheds/)
+
+![PDF Guide](users-guide.data/pdf.png) [The Apache Directory Server User's Guide is also available as PDF ](users-guide/2.0.0.v20180908-M14/Apache_Directory_Studio_Apache_DS_User_Guide.pdf)
+
+
+## Apache Directory Studio
+
+![HTML Guide](users-guide.data/html.png) [Click here to consult the Apache Directory Studio User's Guide](users-guide/2.0.0.v20180908-M14/apache_directory_studio/)
+
+![PDF Guide](users-guide.data/pdf.png) [The User's Guide is also available as PDF ](users-guide/2.0.0.v20180908-M14/Apache_Directory_Studio_User_Guide.pdf)
diff --git a/source/team.md b/source/team.md
new file mode 100644
index 0000000..74d2743
--- /dev/null
+++ b/source/team.md
@@ -0,0 +1,79 @@
+---
+title: Team
+---
+
+# The Apache Directory Project Committee
+
+| Name | id | Position | Photo | WebSite | Blog |
+|---|---|---|:-:|:-:|:-:|
+| Alex Karasulu | akarasulu | Founder, PMC | ![Alex Karasulu](images/team/akarasulu.jpg) |||
+| Chris Custine | ccustine | PMC | ![Chris Custine](images/team/ccustine.png) | [![Website](images/team/website.png)](http://www.organicelement.com) | [![Blog](images/team/blog.png)](http://blog.organicelement.com) |
+| Chris Pike | cpike | PMC ||||
+| Christine Koppelt | ckoppelt | PMC ||||
+| Colm O hEigeartaigh | coheiga | PMC ||| [![Blog](images/team/blog.png)](http://coheigea.blogspot.com/) |
+| Emmanuel Lécharny | elecharny | PMC | ![Emmanuel Lécharny](images/team/elecharny.jpg) | [![Website](images/team/website.png)](http://www.iktek.com) | [![Blog](images/team/blog.png)](http://hrabal.blogspot.com) |
+| Jiajia Li | plusplusjiajia | PMC ||||
+| Kai Zheng | drankye | PMC ||||
+| Kiran Ayyagari | kayyagari | PMC ||||
+| Lucas Theisen | lucastheisen | PMC ||||
+| Noel J. Bergman | noel | PMC ||||
+| Pierre Smits | pierresmits | PMC | ![Pierre Smits](images/team/pierresmits.png) | [![Website](images/team/website.png)](http://www.orrtiz.com) ||
+| Pierre-Arnaud Marcelot | pamarcelot | PMC | ![Pierre-Arnaud Marcelot](images/team/pamarcelot.jpg) | [![Website](images/team/website.png)](http://www.pajbam.com)|[![Blog](images/team/blog.png)](http://www.pajbam.com) |
+| Radovan Semancik| semancik | Committer ||||
+| Shawn McKinney | smckinney | PMC | ![Shawn McKinney](images/team/smckinney.jpg) | [![Website](images/team/website.png)](http://symas.com/)|[![Blog](images/team/blog.png)](https://iamfortress.net/) |
+| Stefan Seelmann | seelmann | PMC chair | ![Stefan Seelmann](images/team/seelmann.jpg) | [![Website](images/team/website.png)](http://www.stefan-seelmann.de) | [![Blog](images/team/blog.png)](http://www.stefan-seelmann.de) |
+| Stefan Zoerner | szoerner | PMC | ![Stefan Zoerner](images/team/szoerner.jpg) |||
+
+# The Apache Directory Project Committers
+
+| Name | id | Position | Photo | WebSite | Blog |
+|---|---|---|:-:|:-:|:-:|
+| Alan Cabrera | adc | Committer ||||
+| Aleksander Adamowski | aadomowski | Committer ||||
+| Alex Haskell | aphaskell | Committer ||||
+| Andrea Gariboldi | agariboldi | Committer ||||
+| Antoine Levy Lambert| antoine | Committer ||||
+| Berin Loritsch | bloritsch | Committer ||||
+| Brian Burch | brianb2 | Committer ||||
+| Christopher Harm | charm | Committer ||||
+| David Jencks | djencks | Committer ||||
+| Gerard Gagliano | gg | Committer ||||
+| Göktürk Gezer | gokturk | Committer ||||
+| Jan Rellermeyer | rjan | Committer | ![Jan Rellermeyer](images/team/jan.jpg) | [![Website](images/team/website.png)](http://people.inf.ethz.ch/rjan) ||
+| Jan Sindberg | sindberg | Committer ||||
+| John E. Conlon | jconlon | Committer ||||
+| Lin Chen | hazel | Committer ||||
+| Lothar Haeger | lhaeger | Committer ||||
+| Martin Alderson | malderson | Committer ||||
+| Richerd Feezel| rmf | Committer ||||
+| Selcuk Aya | saya | Committer ||||
+| Shawn E Smith | ussmith | Committer ||||
+| Stephen McConnell | mcconnell | Committer ||||
+| Steve Moyer | smoyer1 | Committer ||||
+| Timothy Bennett | tbennett | Committer ||||
+| Yaning Xu | yaning | Committer ||||
+
+To be continued ...
+
+# Emeritus committers and PMCs
+
+| Name | Position | Photo | WebSite | Blog |
+|---|---|:-:|:-:|:-:|
+| Brett Porter | PMC ||||
+| Ersin Er | PMC ||||
+| Felix Knecht | PMC ||||
+| G. Richard Scott | Committer ||||
+| Jesse McConnell |Committer||||
+| Jim Jagielski | Committer ||||
+| Jörg Henne | Committer ||||
+| John Peacock | Committer ||||
+| Michael E. Rodriguez | Committer ||||
+| Niclas Hedman | Committer ||||
+| Nicola Ken Barozzi | Committer ||||
+| Norval Hope | Committer ||||
+| Ole Ersoy | Committer ||||
+| Phil Steitz | PMC ||||
+| Trustin Lee | PMC ||||
+| Vince Tence | PMC ||||
+| Wes McKean | PMC ||||
+
diff --git a/source/testimonies.md b/source/testimonies.md
new file mode 100644
index 0000000..85bb51f
--- /dev/null
+++ b/source/testimonies.md
@@ -0,0 +1,10 @@
+---
+title: Testimonials
+---
+
+# Testimonials
+
+This page collects testimonies from Apache Directory Server users, and expose what they are using it for.
+
+* The openthinclient.org project uses ADS as an embedded directory server to store all kinds of configuration data.
+ [http://openthinclient.org](http://openthinclient.org) is an open source thin client management solution allowing thin clients to boot from the network via using a single pure-java server.
diff --git a/source/vision.md b/source/vision.md
new file mode 100644
index 0000000..02bcbd9
--- /dev/null
+++ b/source/vision.md
@@ -0,0 +1,118 @@
+---
+title: Vision
+---
+
+# Architecting the Modern LDAP Renaissance: The Apache Directory Vision
+
+by Alex Karasulu, Founder of the [Apache Directory Project](https://directory.apache.org), October 2002
+This paper was later, in September 2007, submitted to and accepted by the [1st International Conference on LDAP](http://www.guug.de/veranstaltungen/ldapcon2007/), Cologne (Germany)
+
+{{% toc %}}
+
+## Abstract
+
+ Directory technology is an indivisible cornerstone in computing science and LDAP specifically is essential in
+ several industries however it is severely underutilized.
+
+ One would expect the demand for LDAP to increase as infrastructures and the Internet grow, with more boundaries,
+ nodes, services, users and ways of doing business emerging rapidly. Directories inherently solve integration
+ problems yet more integration problems appear while complexities of existing problems are compounded. We're not
+ witnessing a proportional increase in the adoption rate of directories; namely LDAP directories. This is not a
+ coincidence.
+
+ It is the result of a lack of several factors: tooling support, courses on directory technology in academia,
+ qualified domain experts and rich integration constructs. More specifically, information architects and key
+ decision makers incorrectly choose to apply ad hoc solutions to problems rather than opting to using directories.
+
+ If these limitations are removed then there would be greater comfort, flexibility and adoption. LDAP could do
+ more than it does today namely in the area of provisioning and workflow.
+
+ LDAP could potentially experience a Renaissance with renewed interest due to increased demand to solve the
+ classical integration problems it was designed for and beyond.
+
+ We discuss these limitations, and the proposed means to remove them, all in an effort to express our vision
+ at the Apache Directory Project. Our aim is clear; we intend to influence and incite other directory
+ implementers and projects by our example to trigger what we envision as the Modern LDAP Renaissance.
+
+## Drivers Leading to the Birth of the Directory
+
+Several systems slowly appeared in the arsenal of tools used daily by those within and across organizations. Data architects quickly could characterized two logical categories of information spanning across all domains:
+
+* Static information shared across applications and systems read frequently yet seldom altered.
+* Information specific to an event within an application (a transaction) read infrequently however written rapidly in volume (data seldom accessed by external systems).
+
+The Directory relates to this first type of data above which has the following general properties:
+
+* Accessed by many clients
+* Partitioned across different locations in different organizations owned by separate authorities
+* Structure data elements with data types (syntaxes) with semantics for matching
+* Data easily fits into hierarchies
+* Highly cross referenced
+
+The telecommunication industry in Europe, in particular, felt this burden while managing shared information, specifically subscriber directories. Telephone companies in Europe, some national providers and other international providers, managed profiles for subscribers, a subset of which, needed to be published for public access.
+
+The ITU responded with the X.500 series of specifications. The Directory specifications addressed these specific concerns for accessing information shared across organizations, located in separate stores and managed by several different authorities. The access model and authoritative model enabled organizations to publish subscriber information and allow others to access it while delegating the management of access control, schema and other aspects to the proper authorities. As a standard it was way ahead of its time.
+
+The X.500 specifications reveal a unique data access and authoritative model designed specifically for the category of static shared data we defined above. It is a cornerstone technology as is the relational database for the second category.
+
+## Demand for Directories Should Be High
+
+Directories expose a unique model for efficiently accessing relatively static information shared across multiple systems. Directory protocol designers intended the protocol to address a class of specific problems through a standard means to access shared information centrally while providing high availability. Existing storage paradigms failed to solve these problems due to inherent limitations in their design.
+
+These data management problems fall under the domain of data integration. To integrate systems one must integrate both the data and the processes. Interoperating systems often need to access the same information however many systems simply duplicate that information (in relational databases) rather than accessing it from a centralized service (the directory). As a result multiple copies of the same information exist across these systems. Data synchronization technologies emerged to address these issues of duplication such as meta-directories (not real directories). These technologies never really solved all the issues of data duplication: they merely facilitated the export, transformation and import of data across systems. The serious issue of determining the authoritative copy still remained.
+
+For some time, commercial entities avoided addressing these integration problems by centralizing access to this shared information. The market fueled the push of OLTP systems since the transaction equated to money. As markets became saturated as several competitors appeared, businesses started focusing on gains through efficiency. To streamline development and maintenance better integration was needed while allowing transactions to span across interoperating systems. This increased the need for directories.
+
+Aspects of growth naturally contribute to the demand for Directory technologies. As the number of users, organizations, systems, services and machines expand the problems of integration only increase without applying the correct remedy. In fact, the vast majority of today's problems are primary integration problems. Hence one would expect the utilization of Directories to increase proportionally with the increased demand. Unfortunately, a proportional increase in demand for Directories has not been observed.
+
+## Barriers of Adoption
+
+Although Directories, namely LDAP Directories, have proliferated over the past two decades, their adoption has not been commensurate with the demand one would expect. Several factors may be attributed to this less than optimal adoption rate.
+
+Directories still feel alien to most developers. Many admit, in theory, to a directory as the ideal access model for shared information in their applications however most fall back to using a relational database instead. Why?
+
+First there is no formal education around directory technologies while several courses around relational database systems exist. This might explain in part why developers are much more comfortable with keeping their Directory information stored and accessed from an RDBMS. As a result, finding qualified Directory experts is difficult. Every generalist knows how to use an RDBMS, yet costly specialists are needed to design, operate and maintain directories. The cost and availability of specialized engineers factor into design decisions especially if the process is formally conducted.
+
+Developers may also fall back to using an RDBMS instead of a Directory because of a lack of rich integration tier constructs (like triggers, views and stored procedures). These very useful constructs are missing in Directories yet have been available in relational databases for decades. Today's heavy integration needs demand these constructs. For example the demand for the event driven provisioning of information could be elegantly solved using triggers and stored procedures as entries are added, updated and deleted. Data architects and developers in this respect have been left in the dark-ages with LDAP while the RDBMS has given them what they wanted/needed at the price of compounding their problems with data duplication.
+
+Perhaps the most significant factor driving these faulty decisions is the lack of LDAP tooling. There are myriads of RDBMS tools for various aspects: tuning, accessing, and designing. Tools for the RDBMS appeared with a vengeance to enable designers to rapidly prototype new OLTP systems and thus bring them to market faster. Less confident generalists could even design databases and manipulate them thanks to these tools which abstracted away the details to just get the job done. The tools made engineers and non-engineers productive in building database driven applications rapidly. Unfortunately, there barely are any good browsers for LDAP much less topology/schema, design and tuning tools. The barren tooling landscape leaves developers and data architects exposed enough to turn back to the RDBMS for immediate comfort. This temporary gain is at the cost of long term data bottle necks or synchronization issues.
+
+Regardless of which factor prevents most the uptake of LDAP, the fact remains: the wrong decisions are being made more often than the right ones. It's a matter of time before Directories are considered antiquated technologies unless they can accommodate modern needs. Directories must be compelling enough for data architects and developers to decide to utilize them for their strengths in theory and in practice.
+
+## Renovating (LDAP) Directories for the 21st Century
+
+Several factors are not under the immediate control of the LDAP community however enough are to bring LDAP to the 21st century. First and foremost, LDAP tooling must improve. We need tools to model LDAP directories properly for topology and schema. Designers should be guided on how they can properly use more of the esoteric constructs to control the naming, and hierarchy of the directory. There's more to directory design than just objectClasses and attributeTypes.
+
+Secondly the protocol must expand LDAP to include standard mechanisms for declaring triggers, stored procedures and views. These two aspects alone contribute to the vast majority of reasons why relational databases store information best accessed from a directory. Allowing these new constructs for a directory will enable virtualization, provisioning, referential integrity, and server interaction with the external environment. Rather than only exposing access to static information (white pages) the directory could be utilized to solve many more problems confronting designers and developers in today's integration era. The Directory would truly become the Swiss Army Knife(TM) of integration tools in the data architect's tool chest.
+
+## Conclusion: The Aim of the Apache Directory Project
+
+At the Apache Directory Project, there are two LDAP specific projects. The first is a pure Java LDAP Server called Apache Directory Server (ApacheDS) which has been written and certified by the Open Group for LDAPv3. It was started in reaction to the often brittle code that was too hard to manage: the code was written in C and had preprocessor directives strewn all over it for porting.
+
+The other LDAP related project is called Apache Directory Studio. It is intended to provide the missing LDAP tooling support in addition to Apache Directory Server specific management utilities.
+
+The general motives for forming the Apache Directory Project can be summarized with the points below:
+
+* Avoid low level compiled language for:
+* Reducing complexity, and increase productivity
+* Enabling portability to other platforms with minimal effort
+* Attracting more contributors with most common language (Java)
+* Devise a more flexible dynamic server designed for:
+ * Extension
+ * Protocol experimentation
+ * Hot plug-ability
+ * Simplicity
+* Experiment with and introduce new integration tier constructs for directories:
+ * Triggers
+ * Views
+ * Stored Procedures
+ * Queues
+* Provide the missing tooling critical for:
+ * LDAP Adoption (general for all LDAP servers)
+ * Increasing user comfort with LDAP
+ * Lessening the learning curve for those using LDAP
+* Stimulate commercial vendors to adopt these new capabilities to remain competitive.
+
+One of our aims is to induce thought in the LDAP community while stimulating its growth through simple useful products. The more satisfied LDAP users are, the bigger the community using and interested in LDAP. This is where simple intuitive tooling and a server come in hand. More than that, these projects serve as an experimentation platform for devising new constructs in the protocol and evaluating their utility without breaking with the existing protocol. This is why certification is very important to us as we devise new constructs to make LDAP much more useful to its users.
+
+Ultimately we want to see changes appearing in the protocol standard which make LDAP a more familiar hence appealing, and easier to use technology. With standards around these new constructs interoperability could be achieved. Users will not be bound to a specific server. We want to demonstrate the viability and profound effects of these new constructs in the protocol through our example while stimulating commercial vendors to do the same to remain competitive. It does not matter to us which LDAP server is used so long as the users' situation improves with these new productive protocol features to make LDAP serve its intended purpose and go beyond. We strive, in this way, to increase LDAP awareness, comfort and adoption to bring forth what we call the Modern LDAP Renaissance.
diff --git a/content/apacheds/advanced-ug/images/ACI-access-control-specific-area.png b/static/apacheds/advanced-ug/images/ACI-access-control-specific-area.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-access-control-specific-area.png
rename to static/apacheds/advanced-ug/images/ACI-access-control-specific-area.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-add-permissions.png b/static/apacheds/advanced-ug/images/ACI-add-permissions.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-add-permissions.png
rename to static/apacheds/advanced-ug/images/ACI-add-permissions.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-attributes-definition.png b/static/apacheds/advanced-ug/images/ACI-attributes-definition.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-attributes-definition.png
rename to static/apacheds/advanced-ug/images/ACI-attributes-definition.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-example.png b/static/apacheds/advanced-ug/images/ACI-example.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-example.png
rename to static/apacheds/advanced-ug/images/ACI-example.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-new-attribute.png b/static/apacheds/advanced-ug/images/ACI-new-attribute.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-new-attribute.png
rename to static/apacheds/advanced-ug/images/ACI-new-attribute.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-new-entry.png.png b/static/apacheds/advanced-ug/images/ACI-new-entry.png.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-new-entry.png.png
rename to static/apacheds/advanced-ug/images/ACI-new-entry.png.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-prescriptive-aci.png b/static/apacheds/advanced-ug/images/ACI-prescriptive-aci.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-prescriptive-aci.png
rename to static/apacheds/advanced-ug/images/ACI-prescriptive-aci.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-rdn-creation.png b/static/apacheds/advanced-ug/images/ACI-rdn-creation.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-rdn-creation.png
rename to static/apacheds/advanced-ug/images/ACI-rdn-creation.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-result-entry.png b/static/apacheds/advanced-ug/images/ACI-result-entry.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-result-entry.png
rename to static/apacheds/advanced-ug/images/ACI-result-entry.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/ACI-subentry-oc.png b/static/apacheds/advanced-ug/images/ACI-subentry-oc.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/ACI-subentry-oc.png
rename to static/apacheds/advanced-ug/images/ACI-subentry-oc.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/APs-tree.graphml b/static/apacheds/advanced-ug/images/APs-tree.graphml
similarity index 100%
rename from content/apacheds/advanced-ug/images/APs-tree.graphml
rename to static/apacheds/advanced-ug/images/APs-tree.graphml
diff --git a/content/apacheds/advanced-ug/images/APs-tree.png b/static/apacheds/advanced-ug/images/APs-tree.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/APs-tree.png
rename to static/apacheds/advanced-ug/images/APs-tree.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/architecture.graphml b/static/apacheds/advanced-ug/images/architecture.graphml
similarity index 100%
rename from content/apacheds/advanced-ug/images/architecture.graphml
rename to static/apacheds/advanced-ug/images/architecture.graphml
diff --git a/content/apacheds/advanced-ug/images/architecture.png b/static/apacheds/advanced-ug/images/architecture.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/architecture.png
rename to static/apacheds/advanced-ug/images/architecture.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/configBeanVert.graphml b/static/apacheds/advanced-ug/images/configBeanVert.graphml
similarity index 100%
rename from content/apacheds/advanced-ug/images/configBeanVert.graphml
rename to static/apacheds/advanced-ug/images/configBeanVert.graphml
diff --git a/content/apacheds/advanced-ug/images/configBeanVert.png b/static/apacheds/advanced-ug/images/configBeanVert.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/configBeanVert.png
rename to static/apacheds/advanced-ug/images/configBeanVert.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/configBeans.graphml b/static/apacheds/advanced-ug/images/configBeans.graphml
similarity index 100%
rename from content/apacheds/advanced-ug/images/configBeans.graphml
rename to static/apacheds/advanced-ug/images/configBeans.graphml
diff --git a/content/apacheds/advanced-ug/images/configBeans.png b/static/apacheds/advanced-ug/images/configBeans.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/configBeans.png
rename to static/apacheds/advanced-ug/images/configBeans.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/debian.png b/static/apacheds/advanced-ug/images/debian.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/debian.png
rename to static/apacheds/advanced-ug/images/debian.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/linux.png b/static/apacheds/advanced-ug/images/linux.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/linux.png
rename to static/apacheds/advanced-ug/images/linux.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/mac.png b/static/apacheds/advanced-ug/images/mac.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/mac.png
rename to static/apacheds/advanced-ug/images/mac.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/password-hash-selection.png b/static/apacheds/advanced-ug/images/password-hash-selection.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/password-hash-selection.png
rename to static/apacheds/advanced-ug/images/password-hash-selection.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/passwordHashInterceptor_UML.png b/static/apacheds/advanced-ug/images/passwordHashInterceptor_UML.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/passwordHashInterceptor_UML.png
rename to static/apacheds/advanced-ug/images/passwordHashInterceptor_UML.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/passwordHashInterceptor_entryEditor.png b/static/apacheds/advanced-ug/images/passwordHashInterceptor_entryEditor.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/passwordHashInterceptor_entryEditor.png
rename to static/apacheds/advanced-ug/images/passwordHashInterceptor_entryEditor.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/passwordHashInterceptor_modificationLog.png b/static/apacheds/advanced-ug/images/passwordHashInterceptor_modificationLog.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/passwordHashInterceptor_modificationLog.png
rename to static/apacheds/advanced-ug/images/passwordHashInterceptor_modificationLog.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/passwordHashInterceptor_passwordEditor.png b/static/apacheds/advanced-ug/images/passwordHashInterceptor_passwordEditor.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/passwordHashInterceptor_passwordEditor.png
rename to static/apacheds/advanced-ug/images/passwordHashInterceptor_passwordEditor.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/rpm.png b/static/apacheds/advanced-ug/images/rpm.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/rpm.png
rename to static/apacheds/advanced-ug/images/rpm.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/sasl-digest-md5-config.png b/static/apacheds/advanced-ug/images/sasl-digest-md5-config.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/sasl-digest-md5-config.png
rename to static/apacheds/advanced-ug/images/sasl-digest-md5-config.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/sasl-mechanisms-config.png b/static/apacheds/advanced-ug/images/sasl-mechanisms-config.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/sasl-mechanisms-config.png
rename to static/apacheds/advanced-ug/images/sasl-mechanisms-config.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/simple-name-password-authn.png b/static/apacheds/advanced-ug/images/simple-name-password-authn.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/simple-name-password-authn.png
rename to static/apacheds/advanced-ug/images/simple-name-password-authn.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/subentry.graphml b/static/apacheds/advanced-ug/images/subentry.graphml
similarity index 100%
rename from content/apacheds/advanced-ug/images/subentry.graphml
rename to static/apacheds/advanced-ug/images/subentry.graphml
diff --git a/content/apacheds/advanced-ug/images/subentry.png b/static/apacheds/advanced-ug/images/subentry.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/subentry.png
rename to static/apacheds/advanced-ug/images/subentry.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/supported-sasl-mechanisms.png b/static/apacheds/advanced-ug/images/supported-sasl-mechanisms.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/supported-sasl-mechanisms.png
rename to static/apacheds/advanced-ug/images/supported-sasl-mechanisms.png
Binary files differ
diff --git a/content/apacheds/advanced-ug/images/windows.png b/static/apacheds/advanced-ug/images/windows.png
similarity index 100%
rename from content/apacheds/advanced-ug/images/windows.png
rename to static/apacheds/advanced-ug/images/windows.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/50k-ft-architecture.png b/static/apacheds/basic-ug/images/50k-ft-architecture.png
similarity index 100%
rename from content/apacheds/basic-ug/images/50k-ft-architecture.png
rename to static/apacheds/basic-ug/images/50k-ft-architecture.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/MacOSX_Installer.png b/static/apacheds/basic-ug/images/MacOSX_Installer.png
similarity index 100%
rename from content/apacheds/basic-ug/images/MacOSX_Installer.png
rename to static/apacheds/basic-ug/images/MacOSX_Installer.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/NewLDAPConnection1.png b/static/apacheds/basic-ug/images/NewLDAPConnection1.png
similarity index 100%
rename from content/apacheds/basic-ug/images/NewLDAPConnection1.png
rename to static/apacheds/basic-ug/images/NewLDAPConnection1.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/NewLDAPConnection2.png b/static/apacheds/basic-ug/images/NewLDAPConnection2.png
similarity index 100%
rename from content/apacheds/basic-ug/images/NewLDAPConnection2.png
rename to static/apacheds/basic-ug/images/NewLDAPConnection2.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/Windows_Installer.png b/static/apacheds/basic-ug/images/Windows_Installer.png
similarity index 100%
rename from content/apacheds/basic-ug/images/Windows_Installer.png
rename to static/apacheds/basic-ug/images/Windows_Installer.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/anonymous-access.png b/static/apacheds/basic-ug/images/anonymous-access.png
similarity index 100%
rename from content/apacheds/basic-ug/images/anonymous-access.png
rename to static/apacheds/basic-ug/images/anonymous-access.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/authentication-options-ls.png b/static/apacheds/basic-ug/images/authentication-options-ls.png
similarity index 100%
rename from content/apacheds/basic-ug/images/authentication-options-ls.png
rename to static/apacheds/basic-ug/images/authentication-options-ls.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/authorization-sample-entries.png b/static/apacheds/basic-ug/images/authorization-sample-entries.png
similarity index 100%
rename from content/apacheds/basic-ug/images/authorization-sample-entries.png
rename to static/apacheds/basic-ug/images/authorization-sample-entries.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/confluence-logon.png b/static/apacheds/basic-ug/images/confluence-logon.png
similarity index 100%
rename from content/apacheds/basic-ug/images/confluence-logon.png
rename to static/apacheds/basic-ug/images/confluence-logon.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/connected-schema-project.png b/static/apacheds/basic-ug/images/connected-schema-project.png
similarity index 100%
rename from content/apacheds/basic-ug/images/connected-schema-project.png
rename to static/apacheds/basic-ug/images/connected-schema-project.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/connectionProperties.png b/static/apacheds/basic-ug/images/connectionProperties.png
similarity index 100%
rename from content/apacheds/basic-ug/images/connectionProperties.png
rename to static/apacheds/basic-ug/images/connectionProperties.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/cover_howes_100.gif b/static/apacheds/basic-ug/images/cover_howes_100.gif
similarity index 100%
rename from content/apacheds/basic-ug/images/cover_howes_100.gif
rename to static/apacheds/basic-ug/images/cover_howes_100.gif
Binary files differ
diff --git a/content/apacheds/basic-ug/images/cover_zoerner_100.gif b/static/apacheds/basic-ug/images/cover_zoerner_100.gif
similarity index 100%
rename from content/apacheds/basic-ug/images/cover_zoerner_100.gif
rename to static/apacheds/basic-ug/images/cover_zoerner_100.gif
Binary files differ
diff --git a/content/apacheds/basic-ug/images/create-schema.png b/static/apacheds/basic-ug/images/create-schema.png
similarity index 100%
rename from content/apacheds/basic-ug/images/create-schema.png
rename to static/apacheds/basic-ug/images/create-schema.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/de.png b/static/apacheds/basic-ug/images/de.png
similarity index 100%
rename from content/apacheds/basic-ug/images/de.png
rename to static/apacheds/basic-ug/images/de.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/delete-entry.png b/static/apacheds/basic-ug/images/delete-entry.png
similarity index 100%
rename from content/apacheds/basic-ug/images/delete-entry.png
rename to static/apacheds/basic-ug/images/delete-entry.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/eclipse-showview-schemas.png b/static/apacheds/basic-ug/images/eclipse-showview-schemas.png
similarity index 100%
rename from content/apacheds/basic-ug/images/eclipse-showview-schemas.png
rename to static/apacheds/basic-ug/images/eclipse-showview-schemas.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/enable-access-control.png b/static/apacheds/basic-ug/images/enable-access-control.png
similarity index 100%
rename from content/apacheds/basic-ug/images/enable-access-control.png
rename to static/apacheds/basic-ug/images/enable-access-control.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/entryEditor.png b/static/apacheds/basic-ug/images/entryEditor.png
similarity index 100%
rename from content/apacheds/basic-ug/images/entryEditor.png
rename to static/apacheds/basic-ug/images/entryEditor.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/export-schema.png b/static/apacheds/basic-ug/images/export-schema.png
similarity index 100%
rename from content/apacheds/basic-ug/images/export-schema.png
rename to static/apacheds/basic-ug/images/export-schema.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/fromX500toLDAP.png b/static/apacheds/basic-ug/images/fromX500toLDAP.png
similarity index 100%
rename from content/apacheds/basic-ug/images/fromX500toLDAP.png
rename to static/apacheds/basic-ug/images/fromX500toLDAP.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/import-entry-studio.png b/static/apacheds/basic-ug/images/import-entry-studio.png
similarity index 100%
rename from content/apacheds/basic-ug/images/import-entry-studio.png
rename to static/apacheds/basic-ug/images/import-entry-studio.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/import-schema.png b/static/apacheds/basic-ug/images/import-schema.png
similarity index 100%
rename from content/apacheds/basic-ug/images/import-schema.png
rename to static/apacheds/basic-ug/images/import-schema.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/keystore-configuration.png b/static/apacheds/basic-ug/images/keystore-configuration.png
similarity index 100%
rename from content/apacheds/basic-ug/images/keystore-configuration.png
rename to static/apacheds/basic-ug/images/keystore-configuration.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/ldap-tools.png b/static/apacheds/basic-ug/images/ldap-tools.png
similarity index 100%
rename from content/apacheds/basic-ug/images/ldap-tools.png
rename to static/apacheds/basic-ug/images/ldap-tools.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/ldif-import-file-select.png b/static/apacheds/basic-ug/images/ldif-import-file-select.png
similarity index 100%
rename from content/apacheds/basic-ug/images/ldif-import-file-select.png
rename to static/apacheds/basic-ug/images/ldif-import-file-select.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/open-schema-browser.png b/static/apacheds/basic-ug/images/open-schema-browser.png
similarity index 100%
rename from content/apacheds/basic-ug/images/open-schema-browser.png
rename to static/apacheds/basic-ug/images/open-schema-browser.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/partitions-in-studio-after-addition.png b/static/apacheds/basic-ug/images/partitions-in-studio-after-addition.png
similarity index 100%
rename from content/apacheds/basic-ug/images/partitions-in-studio-after-addition.png
rename to static/apacheds/basic-ug/images/partitions-in-studio-after-addition.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/partitions-in-studio-after-installation.png b/static/apacheds/basic-ug/images/partitions-in-studio-after-installation.png
similarity index 100%
rename from content/apacheds/basic-ug/images/partitions-in-studio-after-installation.png
rename to static/apacheds/basic-ug/images/partitions-in-studio-after-installation.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/password-edit-ls.png b/static/apacheds/basic-ug/images/password-edit-ls.png
similarity index 100%
rename from content/apacheds/basic-ug/images/password-edit-ls.png
rename to static/apacheds/basic-ug/images/password-edit-ls.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/passwordEditor.png b/static/apacheds/basic-ug/images/passwordEditor.png
similarity index 100%
rename from content/apacheds/basic-ug/images/passwordEditor.png
rename to static/apacheds/basic-ug/images/passwordEditor.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/portecle-with-certificate.png b/static/apacheds/basic-ug/images/portecle-with-certificate.png
similarity index 100%
rename from content/apacheds/basic-ug/images/portecle-with-certificate.png
rename to static/apacheds/basic-ug/images/portecle-with-certificate.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/portecle-with-keystore.png b/static/apacheds/basic-ug/images/portecle-with-keystore.png
similarity index 100%
rename from content/apacheds/basic-ug/images/portecle-with-keystore.png
rename to static/apacheds/basic-ug/images/portecle-with-keystore.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/sample-structure.gif b/static/apacheds/basic-ug/images/sample-structure.gif
similarity index 100%
rename from content/apacheds/basic-ug/images/sample-structure.gif
rename to static/apacheds/basic-ug/images/sample-structure.gif
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-browser-person.png b/static/apacheds/basic-ug/images/schema-browser-person.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-browser-person.png
rename to static/apacheds/basic-ug/images/schema-browser-person.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-browser-tree.png b/static/apacheds/basic-ug/images/schema-browser-tree.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-browser-tree.png
rename to static/apacheds/basic-ug/images/schema-browser-tree.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-browser.png b/static/apacheds/basic-ug/images/schema-browser.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-browser.png
rename to static/apacheds/basic-ug/images/schema-browser.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-editor.png b/static/apacheds/basic-ug/images/schema-editor.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-editor.png
rename to static/apacheds/basic-ug/images/schema-editor.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-for-apacheds.png b/static/apacheds/basic-ug/images/schema-for-apacheds.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-for-apacheds.png
rename to static/apacheds/basic-ug/images/schema-for-apacheds.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schema-objects.png b/static/apacheds/basic-ug/images/schema-objects.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schema-objects.png
rename to static/apacheds/basic-ug/images/schema-objects.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/schemas-view-with-loaded.png b/static/apacheds/basic-ug/images/schemas-view-with-loaded.png
similarity index 100%
rename from content/apacheds/basic-ug/images/schemas-view-with-loaded.png
rename to static/apacheds/basic-ug/images/schemas-view-with-loaded.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/select-target-server.png b/static/apacheds/basic-ug/images/select-target-server.png
similarity index 100%
rename from content/apacheds/basic-ug/images/select-target-server.png
rename to static/apacheds/basic-ug/images/select-target-server.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/sevenseas-naming-context.png b/static/apacheds/basic-ug/images/sevenseas-naming-context.png
similarity index 100%
rename from content/apacheds/basic-ug/images/sevenseas-naming-context.png
rename to static/apacheds/basic-ug/images/sevenseas-naming-context.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/sevenseas-partition-creation.png b/static/apacheds/basic-ug/images/sevenseas-partition-creation.png
similarity index 100%
rename from content/apacheds/basic-ug/images/sevenseas-partition-creation.png
rename to static/apacheds/basic-ug/images/sevenseas-partition-creation.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-apacheds-configuration-ldaps.png b/static/apacheds/basic-ug/images/studio-apacheds-configuration-ldaps.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-apacheds-configuration-ldaps.png
rename to static/apacheds/basic-ug/images/studio-apacheds-configuration-ldaps.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-apacheds-configuration1.png b/static/apacheds/basic-ug/images/studio-apacheds-configuration1.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-apacheds-configuration1.png
rename to static/apacheds/basic-ug/images/studio-apacheds-configuration1.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-partitions-configuration.png b/static/apacheds/basic-ug/images/studio-partitions-configuration.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-partitions-configuration.png
rename to static/apacheds/basic-ug/images/studio-partitions-configuration.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-port-config1.png b/static/apacheds/basic-ug/images/studio-port-config1.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-port-config1.png
rename to static/apacheds/basic-ug/images/studio-port-config1.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-port-config2.png b/static/apacheds/basic-ug/images/studio-port-config2.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-port-config2.png
rename to static/apacheds/basic-ug/images/studio-port-config2.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/studio-ssl.png b/static/apacheds/basic-ug/images/studio-ssl.png
similarity index 100%
rename from content/apacheds/basic-ug/images/studio-ssl.png
rename to static/apacheds/basic-ug/images/studio-ssl.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/thunderbird-adressbook.png b/static/apacheds/basic-ug/images/thunderbird-adressbook.png
similarity index 100%
rename from content/apacheds/basic-ug/images/thunderbird-adressbook.png
rename to static/apacheds/basic-ug/images/thunderbird-adressbook.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/thunderbird-new-ldap-1.png b/static/apacheds/basic-ug/images/thunderbird-new-ldap-1.png
similarity index 100%
rename from content/apacheds/basic-ug/images/thunderbird-new-ldap-1.png
rename to static/apacheds/basic-ug/images/thunderbird-new-ldap-1.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/thunderbird-new-ldap-2.png b/static/apacheds/basic-ug/images/thunderbird-new-ldap-2.png
similarity index 100%
rename from content/apacheds/basic-ug/images/thunderbird-new-ldap-2.png
rename to static/apacheds/basic-ug/images/thunderbird-new-ldap-2.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/thunderbird-new-ldap-directory-menu.png b/static/apacheds/basic-ug/images/thunderbird-new-ldap-directory-menu.png
similarity index 100%
rename from content/apacheds/basic-ug/images/thunderbird-new-ldap-directory-menu.png
rename to static/apacheds/basic-ug/images/thunderbird-new-ldap-directory-menu.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/thunderbird-open-adressbook.png b/static/apacheds/basic-ug/images/thunderbird-open-adressbook.png
similarity index 100%
rename from content/apacheds/basic-ug/images/thunderbird-open-adressbook.png
rename to static/apacheds/basic-ug/images/thunderbird-open-adressbook.png
Binary files differ
diff --git a/content/apacheds/basic-ug/images/w32_service_properties.png b/static/apacheds/basic-ug/images/w32_service_properties.png
similarity index 100%
rename from content/apacheds/basic-ug/images/w32_service_properties.png
rename to static/apacheds/basic-ug/images/w32_service_properties.png
Binary files differ
diff --git a/content/apacheds/basic-ug/resources/apache-ds-tutorial.ldif b/static/apacheds/basic-ug/resources/apache-ds-tutorial.ldif
similarity index 100%
rename from content/apacheds/basic-ug/resources/apache-ds-tutorial.ldif
rename to static/apacheds/basic-ug/resources/apache-ds-tutorial.ldif
diff --git a/content/apacheds/basic-ug/resources/captain-hook-delete.ldif b/static/apacheds/basic-ug/resources/captain-hook-delete.ldif
similarity index 100%
rename from content/apacheds/basic-ug/resources/captain-hook-delete.ldif
rename to static/apacheds/basic-ug/resources/captain-hook-delete.ldif
diff --git a/content/apacheds/basic-ug/resources/captain-hook-hierarchy.ldif b/static/apacheds/basic-ug/resources/captain-hook-hierarchy.ldif
similarity index 100%
rename from content/apacheds/basic-ug/resources/captain-hook-hierarchy.ldif
rename to static/apacheds/basic-ug/resources/captain-hook-hierarchy.ldif
diff --git a/content/apacheds/basic-ug/resources/captain-hook-modify.ldif b/static/apacheds/basic-ug/resources/captain-hook-modify.ldif
similarity index 100%
rename from content/apacheds/basic-ug/resources/captain-hook-modify.ldif
rename to static/apacheds/basic-ug/resources/captain-hook-modify.ldif
diff --git a/content/apacheds/basic-ug/resources/captain-hook.ldif b/static/apacheds/basic-ug/resources/captain-hook.ldif
similarity index 100%
rename from content/apacheds/basic-ug/resources/captain-hook.ldif
rename to static/apacheds/basic-ug/resources/captain-hook.ldif
diff --git a/content/apacheds/configuration/adsconfig.xml b/static/apacheds/configuration/adsconfig.xml
similarity index 100%
rename from content/apacheds/configuration/adsconfig.xml
rename to static/apacheds/configuration/adsconfig.xml
diff --git a/content/apacheds/configuration/adsconfig.xsl b/static/apacheds/configuration/adsconfig.xsl
similarity index 100%
rename from content/apacheds/configuration/adsconfig.xsl
rename to static/apacheds/configuration/adsconfig.xsl
diff --git a/content/apacheds/download/.htaccess b/static/apacheds/download/.htaccess
similarity index 100%
rename from content/apacheds/download/.htaccess
rename to static/apacheds/download/.htaccess
diff --git a/content/apacheds/download/download-archive.cgi b/static/apacheds/download/download-archive.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-archive.cgi
rename to static/apacheds/download/download-archive.cgi
diff --git a/content/apacheds/download/download-linux-bin.cgi b/static/apacheds/download/download-linux-bin.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-linux-bin.cgi
rename to static/apacheds/download/download-linux-bin.cgi
diff --git a/content/apacheds/download/download-linux-deb.cgi b/static/apacheds/download/download-linux-deb.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-linux-deb.cgi
rename to static/apacheds/download/download-linux-deb.cgi
diff --git a/content/apacheds/download/download-linux-rpm.cgi b/static/apacheds/download/download-linux-rpm.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-linux-rpm.cgi
rename to static/apacheds/download/download-linux-rpm.cgi
diff --git a/content/apacheds/download/download-macosx.cgi b/static/apacheds/download/download-macosx.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-macosx.cgi
rename to static/apacheds/download/download-macosx.cgi
diff --git a/content/apacheds/download/download-sources.cgi b/static/apacheds/download/download-sources.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-sources.cgi
rename to static/apacheds/download/download-sources.cgi
diff --git a/content/apacheds/download/download-windows.cgi b/static/apacheds/download/download-windows.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/apacheds/download/download-windows.cgi
rename to static/apacheds/download/download-windows.cgi
diff --git a/content/apacheds/download/images/installation_archive_1.jpg b/static/apacheds/download/images/installation_archive_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_archive_1.jpg
rename to static/apacheds/download/images/installation_archive_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_archive_2.jpg b/static/apacheds/download/images/installation_archive_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_archive_2.jpg
rename to static/apacheds/download/images/installation_archive_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_bin_1.jpg b/static/apacheds/download/images/installation_linux_bin_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_bin_1.jpg
rename to static/apacheds/download/images/installation_linux_bin_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_bin_2.jpg b/static/apacheds/download/images/installation_linux_bin_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_bin_2.jpg
rename to static/apacheds/download/images/installation_linux_bin_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_deb_1.jpg b/static/apacheds/download/images/installation_linux_deb_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_deb_1.jpg
rename to static/apacheds/download/images/installation_linux_deb_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_deb_2.jpg b/static/apacheds/download/images/installation_linux_deb_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_deb_2.jpg
rename to static/apacheds/download/images/installation_linux_deb_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_deb_3.jpg b/static/apacheds/download/images/installation_linux_deb_3.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_deb_3.jpg
rename to static/apacheds/download/images/installation_linux_deb_3.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_deb_4.jpg b/static/apacheds/download/images/installation_linux_deb_4.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_deb_4.jpg
rename to static/apacheds/download/images/installation_linux_deb_4.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_deb_5.jpg b/static/apacheds/download/images/installation_linux_deb_5.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_deb_5.jpg
rename to static/apacheds/download/images/installation_linux_deb_5.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_pkg_1.jpg b/static/apacheds/download/images/installation_linux_pkg_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_pkg_1.jpg
rename to static/apacheds/download/images/installation_linux_pkg_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_pkg_2.jpg b/static/apacheds/download/images/installation_linux_pkg_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_pkg_2.jpg
rename to static/apacheds/download/images/installation_linux_pkg_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_rpm_1.jpg b/static/apacheds/download/images/installation_linux_rpm_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_rpm_1.jpg
rename to static/apacheds/download/images/installation_linux_rpm_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_rpm_2.jpg b/static/apacheds/download/images/installation_linux_rpm_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_rpm_2.jpg
rename to static/apacheds/download/images/installation_linux_rpm_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_rpm_3.jpg b/static/apacheds/download/images/installation_linux_rpm_3.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_rpm_3.jpg
rename to static/apacheds/download/images/installation_linux_rpm_3.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_linux_rpm_4.jpg b/static/apacheds/download/images/installation_linux_rpm_4.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_linux_rpm_4.jpg
rename to static/apacheds/download/images/installation_linux_rpm_4.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_macosx_1.jpg b/static/apacheds/download/images/installation_macosx_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_macosx_1.jpg
rename to static/apacheds/download/images/installation_macosx_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_macosx_2.jpg b/static/apacheds/download/images/installation_macosx_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_macosx_2.jpg
rename to static/apacheds/download/images/installation_macosx_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_macosx_3.jpg b/static/apacheds/download/images/installation_macosx_3.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_macosx_3.jpg
rename to static/apacheds/download/images/installation_macosx_3.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_macosx_4.jpg b/static/apacheds/download/images/installation_macosx_4.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_macosx_4.jpg
rename to static/apacheds/download/images/installation_macosx_4.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_windows_1.jpg b/static/apacheds/download/images/installation_windows_1.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_windows_1.jpg
rename to static/apacheds/download/images/installation_windows_1.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_windows_2.jpg b/static/apacheds/download/images/installation_windows_2.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_windows_2.jpg
rename to static/apacheds/download/images/installation_windows_2.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_windows_3.jpg b/static/apacheds/download/images/installation_windows_3.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_windows_3.jpg
rename to static/apacheds/download/images/installation_windows_3.jpg
Binary files differ
diff --git a/content/apacheds/download/images/installation_windows_4.jpg b/static/apacheds/download/images/installation_windows_4.jpg
similarity index 100%
rename from content/apacheds/download/images/installation_windows_4.jpg
rename to static/apacheds/download/images/installation_windows_4.jpg
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/admin-authentication.png b/static/apacheds/kerberos-ug/images/admin-authentication.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/admin-authentication.png
rename to static/apacheds/kerberos-ug/images/admin-authentication.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/admin-connection.png b/static/apacheds/kerberos-ug/images/admin-connection.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/admin-connection.png
rename to static/apacheds/kerberos-ug/images/admin-connection.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/authent-hierarchy.graphml b/static/apacheds/kerberos-ug/images/authent-hierarchy.graphml
similarity index 100%
rename from content/apacheds/kerberos-ug/images/authent-hierarchy.graphml
rename to static/apacheds/kerberos-ug/images/authent-hierarchy.graphml
diff --git a/content/apacheds/kerberos-ug/images/authent-hierarchy.png b/static/apacheds/kerberos-ug/images/authent-hierarchy.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/authent-hierarchy.png
rename to static/apacheds/kerberos-ug/images/authent-hierarchy.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/enable-kerberos.png b/static/apacheds/kerberos-ug/images/enable-kerberos.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/enable-kerberos.png
rename to static/apacheds/kerberos-ug/images/enable-kerberos.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-as-no-padata.graphml b/static/apacheds/kerberos-ug/images/kerberos-as-no-padata.graphml
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-as-no-padata.graphml
rename to static/apacheds/kerberos-ug/images/kerberos-as-no-padata.graphml
diff --git a/content/apacheds/kerberos-ug/images/kerberos-as-no-padata.png b/static/apacheds/kerberos-ug/images/kerberos-as-no-padata.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-as-no-padata.png
rename to static/apacheds/kerberos-ug/images/kerberos-as-no-padata.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-as-padata.graphml b/static/apacheds/kerberos-ug/images/kerberos-as-padata.graphml
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-as-padata.graphml
rename to static/apacheds/kerberos-ug/images/kerberos-as-padata.graphml
diff --git a/content/apacheds/kerberos-ug/images/kerberos-as-padata.png b/static/apacheds/kerberos-ug/images/kerberos-as-padata.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-as-padata.png
rename to static/apacheds/kerberos-ug/images/kerberos-as-padata.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-auth.graphml b/static/apacheds/kerberos-ug/images/kerberos-auth.graphml
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-auth.graphml
rename to static/apacheds/kerberos-ug/images/kerberos-auth.graphml
diff --git a/content/apacheds/kerberos-ug/images/kerberos-auth.png b/static/apacheds/kerberos-ug/images/kerberos-auth.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-auth.png
rename to static/apacheds/kerberos-ug/images/kerberos-auth.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-authent.png b/static/apacheds/kerberos-ug/images/kerberos-authent.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-authent.png
rename to static/apacheds/kerberos-ug/images/kerberos-authent.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-config.png b/static/apacheds/kerberos-ug/images/kerberos-config.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-config.png
rename to static/apacheds/kerberos-ug/images/kerberos-config.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-connection.png b/static/apacheds/kerberos-ug/images/kerberos-connection.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-connection.png
rename to static/apacheds/kerberos-ug/images/kerberos-connection.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/kerberos-realm-config.png b/static/apacheds/kerberos-ug/images/kerberos-realm-config.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/kerberos-realm-config.png
rename to static/apacheds/kerberos-ug/images/kerberos-realm-config.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/ldap-config.png b/static/apacheds/kerberos-ug/images/ldap-config.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/ldap-config.png
rename to static/apacheds/kerberos-ug/images/ldap-config.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/network-parameters.png b/static/apacheds/kerberos-ug/images/network-parameters.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/network-parameters.png
rename to static/apacheds/kerberos-ug/images/network-parameters.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/new-connection.png b/static/apacheds/kerberos-ug/images/new-connection.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/new-connection.png
rename to static/apacheds/kerberos-ug/images/new-connection.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/open-config.png b/static/apacheds/kerberos-ug/images/open-config.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/open-config.png
rename to static/apacheds/kerberos-ug/images/open-config.png
Binary files differ
diff --git a/content/apacheds/kerberos-ug/images/ticket.graphml b/static/apacheds/kerberos-ug/images/ticket.graphml
similarity index 100%
rename from content/apacheds/kerberos-ug/images/ticket.graphml
rename to static/apacheds/kerberos-ug/images/ticket.graphml
diff --git a/content/apacheds/kerberos-ug/images/ticket.png b/static/apacheds/kerberos-ug/images/ticket.png
similarity index 100%
rename from content/apacheds/kerberos-ug/images/ticket.png
rename to static/apacheds/kerberos-ug/images/ticket.png
Binary files differ
diff --git a/content/apacheds/settings.jar b/static/apacheds/settings.jar
similarity index 100%
rename from content/apacheds/settings.jar
rename to static/apacheds/settings.jar
Binary files differ
diff --git a/content/api/download/.htaccess b/static/api/download/.htaccess
similarity index 100%
rename from content/api/download/.htaccess
rename to static/api/download/.htaccess
diff --git a/content/api/download/download-archive-1.cgi b/static/api/download/download-archive-1.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/api/download/download-archive-1.cgi
rename to static/api/download/download-archive-1.cgi
diff --git a/content/api/download/download-archive-2.cgi b/static/api/download/download-archive-2.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/api/download/download-archive-2.cgi
rename to static/api/download/download-archive-2.cgi
diff --git a/content/api/download/download-sources-1.cgi b/static/api/download/download-sources-1.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/api/download/download-sources-1.cgi
rename to static/api/download/download-sources-1.cgi
diff --git a/content/api/download/download-sources-2.cgi b/static/api/download/download-sources-2.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/api/download/download-sources-2.cgi
rename to static/api/download/download-sources-2.cgi
diff --git a/content/api/download/images/installation_archive_1.jpg b/static/api/download/images/installation_archive_1.jpg
similarity index 100%
rename from content/api/download/images/installation_archive_1.jpg
rename to static/api/download/images/installation_archive_1.jpg
Binary files differ
diff --git a/content/api/download/images/installation_archive_2.jpg b/static/api/download/images/installation_archive_2.jpg
similarity index 100%
rename from content/api/download/images/installation_archive_2.jpg
rename to static/api/download/images/installation_archive_2.jpg
Binary files differ
diff --git a/content/api/internal-design-guide/images/EndTransactionRequest.graphml b/static/api/internal-design-guide/images/EndTransactionRequest.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/EndTransactionRequest.graphml
rename to static/api/internal-design-guide/images/EndTransactionRequest.graphml
diff --git a/content/api/internal-design-guide/images/EndTransactionRequest.png b/static/api/internal-design-guide/images/EndTransactionRequest.png
similarity index 100%
rename from content/api/internal-design-guide/images/EndTransactionRequest.png
rename to static/api/internal-design-guide/images/EndTransactionRequest.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/EndTransactionResponse.graphml b/static/api/internal-design-guide/images/EndTransactionResponse.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/EndTransactionResponse.graphml
rename to static/api/internal-design-guide/images/EndTransactionResponse.graphml
diff --git a/content/api/internal-design-guide/images/EndTransactionResponse.png b/static/api/internal-design-guide/images/EndTransactionResponse.png
similarity index 100%
rename from content/api/internal-design-guide/images/EndTransactionResponse.png
rename to static/api/internal-design-guide/images/EndTransactionResponse.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/TLVs.png b/static/api/internal-design-guide/images/TLVs.png
similarity index 100%
rename from content/api/internal-design-guide/images/TLVs.png
rename to static/api/internal-design-guide/images/TLVs.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/architecture.graphml b/static/api/internal-design-guide/images/architecture.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/architecture.graphml
rename to static/api/internal-design-guide/images/architecture.graphml
diff --git a/content/api/internal-design-guide/images/architecture.png b/static/api/internal-design-guide/images/architecture.png
similarity index 100%
rename from content/api/internal-design-guide/images/architecture.png
rename to static/api/internal-design-guide/images/architecture.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/asn1-codec.graphml b/static/api/internal-design-guide/images/asn1-codec.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/asn1-codec.graphml
rename to static/api/internal-design-guide/images/asn1-codec.graphml
diff --git a/content/api/internal-design-guide/images/asn1-codec.png b/static/api/internal-design-guide/images/asn1-codec.png
similarity index 100%
rename from content/api/internal-design-guide/images/asn1-codec.png
rename to static/api/internal-design-guide/images/asn1-codec.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/controls.graphml b/static/api/internal-design-guide/images/controls.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/controls.graphml
rename to static/api/internal-design-guide/images/controls.graphml
diff --git a/content/api/internal-design-guide/images/controls.png b/static/api/internal-design-guide/images/controls.png
similarity index 100%
rename from content/api/internal-design-guide/images/controls.png
rename to static/api/internal-design-guide/images/controls.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/extended-request-decorator.graphml b/static/api/internal-design-guide/images/extended-request-decorator.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/extended-request-decorator.graphml
rename to static/api/internal-design-guide/images/extended-request-decorator.graphml
diff --git a/content/api/internal-design-guide/images/extended-request-decorator.png b/static/api/internal-design-guide/images/extended-request-decorator.png
similarity index 100%
rename from content/api/internal-design-guide/images/extended-request-decorator.png
rename to static/api/internal-design-guide/images/extended-request-decorator.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/folder.png b/static/api/internal-design-guide/images/folder.png
old mode 100755
new mode 100644
similarity index 100%
rename from content/api/internal-design-guide/images/folder.png
rename to static/api/internal-design-guide/images/folder.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/grammar-action.graphml b/static/api/internal-design-guide/images/grammar-action.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/grammar-action.graphml
rename to static/api/internal-design-guide/images/grammar-action.graphml
diff --git a/content/api/internal-design-guide/images/grammar-action.png b/static/api/internal-design-guide/images/grammar-action.png
similarity index 100%
rename from content/api/internal-design-guide/images/grammar-action.png
rename to static/api/internal-design-guide/images/grammar-action.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/ldap-api-modules.graphml b/static/api/internal-design-guide/images/ldap-api-modules.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-api-modules.graphml
rename to static/api/internal-design-guide/images/ldap-api-modules.graphml
diff --git a/content/api/internal-design-guide/images/ldap-api-modules.png b/static/api/internal-design-guide/images/ldap-api-modules.png
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-api-modules.png
rename to static/api/internal-design-guide/images/ldap-api-modules.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/ldap-connection-factory.graphml b/static/api/internal-design-guide/images/ldap-connection-factory.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-connection-factory.graphml
rename to static/api/internal-design-guide/images/ldap-connection-factory.graphml
diff --git a/content/api/internal-design-guide/images/ldap-connection-factory.png b/static/api/internal-design-guide/images/ldap-connection-factory.png
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-connection-factory.png
rename to static/api/internal-design-guide/images/ldap-connection-factory.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/ldap-connection.graphml b/static/api/internal-design-guide/images/ldap-connection.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-connection.graphml
rename to static/api/internal-design-guide/images/ldap-connection.graphml
diff --git a/content/api/internal-design-guide/images/ldap-connection.png b/static/api/internal-design-guide/images/ldap-connection.png
similarity index 100%
rename from content/api/internal-design-guide/images/ldap-connection.png
rename to static/api/internal-design-guide/images/ldap-connection.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/ldapconnection.graphml b/static/api/internal-design-guide/images/ldapconnection.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/ldapconnection.graphml
rename to static/api/internal-design-guide/images/ldapconnection.graphml
diff --git a/content/api/internal-design-guide/images/ldapconnection.png b/static/api/internal-design-guide/images/ldapconnection.png
similarity index 100%
rename from content/api/internal-design-guide/images/ldapconnection.png
rename to static/api/internal-design-guide/images/ldapconnection.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/sm-transition.graphml b/static/api/internal-design-guide/images/sm-transition.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/sm-transition.graphml
rename to static/api/internal-design-guide/images/sm-transition.graphml
diff --git a/content/api/internal-design-guide/images/sm-transition.png b/static/api/internal-design-guide/images/sm-transition.png
similarity index 100%
rename from content/api/internal-design-guide/images/sm-transition.png
rename to static/api/internal-design-guide/images/sm-transition.png
Binary files differ
diff --git a/content/api/internal-design-guide/images/tlv-bervalue.graphml b/static/api/internal-design-guide/images/tlv-bervalue.graphml
similarity index 100%
rename from content/api/internal-design-guide/images/tlv-bervalue.graphml
rename to static/api/internal-design-guide/images/tlv-bervalue.graphml
diff --git a/content/api/internal-design-guide/images/tlv-bervalue.png b/static/api/internal-design-guide/images/tlv-bervalue.png
similarity index 100%
rename from content/api/internal-design-guide/images/tlv-bervalue.png
rename to static/api/internal-design-guide/images/tlv-bervalue.png
Binary files differ
diff --git a/content/api/user-guide/images/OID-state-automaton.graphml b/static/api/user-guide/images/OID-state-automaton.graphml
similarity index 100%
rename from content/api/user-guide/images/OID-state-automaton.graphml
rename to static/api/user-guide/images/OID-state-automaton.graphml
diff --git a/content/api/user-guide/images/OID-state-automaton.png b/static/api/user-guide/images/OID-state-automaton.png
similarity index 100%
rename from content/api/user-guide/images/OID-state-automaton.png
rename to static/api/user-guide/images/OID-state-automaton.png
Binary files differ
diff --git a/content/api/user-guide/images/SchemaObjectHier.png b/static/api/user-guide/images/SchemaObjectHier.png
similarity index 100%
rename from content/api/user-guide/images/SchemaObjectHier.png
rename to static/api/user-guide/images/SchemaObjectHier.png
Binary files differ
diff --git a/content/api/user-guide/images/SchemaObjects.png b/static/api/user-guide/images/SchemaObjects.png
similarity index 100%
rename from content/api/user-guide/images/SchemaObjects.png
rename to static/api/user-guide/images/SchemaObjects.png
Binary files differ
diff --git a/content/api/user-guide/images/entry.png b/static/api/user-guide/images/entry.png
similarity index 100%
rename from content/api/user-guide/images/entry.png
rename to static/api/user-guide/images/entry.png
Binary files differ
diff --git a/content/conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf b/static/conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf
similarity index 100%
rename from content/conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf
rename to static/conference-materials.data/3rdOpenHUG2010_Seelmann_ApacheDirectoryHBase.pdf
Binary files differ
diff --git a/content/conference-materials.data/6078680.pdf b/static/conference-materials.data/6078680.pdf
similarity index 100%
rename from content/conference-materials.data/6078680.pdf
rename to static/conference-materials.data/6078680.pdf
Binary files differ
diff --git a/content/conference-materials.data/ACEU2008.jar b/static/conference-materials.data/ACEU2008.jar
similarity index 100%
rename from content/conference-materials.data/ACEU2008.jar
rename to static/conference-materials.data/ACEU2008.jar
Binary files differ
diff --git a/content/conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf b/static/conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf
similarity index 100%
rename from content/conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf
rename to static/conference-materials.data/Alex_Karasulu_-_Merits_of_Directories.pdf
Binary files differ
diff --git a/content/conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf b/static/conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf
similarity index 100%
rename from content/conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf
rename to static/conference-materials.data/Alex_Karasulu_-_Workshop_Embed_ApacheDS.pdf
Binary files differ
diff --git a/content/conference-materials.data/AnatomyOfSecureWebApp.pdf b/static/conference-materials.data/AnatomyOfSecureWebApp.pdf
similarity index 100%
rename from content/conference-materials.data/AnatomyOfSecureWebApp.pdf
rename to static/conference-materials.data/AnatomyOfSecureWebApp.pdf
Binary files differ
diff --git a/content/conference-materials.data/ApacheCon-EU-2008-light.pdf b/static/conference-materials.data/ApacheCon-EU-2008-light.pdf
similarity index 100%
rename from content/conference-materials.data/ApacheCon-EU-2008-light.pdf
rename to static/conference-materials.data/ApacheCon-EU-2008-light.pdf
Binary files differ
diff --git a/content/conference-materials.data/ApacheCon2006-ADS.pdf b/static/conference-materials.data/ApacheCon2006-ADS.pdf
similarity index 100%
rename from content/conference-materials.data/ApacheCon2006-ADS.pdf
rename to static/conference-materials.data/ApacheCon2006-ADS.pdf
Binary files differ
diff --git a/content/conference-materials.data/ApacheConNA-Fortress-2015.pdf b/static/conference-materials.data/ApacheConNA-Fortress-2015.pdf
similarity index 100%
rename from content/conference-materials.data/ApacheConNA-Fortress-2015.pdf
rename to static/conference-materials.data/ApacheConNA-Fortress-2015.pdf
Binary files differ
diff --git a/content/conference-materials.data/Java_und_LDAP.pdf b/static/conference-materials.data/Java_und_LDAP.pdf
similarity index 100%
rename from content/conference-materials.data/Java_und_LDAP.pdf
rename to static/conference-materials.data/Java_und_LDAP.pdf
Binary files differ
diff --git a/content/conference-materials.data/LDAPCon-2011-Studio.pdf b/static/conference-materials.data/LDAPCon-2011-Studio.pdf
similarity index 100%
rename from content/conference-materials.data/LDAPCon-2011-Studio.pdf
rename to static/conference-materials.data/LDAPCon-2011-Studio.pdf
Binary files differ
diff --git a/content/conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf b/static/conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf
similarity index 100%
rename from content/conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf
rename to static/conference-materials.data/LDAPcon.2007_Architecting.the.Modern.LDAP.Rennaisance_by.Alex.Karasulu.pdf
Binary files differ
diff --git a/content/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pdf b/static/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pdf
similarity index 100%
rename from content/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pdf
rename to static/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Paper.pdf
Binary files differ
diff --git a/content/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf b/static/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf
similarity index 100%
rename from content/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf
rename to static/conference-materials.data/LDAPcon.2007_LDAP.Stored.Procedures.and.Triggers.in.ApacheDS_by.Ersin.Er_Presentation.pdf
Binary files differ
diff --git a/content/conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf b/static/conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf
similarity index 100%
rename from content/conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf
rename to static/conference-materials.data/LdapCon2007_ApacheDirectoryStudio-presentation.pdf
Binary files differ
diff --git a/content/conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf b/static/conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf
similarity index 100%
rename from content/conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf
rename to static/conference-materials.data/LdapCon2007_ApacheDirectoryStudio.pdf
Binary files differ
diff --git a/content/conference-materials.data/Rbac-Directory-ApacheCon.pdf b/static/conference-materials.data/Rbac-Directory-ApacheCon.pdf
similarity index 100%
rename from content/conference-materials.data/Rbac-Directory-ApacheCon.pdf
rename to static/conference-materials.data/Rbac-Directory-ApacheCon.pdf
Binary files differ
diff --git a/content/conference-materials.data/Single_Sign_On.pdf b/static/conference-materials.data/Single_Sign_On.pdf
similarity index 100%
rename from content/conference-materials.data/Single_Sign_On.pdf
rename to static/conference-materials.data/Single_Sign_On.pdf
Binary files differ
diff --git a/content/conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf b/static/conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf
similarity index 100%
rename from content/conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf
rename to static/conference-materials.data/ac-us-06-FR14-ErsinEr-Stored_Procedures_and_Triggers_Arrive_in_ApacheDS.pdf
Binary files differ
diff --git a/content/conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf b/static/conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf
similarity index 100%
rename from content/conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf
rename to static/conference-materials.data/ac-us-06-FR20-ErsinEr-ApacheDS_Access_Control_Administration_The_X.500_Way.pdf
Binary files differ
diff --git "a/content/conference-materials.data/ads-2.0-what\047s-new.pdf" "b/static/conference-materials.data/ads-2.0-what\047s-new.pdf"
similarity index 100%
rename from "content/conference-materials.data/ads-2.0-what\047s-new.pdf"
rename to "static/conference-materials.data/ads-2.0-what\047s-new.pdf"
Binary files differ
diff --git a/content/conference-materials.data/apachecon2015.pdf b/static/conference-materials.data/apachecon2015.pdf
similarity index 100%
rename from content/conference-materials.data/apachecon2015.pdf
rename to static/conference-materials.data/apachecon2015.pdf
Binary files differ
diff --git a/content/conference-materials.data/cours-ldap.odp b/static/conference-materials.data/cours-ldap.odp
similarity index 100%
rename from content/conference-materials.data/cours-ldap.odp
rename to static/conference-materials.data/cours-ldap.odp
Binary files differ
diff --git a/content/conference-materials.data/enterprise-ldap-apachecon-eu.pdf b/static/conference-materials.data/enterprise-ldap-apachecon-eu.pdf
similarity index 100%
rename from content/conference-materials.data/enterprise-ldap-apachecon-eu.pdf
rename to static/conference-materials.data/enterprise-ldap-apachecon-eu.pdf
Binary files differ
diff --git a/content/conference-materials.data/enterprise-ldap-apachecon-eu.ppt b/static/conference-materials.data/enterprise-ldap-apachecon-eu.ppt
similarity index 100%
rename from content/conference-materials.data/enterprise-ldap-apachecon-eu.ppt
rename to static/conference-materials.data/enterprise-ldap-apachecon-eu.ppt
Binary files differ
diff --git a/content/conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf b/static/conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf
similarity index 100%
rename from content/conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf
rename to static/conference-materials.data/kerberos-in-your-jvm-apacheconcore15.pdf
Binary files differ
diff --git a/content/conference-materials.data/leveraging-RFC4533.pdf b/static/conference-materials.data/leveraging-RFC4533.pdf
similarity index 100%
rename from content/conference-materials.data/leveraging-RFC4533.pdf
rename to static/conference-materials.data/leveraging-RFC4533.pdf
Binary files differ
diff --git a/content/conference-materials.data/presentation.odp b/static/conference-materials.data/presentation.odp
similarity index 100%
rename from content/conference-materials.data/presentation.odp
rename to static/conference-materials.data/presentation.odp
Binary files differ
diff --git a/content/conference-materials.data/replication.odt b/static/conference-materials.data/replication.odt
similarity index 100%
rename from content/conference-materials.data/replication.odt
rename to static/conference-materials.data/replication.odt
Binary files differ
diff --git a/content/conference-materials.data/replication.pdf b/static/conference-materials.data/replication.pdf
similarity index 100%
rename from content/conference-materials.data/replication.pdf
rename to static/conference-materials.data/replication.pdf
Binary files differ
diff --git a/content/conference-materials.data/szoerner-berlinjar-ldap.pdf b/static/conference-materials.data/szoerner-berlinjar-ldap.pdf
similarity index 100%
rename from content/conference-materials.data/szoerner-berlinjar-ldap.pdf
rename to static/conference-materials.data/szoerner-berlinjar-ldap.pdf
Binary files differ
diff --git a/content/conference-materials.data/szoerner-jugbb-ldap.pdf b/static/conference-materials.data/szoerner-jugbb-ldap.pdf
similarity index 100%
rename from content/conference-materials.data/szoerner-jugbb-ldap.pdf
rename to static/conference-materials.data/szoerner-jugbb-ldap.pdf
Binary files differ
diff --git a/content/conference-materials.data/szoerner-ruhrjug-ldap.pdf b/static/conference-materials.data/szoerner-ruhrjug-ldap.pdf
similarity index 100%
rename from content/conference-materials.data/szoerner-ruhrjug-ldap.pdf
rename to static/conference-materials.data/szoerner-ruhrjug-ldap.pdf
Binary files differ
diff --git a/content/conference-materials.data/szoerner_apachedirectorystudio.pdf b/static/conference-materials.data/szoerner_apachedirectorystudio.pdf
similarity index 100%
rename from content/conference-materials.data/szoerner_apachedirectorystudio.pdf
rename to static/conference-materials.data/szoerner_apachedirectorystudio.pdf
Binary files differ
diff --git a/content/conference-materials.data/szoerner_apacheds_jax2007.pdf b/static/conference-materials.data/szoerner_apacheds_jax2007.pdf
similarity index 100%
rename from content/conference-materials.data/szoerner_apacheds_jax2007.pdf
rename to static/conference-materials.data/szoerner_apacheds_jax2007.pdf
Binary files differ
diff --git a/content/conference-materials.data/testing-LDAP.pdf b/static/conference-materials.data/testing-LDAP.pdf
similarity index 100%
rename from content/conference-materials.data/testing-LDAP.pdf
rename to static/conference-materials.data/testing-LDAP.pdf
Binary files differ
diff --git a/content/conference-materials.data/toolchain-for-developpers.pdf b/static/conference-materials.data/toolchain-for-developpers.pdf
similarity index 100%
rename from content/conference-materials.data/toolchain-for-developpers.pdf
rename to static/conference-materials.data/toolchain-for-developpers.pdf
Binary files differ
diff --git a/content/conference-materials.data/towards-a-common-java-ldap-api-paper.pdf b/static/conference-materials.data/towards-a-common-java-ldap-api-paper.pdf
similarity index 100%
rename from content/conference-materials.data/towards-a-common-java-ldap-api-paper.pdf
rename to static/conference-materials.data/towards-a-common-java-ldap-api-paper.pdf
Binary files differ
diff --git a/content/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf b/static/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf
similarity index 100%
rename from content/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf
rename to static/conference-materials.data/towards_a_common_java_ldap_api-slides.pdf
Binary files differ
diff --git a/content/conference-materials.data/wettstein-authimp.pdf b/static/conference-materials.data/wettstein-authimp.pdf
similarity index 100%
rename from content/conference-materials.data/wettstein-authimp.pdf
rename to static/conference-materials.data/wettstein-authimp.pdf
Binary files differ
diff --git a/content/conference-materials.data/wettstein-idfusion-slides.pdf b/static/conference-materials.data/wettstein-idfusion-slides.pdf
similarity index 100%
rename from content/conference-materials.data/wettstein-idfusion-slides.pdf
rename to static/conference-materials.data/wettstein-idfusion-slides.pdf
Binary files differ
diff --git a/content/css/blue.css b/static/css/blue.css
similarity index 100%
rename from content/css/blue.css
rename to static/css/blue.css
diff --git a/content/css/brown.css b/static/css/brown.css
similarity index 100%
rename from content/css/brown.css
rename to static/css/brown.css
diff --git a/content/css/common.css b/static/css/common.css
similarity index 100%
rename from content/css/common.css
rename to static/css/common.css
diff --git a/content/css/green.css b/static/css/green.css
similarity index 100%
rename from content/css/green.css
rename to static/css/green.css
diff --git a/content/css/orange.css b/static/css/orange.css
similarity index 100%
rename from content/css/orange.css
rename to static/css/orange.css
diff --git a/content/css/turquoise.css b/static/css/turquoise.css
similarity index 100%
rename from content/css/turquoise.css
rename to static/css/turquoise.css
diff --git a/content/doap_fortress.rdf b/static/doap_fortress.rdf
similarity index 100%
rename from content/doap_fortress.rdf
rename to static/doap_fortress.rdf
diff --git a/content/doap_kerby.rdf b/static/doap_kerby.rdf
similarity index 100%
rename from content/doap_kerby.rdf
rename to static/doap_kerby.rdf
diff --git a/static/extpaths.txt b/static/extpaths.txt
new file mode 100644
index 0000000..df6b78a
--- /dev/null
+++ b/static/extpaths.txt
@@ -0,0 +1,106 @@
+# File format: lines starting with # or space chars are ignored.
+
+# SCIMple
+#scimple/gen-docs/1.0.0
+
+# Fortress
+fortress/gen-docs/2.0.4
+fortress/gen-docs/2.0.3
+fortress/gen-docs/2.0.2
+fortress/gen-docs/2.0.1
+fortress/gen-docs/2.0.0
+fortress/gen-docs/2.0.0-RC2
+fortress/gen-docs/2.0.0-RC1
+fortress/gen-docs/1.0.1
+fortress/gen-docs/1.0.0
+fortress/gen-docs/1.0-RC42
+fortress/gen-docs/1.0-RC40
+
+# ApacheDS
+apacheds/gen-docs/2.0.0.AM25
+apacheds/gen-docs/2.0.0-M24
+apacheds/gen-docs/2.0.0-M23
+apacheds/gen-docs/2.0.0-M22
+apacheds/gen-docs/2.0.0-M21
+apacheds/gen-docs/2.0.0-M20
+apacheds/gen-docs/2.0.0-M19
+apacheds/gen-docs/2.0.0-M18
+apacheds/gen-docs/2.0.0-M17
+apacheds/gen-docs/2.0.0-M16
+apacheds/gen-docs/2.0.0-M15
+apacheds/gen-docs/2.0.0-M14
+apacheds/gen-docs/2.0.0-M13
+apacheds/gen-docs/2.0.0-M12
+apacheds/gen-docs/2.0.0-M11
+apacheds/gen-docs/2.0.0-M10
+apacheds/gen-docs/2.0.0-M9
+apacheds/gen-docs/2.0.0-M8
+apacheds/gen-docs/2.0.0-M7
+# apacheds/gen-docs/2.0.0-M6
+apacheds/gen-docs/2.0.0-M5
+apacheds/gen-docs/2.0.0-M4
+apacheds/gen-docs/2.0.0-M3
+apacheds/gen-docs/2.0.0-M2
+apacheds/gen-docs/2.0.0-M1
+
+# API
+api/gen-docs/2.0.0
+api/gen-docs/2.0.0.AM4
+api/gen-docs/2.0.0.AM3
+api/gen-docs/2.0.0.AM2
+api/gen-docs/2.0.0.AM1
+api/gen-docs/1.0.2
+api/gen-docs/1.0.1
+api/gen-docs/1.0.0
+api/gen-docs/1.0.0-RC2
+api/gen-docs/1.0.0-RC1
+api/gen-docs/1.0.0-M33
+api/gen-docs/1.0.0-M32
+api/gen-docs/1.0.0-M31
+api/gen-docs/1.0.0-M30
+api/gen-docs/1.0.0-M29
+api/gen-docs/1.0.0-M28
+api/gen-docs/1.0.0-M27
+api/gen-docs/1.0.0-M26
+api/gen-docs/1.0.0-M25
+api/gen-docs/1.0.0-M24
+api/gen-docs/1.0.0-M23
+api/gen-docs/1.0.0-M22
+api/gen-docs/1.0.0-M21
+api/gen-docs/1.0.0-M20
+api/gen-docs/1.0.0-M19
+api/gen-docs/1.0.0-M18
+api/gen-docs/1.0.0-M17
+api/gen-docs/1.0.0-M16
+api/gen-docs/1.0.0-M15
+api/gen-docs/1.0.0-M14
+api/gen-docs/1.0.0-M13
+api/gen-docs/1.0.0-M12
+api/gen-docs/1.0.0-M11
+api/gen-docs/1.0.0-M10
+api/gen-docs/1.0.0-M9
+api/gen-docs/1.0.0-M8
+api/gen-docs/1.0.0-M7
+api/gen-docs/1.0.0-M6
+api/gen-docs/1.0.0-M5
+api/gen-docs/1.0.0-M4
+api/gen-docs/1.0.0-M3
+api/gen-docs/1.0.0-M2
+api/gen-docs/1.0.0-M1
+
+# Mavibot
+mavibot/gen-docs/1.0.0-M8
+mavibot/gen-docs/1.0.0-M7
+mavibot/gen-docs/1.0.0-M6
+mavibot/gen-docs/1.0.0-M5
+mavibot/gen-docs/1.0.0-M4
+mavibot/gen-docs/1.0.0-M3
+mavibot/gen-docs/1.0.0-M2
+# mavibot/gen-docs/1.0.0-M1 // No Javadoc available for this release
+
+# Skins
+skins/gen-docs/1.0.2
+
+# Studio
+studio/users-guide
+
diff --git a/content/fortress/download/.htaccess b/static/fortress/download/.htaccess
similarity index 100%
rename from content/fortress/download/.htaccess
rename to static/fortress/download/.htaccess
diff --git a/content/fortress/download/download-archive.cgi b/static/fortress/download/download-archive.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/fortress/download/download-archive.cgi
rename to static/fortress/download/download-archive.cgi
diff --git a/content/fortress/download/download-sources.cgi b/static/fortress/download/download-sources.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/fortress/download/download-sources.cgi
rename to static/fortress/download/download-sources.cgi
diff --git a/content/fortress/download/images/installation_archive_1.jpg b/static/fortress/download/images/installation_archive_1.jpg
similarity index 100%
rename from content/fortress/download/images/installation_archive_1.jpg
rename to static/fortress/download/images/installation_archive_1.jpg
Binary files differ
diff --git a/content/fortress/download/images/installation_archive_2.jpg b/static/fortress/download/images/installation_archive_2.jpg
similarity index 100%
rename from content/fortress/download/images/installation_archive_2.jpg
rename to static/fortress/download/images/installation_archive_2.jpg
Binary files differ
diff --git a/content/fortress/images/Screenshot-Studio-Schema-Import.png b/static/fortress/images/Screenshot-Studio-Schema-Import.png
similarity index 100%
rename from content/fortress/images/Screenshot-Studio-Schema-Import.png
rename to static/fortress/images/Screenshot-Studio-Schema-Import.png
Binary files differ
diff --git a/content/fortress/images/Screenshot1-chmod.png b/static/fortress/images/Screenshot1-chmod.png
similarity index 100%
rename from content/fortress/images/Screenshot1-chmod.png
rename to static/fortress/images/Screenshot1-chmod.png
Binary files differ
diff --git a/content/fortress/images/Screenshot10-ant-test-init.png b/static/fortress/images/Screenshot10-ant-test-init.png
similarity index 100%
rename from content/fortress/images/Screenshot10-ant-test-init.png
rename to static/fortress/images/Screenshot10-ant-test-init.png
Binary files differ
diff --git a/content/fortress/images/Screenshot11-ant-test-success.png b/static/fortress/images/Screenshot11-ant-test-success.png
similarity index 100%
rename from content/fortress/images/Screenshot11-ant-test-success.png
rename to static/fortress/images/Screenshot11-ant-test-success.png
Binary files differ
diff --git a/content/fortress/images/Screenshot12-junit-warn.png b/static/fortress/images/Screenshot12-junit-warn.png
similarity index 100%
rename from content/fortress/images/Screenshot12-junit-warn.png
rename to static/fortress/images/Screenshot12-junit-warn.png
Binary files differ
diff --git a/content/fortress/images/Screenshot13-ant-cli.png b/static/fortress/images/Screenshot13-ant-cli.png
similarity index 100%
rename from content/fortress/images/Screenshot13-ant-cli.png
rename to static/fortress/images/Screenshot13-ant-cli.png
Binary files differ
diff --git a/content/fortress/images/Screenshot14-cli.png b/static/fortress/images/Screenshot14-cli.png
similarity index 100%
rename from content/fortress/images/Screenshot14-cli.png
rename to static/fortress/images/Screenshot14-cli.png
Binary files differ
diff --git a/content/fortress/images/Screenshot15-cli-review.png b/static/fortress/images/Screenshot15-cli-review.png
similarity index 100%
rename from content/fortress/images/Screenshot15-cli-review.png
rename to static/fortress/images/Screenshot15-cli-review.png
Binary files differ
diff --git a/content/fortress/images/Screenshot16-cli-fuser.png b/static/fortress/images/Screenshot16-cli-fuser.png
similarity index 100%
rename from content/fortress/images/Screenshot16-cli-fuser.png
rename to static/fortress/images/Screenshot16-cli-fuser.png
Binary files differ
diff --git a/content/fortress/images/Screenshot17-ant-console.png b/static/fortress/images/Screenshot17-ant-console.png
similarity index 100%
rename from content/fortress/images/Screenshot17-ant-console.png
rename to static/fortress/images/Screenshot17-ant-console.png
Binary files differ
diff --git a/content/fortress/images/Screenshot18-console-main.png b/static/fortress/images/Screenshot18-console-main.png
similarity index 100%
rename from content/fortress/images/Screenshot18-console-main.png
rename to static/fortress/images/Screenshot18-console-main.png
Binary files differ
diff --git a/content/fortress/images/Screenshot19-console-admin.png b/static/fortress/images/Screenshot19-console-admin.png
similarity index 100%
rename from content/fortress/images/Screenshot19-console-admin.png
rename to static/fortress/images/Screenshot19-console-admin.png
Binary files differ
diff --git a/content/fortress/images/Screenshot2-edit-sudo.png b/static/fortress/images/Screenshot2-edit-sudo.png
similarity index 100%
rename from content/fortress/images/Screenshot2-edit-sudo.png
rename to static/fortress/images/Screenshot2-edit-sudo.png
Binary files differ
diff --git a/content/fortress/images/Screenshot20-console-review.png b/static/fortress/images/Screenshot20-console-review.png
similarity index 100%
rename from content/fortress/images/Screenshot20-console-review.png
rename to static/fortress/images/Screenshot20-console-review.png
Binary files differ
diff --git a/content/fortress/images/Screenshot21-console-access.png b/static/fortress/images/Screenshot21-console-access.png
similarity index 100%
rename from content/fortress/images/Screenshot21-console-access.png
rename to static/fortress/images/Screenshot21-console-access.png
Binary files differ
diff --git a/content/fortress/images/Screenshot22-console-deladmin.png b/static/fortress/images/Screenshot22-console-deladmin.png
similarity index 100%
rename from content/fortress/images/Screenshot22-console-deladmin.png
rename to static/fortress/images/Screenshot22-console-deladmin.png
Binary files differ
diff --git a/content/fortress/images/Screenshot23-console-audit.png b/static/fortress/images/Screenshot23-console-audit.png
similarity index 100%
rename from content/fortress/images/Screenshot23-console-audit.png
rename to static/fortress/images/Screenshot23-console-audit.png
Binary files differ
diff --git a/content/fortress/images/Screenshot24-ant-javadoc.png b/static/fortress/images/Screenshot24-ant-javadoc.png
similarity index 100%
rename from content/fortress/images/Screenshot24-ant-javadoc.png
rename to static/fortress/images/Screenshot24-ant-javadoc.png
Binary files differ
diff --git a/content/fortress/images/Screenshot25-javadoc-listing.png b/static/fortress/images/Screenshot25-javadoc-listing.png
similarity index 100%
rename from content/fortress/images/Screenshot25-javadoc-listing.png
rename to static/fortress/images/Screenshot25-javadoc-listing.png
Binary files differ
diff --git a/content/fortress/images/Screenshot26-javadoc.png b/static/fortress/images/Screenshot26-javadoc.png
similarity index 100%
rename from content/fortress/images/Screenshot26-javadoc.png
rename to static/fortress/images/Screenshot26-javadoc.png
Binary files differ
diff --git a/content/fortress/images/Screenshot27-ant-p.png b/static/fortress/images/Screenshot27-ant-p.png
similarity index 100%
rename from content/fortress/images/Screenshot27-ant-p.png
rename to static/fortress/images/Screenshot27-ant-p.png
Binary files differ
diff --git a/content/fortress/images/Screenshot28-edit-javahome-win.png b/static/fortress/images/Screenshot28-edit-javahome-win.png
similarity index 100%
rename from content/fortress/images/Screenshot28-edit-javahome-win.png
rename to static/fortress/images/Screenshot28-edit-javahome-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot28-src-listing-win.png b/static/fortress/images/Screenshot28-src-listing-win.png
similarity index 100%
rename from content/fortress/images/Screenshot28-src-listing-win.png
rename to static/fortress/images/Screenshot28-src-listing-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot29-ant-dist-win.png b/static/fortress/images/Screenshot29-ant-dist-win.png
similarity index 100%
rename from content/fortress/images/Screenshot29-ant-dist-win.png
rename to static/fortress/images/Screenshot29-ant-dist-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot3-edit-javahome.png b/static/fortress/images/Screenshot3-edit-javahome.png
similarity index 100%
rename from content/fortress/images/Screenshot3-edit-javahome.png
rename to static/fortress/images/Screenshot3-edit-javahome.png
Binary files differ
diff --git a/content/fortress/images/Screenshot30-ant-dist-success-win.png b/static/fortress/images/Screenshot30-ant-dist-success-win.png
similarity index 100%
rename from content/fortress/images/Screenshot30-ant-dist-success-win.png
rename to static/fortress/images/Screenshot30-ant-dist-success-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot31-init-slapd-win.png b/static/fortress/images/Screenshot31-init-slapd-win.png
similarity index 100%
rename from content/fortress/images/Screenshot31-init-slapd-win.png
rename to static/fortress/images/Screenshot31-init-slapd-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot32-init-slapd-success-win.png b/static/fortress/images/Screenshot32-init-slapd-success-win.png
similarity index 100%
rename from content/fortress/images/Screenshot32-init-slapd-success-win.png
rename to static/fortress/images/Screenshot32-init-slapd-success-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot33-window-warning.png b/static/fortress/images/Screenshot33-window-warning.png
similarity index 100%
rename from content/fortress/images/Screenshot33-window-warning.png
rename to static/fortress/images/Screenshot33-window-warning.png
Binary files differ
diff --git a/content/fortress/images/Screenshot34-ant-test-init-win.png b/static/fortress/images/Screenshot34-ant-test-init-win.png
similarity index 100%
rename from content/fortress/images/Screenshot34-ant-test-init-win.png
rename to static/fortress/images/Screenshot34-ant-test-init-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot35-ant-test-init-success-win.png b/static/fortress/images/Screenshot35-ant-test-init-success-win.png
similarity index 100%
rename from content/fortress/images/Screenshot35-ant-test-init-success-win.png
rename to static/fortress/images/Screenshot35-ant-test-init-success-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot36-ant-cli-win.png b/static/fortress/images/Screenshot36-ant-cli-win.png
similarity index 100%
rename from content/fortress/images/Screenshot36-ant-cli-win.png
rename to static/fortress/images/Screenshot36-ant-cli-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot37-ant-console-win.png b/static/fortress/images/Screenshot37-ant-console-win.png
similarity index 100%
rename from content/fortress/images/Screenshot37-ant-console-win.png
rename to static/fortress/images/Screenshot37-ant-console-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot38-javadoc-win.png b/static/fortress/images/Screenshot38-javadoc-win.png
similarity index 100%
rename from content/fortress/images/Screenshot38-javadoc-win.png
rename to static/fortress/images/Screenshot38-javadoc-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot39-build-properties-win.png b/static/fortress/images/Screenshot39-build-properties-win.png
similarity index 100%
rename from content/fortress/images/Screenshot39-build-properties-win.png
rename to static/fortress/images/Screenshot39-build-properties-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot4-ant-dist.png b/static/fortress/images/Screenshot4-ant-dist.png
similarity index 100%
rename from content/fortress/images/Screenshot4-ant-dist.png
rename to static/fortress/images/Screenshot4-ant-dist.png
Binary files differ
diff --git a/content/fortress/images/Screenshot4-ant-success-dist.png b/static/fortress/images/Screenshot4-ant-success-dist.png
similarity index 100%
rename from content/fortress/images/Screenshot4-ant-success-dist.png
rename to static/fortress/images/Screenshot4-ant-success-dist.png
Binary files differ
diff --git a/content/fortress/images/Screenshot40-firewall-warning-win.png b/static/fortress/images/Screenshot40-firewall-warning-win.png
similarity index 100%
rename from content/fortress/images/Screenshot40-firewall-warning-win.png
rename to static/fortress/images/Screenshot40-firewall-warning-win.png
Binary files differ
diff --git a/content/fortress/images/Screenshot41-enmasse-http-settings.png b/static/fortress/images/Screenshot41-enmasse-http-settings.png
similarity index 100%
rename from content/fortress/images/Screenshot41-enmasse-http-settings.png
rename to static/fortress/images/Screenshot41-enmasse-http-settings.png
Binary files differ
diff --git a/content/fortress/images/Screenshot42-install-enmasse-demo-success.png b/static/fortress/images/Screenshot42-install-enmasse-demo-success.png
similarity index 100%
rename from content/fortress/images/Screenshot42-install-enmasse-demo-success.png
rename to static/fortress/images/Screenshot42-install-enmasse-demo-success.png
Binary files differ
diff --git a/content/fortress/images/Screenshot43-ant-enmasse-test-success.png b/static/fortress/images/Screenshot43-ant-enmasse-test-success.png
similarity index 100%
rename from content/fortress/images/Screenshot43-ant-enmasse-test-success.png
rename to static/fortress/images/Screenshot43-ant-enmasse-test-success.png
Binary files differ
diff --git a/content/fortress/images/Screenshot43-edit-disable-rest.png b/static/fortress/images/Screenshot43-edit-disable-rest.png
similarity index 100%
rename from content/fortress/images/Screenshot43-edit-disable-rest.png
rename to static/fortress/images/Screenshot43-edit-disable-rest.png
Binary files differ
diff --git a/content/fortress/images/Screenshot5-dist-listing.png b/static/fortress/images/Screenshot5-dist-listing.png
similarity index 100%
rename from content/fortress/images/Screenshot5-dist-listing.png
rename to static/fortress/images/Screenshot5-dist-listing.png
Binary files differ
diff --git a/content/fortress/images/Screenshot6-init-slapd.png b/static/fortress/images/Screenshot6-init-slapd.png
similarity index 100%
rename from content/fortress/images/Screenshot6-init-slapd.png
rename to static/fortress/images/Screenshot6-init-slapd.png
Binary files differ
diff --git a/content/fortress/images/Screenshot7-init-slapd-success.png b/static/fortress/images/Screenshot7-init-slapd-success.png
similarity index 100%
rename from content/fortress/images/Screenshot7-init-slapd-success.png
rename to static/fortress/images/Screenshot7-init-slapd-success.png
Binary files differ
diff --git a/content/fortress/images/Screenshot8-ldap-browser.png b/static/fortress/images/Screenshot8-ldap-browser.png
similarity index 100%
rename from content/fortress/images/Screenshot8-ldap-browser.png
rename to static/fortress/images/Screenshot8-ldap-browser.png
Binary files differ
diff --git a/content/fortress/images/Screenshot9-ldap-browser-log.png b/static/fortress/images/Screenshot9-ldap-browser-log.png
similarity index 100%
rename from content/fortress/images/Screenshot9-ldap-browser-log.png
rename to static/fortress/images/Screenshot9-ldap-browser-log.png
Binary files differ
diff --git a/content/fortress/user-guide/images/ANSIRBAC-Spec.png b/static/fortress/user-guide/images/ANSIRBAC-Spec.png
similarity index 100%
rename from content/fortress/user-guide/images/ANSIRBAC-Spec.png
rename to static/fortress/user-guide/images/ANSIRBAC-Spec.png
Binary files differ
diff --git a/content/fortress/user-guide/images/ANSIRBAC-Spec_0.png b/static/fortress/user-guide/images/ANSIRBAC-Spec_0.png
similarity index 100%
rename from content/fortress/user-guide/images/ANSIRBAC-Spec_0.png
rename to static/fortress/user-guide/images/ANSIRBAC-Spec_0.png
Binary files differ
diff --git a/content/fortress/user-guide/images/ARbac.png b/static/fortress/user-guide/images/ARbac.png
similarity index 100%
rename from content/fortress/user-guide/images/ARbac.png
rename to static/fortress/user-guide/images/ARbac.png
Binary files differ
diff --git a/content/fortress/user-guide/images/MultiInstance-TraditionalNetworkDiagram2.png b/static/fortress/user-guide/images/MultiInstance-TraditionalNetworkDiagram2.png
similarity index 100%
rename from content/fortress/user-guide/images/MultiInstance-TraditionalNetworkDiagram2.png
rename to static/fortress/user-guide/images/MultiInstance-TraditionalNetworkDiagram2.png
Binary files differ
diff --git a/content/fortress/user-guide/images/RbacCore.png b/static/fortress/user-guide/images/RbacCore.png
similarity index 100%
rename from content/fortress/user-guide/images/RbacCore.png
rename to static/fortress/user-guide/images/RbacCore.png
Binary files differ
diff --git a/content/fortress/user-guide/images/RbacDSD.png b/static/fortress/user-guide/images/RbacDSD.png
similarity index 100%
rename from content/fortress/user-guide/images/RbacDSD.png
rename to static/fortress/user-guide/images/RbacDSD.png
Binary files differ
diff --git a/content/fortress/user-guide/images/RbacHier.png b/static/fortress/user-guide/images/RbacHier.png
similarity index 100%
rename from content/fortress/user-guide/images/RbacHier.png
rename to static/fortress/user-guide/images/RbacHier.png
Binary files differ
diff --git a/content/fortress/user-guide/images/RbacSSD.png b/static/fortress/user-guide/images/RbacSSD.png
similarity index 100%
rename from content/fortress/user-guide/images/RbacSSD.png
rename to static/fortress/user-guide/images/RbacSSD.png
Binary files differ
diff --git a/content/fortress/user-guide/images/fortressmultitenantldapschema600.png b/static/fortress/user-guide/images/fortressmultitenantldapschema600.png
similarity index 100%
rename from content/fortress/user-guide/images/fortressmultitenantldapschema600.png
rename to static/fortress/user-guide/images/fortressmultitenantldapschema600.png
Binary files differ
diff --git a/content/fortress/user-guide/images/multitenant-fortressnetworkdiagram600.png b/static/fortress/user-guide/images/multitenant-fortressnetworkdiagram600.png
similarity index 100%
rename from content/fortress/user-guide/images/multitenant-fortressnetworkdiagram600.png
rename to static/fortress/user-guide/images/multitenant-fortressnetworkdiagram600.png
Binary files differ
diff --git a/content/images/Fortress-IAMServer-v2.png b/static/images/Fortress-IAMServer-v2.png
similarity index 100%
rename from content/images/Fortress-IAMServer-v2.png
rename to static/images/Fortress-IAMServer-v2.png
Binary files differ
diff --git a/content/images/JetBrains_logo.png b/static/images/JetBrains_logo.png
similarity index 100%
rename from content/images/JetBrains_logo.png
rename to static/images/JetBrains_logo.png
Binary files differ
diff --git a/content/images/Kerberos.png b/static/images/Kerberos.png
similarity index 100%
rename from content/images/Kerberos.png
rename to static/images/Kerberos.png
Binary files differ
diff --git a/content/images/LdapLdaps.png b/static/images/LdapLdaps.png
similarity index 100%
rename from content/images/LdapLdaps.png
rename to static/images/LdapLdaps.png
Binary files differ
diff --git a/content/images/NewServer.png b/static/images/NewServer.png
similarity index 100%
rename from content/images/NewServer.png
rename to static/images/NewServer.png
Binary files differ
diff --git a/content/images/NewServerCreation.png b/static/images/NewServerCreation.png
similarity index 100%
rename from content/images/NewServerCreation.png
rename to static/images/NewServerCreation.png
Binary files differ
diff --git a/content/images/OID-state-automaton.graphml b/static/images/OID-state-automaton.graphml
similarity index 100%
rename from content/images/OID-state-automaton.graphml
rename to static/images/OID-state-automaton.graphml
diff --git a/content/images/Overview.png b/static/images/Overview.png
similarity index 100%
rename from content/images/Overview.png
rename to static/images/Overview.png
Binary files differ
diff --git a/content/images/Partition.png b/static/images/Partition.png
similarity index 100%
rename from content/images/Partition.png
rename to static/images/Partition.png
Binary files differ
diff --git a/content/images/SQLManager.bmp b/static/images/SQLManager.bmp
similarity index 100%
rename from content/images/SQLManager.bmp
rename to static/images/SQLManager.bmp
Binary files differ
diff --git a/content/images/api-icon_16x16.png b/static/images/api-icon_16x16.png
similarity index 100%
rename from content/images/api-icon_16x16.png
rename to static/images/api-icon_16x16.png
Binary files differ
diff --git a/content/images/body-bg.png b/static/images/body-bg.png
similarity index 100%
rename from content/images/body-bg.png
rename to static/images/body-bg.png
Binary files differ
diff --git a/content/images/borland.gif b/static/images/borland.gif
similarity index 100%
rename from content/images/borland.gif
rename to static/images/borland.gif
Binary files differ
diff --git a/content/images/browse.graphml b/static/images/browse.graphml
similarity index 100%
rename from content/images/browse.graphml
rename to static/images/browse.graphml
diff --git a/content/images/configuration-dit.png b/static/images/configuration-dit.png
similarity index 100%
rename from content/images/configuration-dit.png
rename to static/images/configuration-dit.png
Binary files differ
diff --git a/content/images/content-backgound.png b/static/images/content-backgound.png
similarity index 100%
rename from content/images/content-backgound.png
rename to static/images/content-backgound.png
Binary files differ
diff --git a/content/images/download-archive.png b/static/images/download-archive.png
similarity index 100%
rename from content/images/download-archive.png
rename to static/images/download-archive.png
Binary files differ
diff --git a/content/images/download-badge-apacheds.gif b/static/images/download-badge-apacheds.gif
similarity index 100%
rename from content/images/download-badge-apacheds.gif
rename to static/images/download-badge-apacheds.gif
Binary files differ
diff --git a/content/images/download-badge-kerby.gif b/static/images/download-badge-kerby.gif
similarity index 100%
rename from content/images/download-badge-kerby.gif
rename to static/images/download-badge-kerby.gif
Binary files differ
diff --git a/content/images/download-badge-ldap-api.gif b/static/images/download-badge-ldap-api.gif
similarity index 100%
rename from content/images/download-badge-ldap-api.gif
rename to static/images/download-badge-ldap-api.gif
Binary files differ
diff --git a/content/images/download-badge-mavibot.gif b/static/images/download-badge-mavibot.gif
similarity index 100%
rename from content/images/download-badge-mavibot.gif
rename to static/images/download-badge-mavibot.gif
Binary files differ
diff --git a/content/images/download-badge-studio.gif b/static/images/download-badge-studio.gif
similarity index 100%
rename from content/images/download-badge-studio.gif
rename to static/images/download-badge-studio.gif
Binary files differ
diff --git a/content/images/download-eclipse.png b/static/images/download-eclipse.png
similarity index 100%
rename from content/images/download-eclipse.png
rename to static/images/download-eclipse.png
Binary files differ
diff --git a/content/images/download-linux.png b/static/images/download-linux.png
similarity index 100%
rename from content/images/download-linux.png
rename to static/images/download-linux.png
Binary files differ
diff --git a/content/images/download-macosx.png b/static/images/download-macosx.png
similarity index 100%
rename from content/images/download-macosx.png
rename to static/images/download-macosx.png
Binary files differ
diff --git a/content/images/download-solaris.png b/static/images/download-solaris.png
similarity index 100%
rename from content/images/download-solaris.png
rename to static/images/download-solaris.png
Binary files differ
diff --git a/content/images/download-sources.png b/static/images/download-sources.png
similarity index 100%
rename from content/images/download-sources.png
rename to static/images/download-sources.png
Binary files differ
diff --git a/content/images/download-windows.png b/static/images/download-windows.png
similarity index 100%
rename from content/images/download-windows.png
rename to static/images/download-windows.png
Binary files differ
diff --git a/content/images/download.png b/static/images/download.png
similarity index 100%
rename from content/images/download.png
rename to static/images/download.png
Binary files differ
diff --git a/content/images/email.png b/static/images/email.png
similarity index 100%
rename from content/images/email.png
rename to static/images/email.png
Binary files differ
diff --git a/content/images/entry.graphml b/static/images/entry.graphml
similarity index 100%
rename from content/images/entry.graphml
rename to static/images/entry.graphml
diff --git a/content/images/feature_highlight_background.png b/static/images/feature_highlight_background.png
similarity index 100%
rename from content/images/feature_highlight_background.png
rename to static/images/feature_highlight_background.png
Binary files differ
diff --git a/content/images/feature_highlight_server_kerberos_server.png b/static/images/feature_highlight_server_kerberos_server.png
similarity index 100%
rename from content/images/feature_highlight_server_kerberos_server.png
rename to static/images/feature_highlight_server_kerberos_server.png
Binary files differ
diff --git a/content/images/feature_highlight_server_ldapv3_compliant.png b/static/images/feature_highlight_server_ldapv3_compliant.png
similarity index 100%
rename from content/images/feature_highlight_server_ldapv3_compliant.png
rename to static/images/feature_highlight_server_ldapv3_compliant.png
Binary files differ
diff --git a/content/images/feature_highlight_server_ldif_based_configuration.png b/static/images/feature_highlight_server_ldif_based_configuration.png
similarity index 100%
rename from content/images/feature_highlight_server_ldif_based_configuration.png
rename to static/images/feature_highlight_server_ldif_based_configuration.png
Binary files differ
diff --git a/content/images/feature_highlight_server_multi_master_replication.png b/static/images/feature_highlight_server_multi_master_replication.png
similarity index 100%
rename from content/images/feature_highlight_server_multi_master_replication.png
rename to static/images/feature_highlight_server_multi_master_replication.png
Binary files differ
diff --git a/content/images/feature_highlight_server_multi_platform.png b/static/images/feature_highlight_server_multi_platform.png
similarity index 100%
rename from content/images/feature_highlight_server_multi_platform.png
rename to static/images/feature_highlight_server_multi_platform.png
Binary files differ
diff --git a/content/images/feature_highlight_server_password_policy.png b/static/images/feature_highlight_server_password_policy.png
similarity index 100%
rename from content/images/feature_highlight_server_password_policy.png
rename to static/images/feature_highlight_server_password_policy.png
Binary files differ
diff --git a/content/images/feature_highlight_server_written_java_embeddable.png b/static/images/feature_highlight_server_written_java_embeddable.png
similarity index 100%
rename from content/images/feature_highlight_server_written_java_embeddable.png
rename to static/images/feature_highlight_server_written_java_embeddable.png
Binary files differ
diff --git a/content/images/feature_highlight_server_x500_authorization.png b/static/images/feature_highlight_server_x500_authorization.png
similarity index 100%
rename from content/images/feature_highlight_server_x500_authorization.png
rename to static/images/feature_highlight_server_x500_authorization.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_aci_editor.png b/static/images/feature_highlight_studio_aci_editor.png
similarity index 100%
rename from content/images/feature_highlight_studio_aci_editor.png
rename to static/images/feature_highlight_studio_aci_editor.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_apacheds_configuration.png b/static/images/feature_highlight_studio_apacheds_configuration.png
similarity index 100%
rename from content/images/feature_highlight_studio_apacheds_configuration.png
rename to static/images/feature_highlight_studio_apacheds_configuration.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_embedded_apacheds.png b/static/images/feature_highlight_studio_embedded_apacheds.png
similarity index 100%
rename from content/images/feature_highlight_studio_embedded_apacheds.png
rename to static/images/feature_highlight_studio_embedded_apacheds.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_internationalization.png b/static/images/feature_highlight_studio_internationalization.png
similarity index 100%
rename from content/images/feature_highlight_studio_internationalization.png
rename to static/images/feature_highlight_studio_internationalization.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_ldap_browser.png b/static/images/feature_highlight_studio_ldap_browser.png
similarity index 100%
rename from content/images/feature_highlight_studio_ldap_browser.png
rename to static/images/feature_highlight_studio_ldap_browser.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_ldif_editor.png b/static/images/feature_highlight_studio_ldif_editor.png
similarity index 100%
rename from content/images/feature_highlight_studio_ldif_editor.png
rename to static/images/feature_highlight_studio_ldif_editor.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_multi_platform_in_eclipse.png b/static/images/feature_highlight_studio_multi_platform_in_eclipse.png
similarity index 100%
rename from content/images/feature_highlight_studio_multi_platform_in_eclipse.png
rename to static/images/feature_highlight_studio_multi_platform_in_eclipse.png
Binary files differ
diff --git a/content/images/feature_highlight_studio_schema_editor.png b/static/images/feature_highlight_studio_schema_editor.png
similarity index 100%
rename from content/images/feature_highlight_studio_schema_editor.png
rename to static/images/feature_highlight_studio_schema_editor.png
Binary files differ
diff --git a/content/images/figure_1.gif b/static/images/figure_1.gif
similarity index 100%
rename from content/images/figure_1.gif
rename to static/images/figure_1.gif
Binary files differ
diff --git a/content/images/figure_2.gif b/static/images/figure_2.gif
similarity index 100%
rename from content/images/figure_2.gif
rename to static/images/figure_2.gif
Binary files differ
diff --git a/content/images/figure_3.gif b/static/images/figure_3.gif
similarity index 100%
rename from content/images/figure_3.gif
rename to static/images/figure_3.gif
Binary files differ
diff --git a/content/images/figure_4.gif b/static/images/figure_4.gif
similarity index 100%
rename from content/images/figure_4.gif
rename to static/images/figure_4.gif
Binary files differ
diff --git a/content/images/figure_5.gif b/static/images/figure_5.gif
similarity index 100%
rename from content/images/figure_5.gif
rename to static/images/figure_5.gif
Binary files differ
diff --git a/content/images/flags/de.png b/static/images/flags/de.png
similarity index 100%
rename from content/images/flags/de.png
rename to static/images/flags/de.png
Binary files differ
diff --git a/content/images/flags/fr.png b/static/images/flags/fr.png
similarity index 100%
rename from content/images/flags/fr.png
rename to static/images/flags/fr.png
Binary files differ
diff --git a/content/images/flags/hu.png b/static/images/flags/hu.png
similarity index 100%
rename from content/images/flags/hu.png
rename to static/images/flags/hu.png
Binary files differ
diff --git a/content/images/flags/ie.png b/static/images/flags/ie.png
similarity index 100%
rename from content/images/flags/ie.png
rename to static/images/flags/ie.png
Binary files differ
diff --git a/content/images/flags/nl.png b/static/images/flags/nl.png
similarity index 100%
rename from content/images/flags/nl.png
rename to static/images/flags/nl.png
Binary files differ
diff --git a/content/images/flags/se.png b/static/images/flags/se.png
similarity index 100%
rename from content/images/flags/se.png
rename to static/images/flags/se.png
Binary files differ
diff --git a/content/images/flags/us.png b/static/images/flags/us.png
similarity index 100%
rename from content/images/flags/us.png
rename to static/images/flags/us.png
Binary files differ
diff --git a/content/images/footer.png b/static/images/footer.png
similarity index 100%
rename from content/images/footer.png
rename to static/images/footer.png
Binary files differ
diff --git a/content/images/fortress-core-system-arch.png b/static/images/fortress-core-system-arch.png
similarity index 100%
rename from content/images/fortress-core-system-arch.png
rename to static/images/fortress-core-system-arch.png
Binary files differ
diff --git a/content/images/fortress-web-system-arch.png b/static/images/fortress-web-system-arch.png
similarity index 100%
rename from content/images/fortress-web-system-arch.png
rename to static/images/fortress-web-system-arch.png
Binary files differ
diff --git a/content/images/header-blue.png b/static/images/header-blue.png
similarity index 100%
rename from content/images/header-blue.png
rename to static/images/header-blue.png
Binary files differ
diff --git a/content/images/header-brown.png b/static/images/header-brown.png
similarity index 100%
rename from content/images/header-brown.png
rename to static/images/header-brown.png
Binary files differ
diff --git a/content/images/header-green.png b/static/images/header-green.png
similarity index 100%
rename from content/images/header-green.png
rename to static/images/header-green.png
Binary files differ
diff --git a/content/images/header-orange.png b/static/images/header-orange.png
similarity index 100%
rename from content/images/header-orange.png
rename to static/images/header-orange.png
Binary files differ
diff --git a/content/images/header-turquoise.png b/static/images/header-turquoise.png
similarity index 100%
rename from content/images/header-turquoise.png
rename to static/images/header-turquoise.png
Binary files differ
diff --git a/content/images/hero-apacheds.jpg b/static/images/hero-apacheds.jpg
similarity index 100%
rename from content/images/hero-apacheds.jpg
rename to static/images/hero-apacheds.jpg
Binary files differ
diff --git a/content/images/hero-ldap-api.jpg b/static/images/hero-ldap-api.jpg
similarity index 100%
rename from content/images/hero-ldap-api.jpg
rename to static/images/hero-ldap-api.jpg
Binary files differ
diff --git a/content/images/hero-mavibot.jpg b/static/images/hero-mavibot.jpg
similarity index 100%
rename from content/images/hero-mavibot.jpg
rename to static/images/hero-mavibot.jpg
Binary files differ
diff --git a/content/images/icons/check.gif b/static/images/icons/check.gif
similarity index 100%
rename from content/images/icons/check.gif
rename to static/images/icons/check.gif
Binary files differ
diff --git a/content/images/icons/error.gif b/static/images/icons/error.gif
similarity index 100%
rename from content/images/icons/error.gif
rename to static/images/icons/error.gif
Binary files differ
diff --git a/content/images/icons/forbidden.gif b/static/images/icons/forbidden.gif
similarity index 100%
rename from content/images/icons/forbidden.gif
rename to static/images/icons/forbidden.gif
Binary files differ
diff --git a/content/images/icons/information.gif b/static/images/icons/information.gif
similarity index 100%
rename from content/images/icons/information.gif
rename to static/images/icons/information.gif
Binary files differ
diff --git a/content/images/icons/lightbulb.gif b/static/images/icons/lightbulb.gif
similarity index 100%
rename from content/images/icons/lightbulb.gif
rename to static/images/icons/lightbulb.gif
Binary files differ
diff --git a/content/images/icons/lightbulb_on.gif b/static/images/icons/lightbulb_on.gif
similarity index 100%
rename from content/images/icons/lightbulb_on.gif
rename to static/images/icons/lightbulb_on.gif
Binary files differ
diff --git a/content/images/icons/thumbs_up.gif b/static/images/icons/thumbs_up.gif
similarity index 100%
rename from content/images/icons/thumbs_up.gif
rename to static/images/icons/thumbs_up.gif
Binary files differ
diff --git a/content/images/icons/warning.gif b/static/images/icons/warning.gif
similarity index 100%
rename from content/images/icons/warning.gif
rename to static/images/icons/warning.gif
Binary files differ
diff --git a/content/images/jira-space-logo.gif b/static/images/jira-space-logo.gif
similarity index 100%
rename from content/images/jira-space-logo.gif
rename to static/images/jira-space-logo.gif
Binary files differ
diff --git a/content/images/kerby_logo.png b/static/images/kerby_logo.png
similarity index 100%
rename from content/images/kerby_logo.png
rename to static/images/kerby_logo.png
Binary files differ
diff --git a/content/images/mavibot-icon_16x16.png b/static/images/mavibot-icon_16x16.png
similarity index 100%
rename from content/images/mavibot-icon_16x16.png
rename to static/images/mavibot-icon_16x16.png
Binary files differ
diff --git a/content/images/nav_next.png b/static/images/nav_next.png
similarity index 100%
rename from content/images/nav_next.png
rename to static/images/nav_next.png
Binary files differ
diff --git a/content/images/nav_prev.png b/static/images/nav_prev.png
similarity index 100%
rename from content/images/nav_prev.png
rename to static/images/nav_prev.png
Binary files differ
diff --git a/content/images/nav_up.png b/static/images/nav_up.png
similarity index 100%
rename from content/images/nav_up.png
rename to static/images/nav_up.png
Binary files differ
diff --git a/content/images/new_badge.gif b/static/images/new_badge.gif
similarity index 100%
rename from content/images/new_badge.gif
rename to static/images/new_badge.gif
Binary files differ
diff --git a/content/images/opengroup_logo.png b/static/images/opengroup_logo.png
similarity index 100%
rename from content/images/opengroup_logo.png
rename to static/images/opengroup_logo.png
Binary files differ
diff --git a/content/images/opensourceposeidon_supportedby.gif b/static/images/opensourceposeidon_supportedby.gif
similarity index 100%
rename from content/images/opensourceposeidon_supportedby.gif
rename to static/images/opensourceposeidon_supportedby.gif
Binary files differ
diff --git a/content/images/post-blue.png b/static/images/post-blue.png
similarity index 100%
rename from content/images/post-blue.png
rename to static/images/post-blue.png
Binary files differ
diff --git a/content/images/post-brown.png b/static/images/post-brown.png
similarity index 100%
rename from content/images/post-brown.png
rename to static/images/post-brown.png
Binary files differ
diff --git a/content/images/post-green.png b/static/images/post-green.png
similarity index 100%
rename from content/images/post-green.png
rename to static/images/post-green.png
Binary files differ
diff --git a/content/images/post-orange.png b/static/images/post-orange.png
similarity index 100%
rename from content/images/post-orange.png
rename to static/images/post-orange.png
Binary files differ
diff --git a/content/images/post-turquoise.png b/static/images/post-turquoise.png
similarity index 100%
rename from content/images/post-turquoise.png
rename to static/images/post-turquoise.png
Binary files differ
diff --git a/content/images/schemaObjectHier.graphml b/static/images/schemaObjectHier.graphml
similarity index 100%
rename from content/images/schemaObjectHier.graphml
rename to static/images/schemaObjectHier.graphml
diff --git a/content/images/server-icon_128x128.png b/static/images/server-icon_128x128.png
similarity index 100%
rename from content/images/server-icon_128x128.png
rename to static/images/server-icon_128x128.png
Binary files differ
diff --git a/content/images/server-icon_16x16.png b/static/images/server-icon_16x16.png
similarity index 100%
rename from content/images/server-icon_16x16.png
rename to static/images/server-icon_16x16.png
Binary files differ
diff --git a/content/images/special-thanks/FAMFAMFAM_logo.png b/static/images/special-thanks/FAMFAMFAM_logo.png
similarity index 100%
rename from content/images/special-thanks/FAMFAMFAM_logo.png
rename to static/images/special-thanks/FAMFAMFAM_logo.png
Binary files differ
diff --git a/content/images/special-thanks/JetBrains_logo.png b/static/images/special-thanks/JetBrains_logo.png
similarity index 100%
rename from content/images/special-thanks/JetBrains_logo.png
rename to static/images/special-thanks/JetBrains_logo.png
Binary files differ
diff --git a/content/images/special-thanks/SQLManager.bmp b/static/images/special-thanks/SQLManager.bmp
similarity index 100%
rename from content/images/special-thanks/SQLManager.bmp
rename to static/images/special-thanks/SQLManager.bmp
Binary files differ
diff --git a/content/images/special-thanks/YourKit_logo.png b/static/images/special-thanks/YourKit_logo.png
similarity index 100%
rename from content/images/special-thanks/YourKit_logo.png
rename to static/images/special-thanks/YourKit_logo.png
Binary files differ
diff --git a/content/images/special-thanks/borland.gif b/static/images/special-thanks/borland.gif
similarity index 100%
rename from content/images/special-thanks/borland.gif
rename to static/images/special-thanks/borland.gif
Binary files differ
diff --git a/content/images/special-thanks/opengroup_logo.png b/static/images/special-thanks/opengroup_logo.png
similarity index 100%
rename from content/images/special-thanks/opengroup_logo.png
rename to static/images/special-thanks/opengroup_logo.png
Binary files differ
diff --git a/content/images/special-thanks/opensourceposeidon_supportedby.gif b/static/images/special-thanks/opensourceposeidon_supportedby.gif
similarity index 100%
rename from content/images/special-thanks/opensourceposeidon_supportedby.gif
rename to static/images/special-thanks/opensourceposeidon_supportedby.gif
Binary files differ
diff --git a/content/images/special-thanks/zenl_logo.gif b/static/images/special-thanks/zenl_logo.gif
similarity index 100%
rename from content/images/special-thanks/zenl_logo.gif
rename to static/images/special-thanks/zenl_logo.gif
Binary files differ
diff --git a/content/images/studio-icon_128x128.png b/static/images/studio-icon_128x128.png
similarity index 100%
rename from content/images/studio-icon_128x128.png
rename to static/images/studio-icon_128x128.png
Binary files differ
diff --git a/content/images/studio-icon_16x16.png b/static/images/studio-icon_16x16.png
similarity index 100%
rename from content/images/studio-icon_16x16.png
rename to static/images/studio-icon_16x16.png
Binary files differ
diff --git a/content/images/subversion_logo.png b/static/images/subversion_logo.png
similarity index 100%
rename from content/images/subversion_logo.png
rename to static/images/subversion_logo.png
Binary files differ
diff --git a/content/images/team/akarasulu.jpg b/static/images/team/akarasulu.jpg
similarity index 100%
rename from content/images/team/akarasulu.jpg
rename to static/images/team/akarasulu.jpg
Binary files differ
diff --git a/content/images/team/blog.png b/static/images/team/blog.png
similarity index 100%
rename from content/images/team/blog.png
rename to static/images/team/blog.png
Binary files differ
diff --git a/content/images/team/ccustine.png b/static/images/team/ccustine.png
similarity index 100%
rename from content/images/team/ccustine.png
rename to static/images/team/ccustine.png
Binary files differ
diff --git a/content/images/team/elecharny.jpg b/static/images/team/elecharny.jpg
similarity index 100%
rename from content/images/team/elecharny.jpg
rename to static/images/team/elecharny.jpg
Binary files differ
diff --git a/content/images/team/jan.jpg b/static/images/team/jan.jpg
similarity index 100%
rename from content/images/team/jan.jpg
rename to static/images/team/jan.jpg
Binary files differ
diff --git a/content/images/team/pamarcelot.jpg b/static/images/team/pamarcelot.jpg
similarity index 100%
rename from content/images/team/pamarcelot.jpg
rename to static/images/team/pamarcelot.jpg
Binary files differ
diff --git a/content/images/team/pierresmits.png b/static/images/team/pierresmits.png
similarity index 100%
rename from content/images/team/pierresmits.png
rename to static/images/team/pierresmits.png
Binary files differ
diff --git a/content/images/team/seelmann.jpg b/static/images/team/seelmann.jpg
similarity index 100%
rename from content/images/team/seelmann.jpg
rename to static/images/team/seelmann.jpg
Binary files differ
diff --git a/content/images/team/smckinney.jpg b/static/images/team/smckinney.jpg
similarity index 100%
rename from content/images/team/smckinney.jpg
rename to static/images/team/smckinney.jpg
Binary files differ
diff --git a/content/images/team/szoerner.jpg b/static/images/team/szoerner.jpg
similarity index 100%
rename from content/images/team/szoerner.jpg
rename to static/images/team/szoerner.jpg
Binary files differ
diff --git a/content/images/team/website.png b/static/images/team/website.png
similarity index 100%
rename from content/images/team/website.png
rename to static/images/team/website.png
Binary files differ
diff --git a/content/images/zenl_logo.gif b/static/images/zenl_logo.gif
similarity index 100%
rename from content/images/zenl_logo.gif
rename to static/images/zenl_logo.gif
Binary files differ
diff --git a/content/kerby/download/.htaccess b/static/kerby/download/.htaccess
similarity index 100%
rename from content/kerby/download/.htaccess
rename to static/kerby/download/.htaccess
diff --git a/content/kerby/download/download-archive.cgi b/static/kerby/download/download-archive.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/kerby/download/download-archive.cgi
rename to static/kerby/download/download-archive.cgi
diff --git a/content/kerby/download/download-sources.cgi b/static/kerby/download/download-sources.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/kerby/download/download-sources.cgi
rename to static/kerby/download/download-sources.cgi
diff --git a/content/kerby/hierarchy.png b/static/kerby/hierarchy.png
similarity index 100%
rename from content/kerby/hierarchy.png
rename to static/kerby/hierarchy.png
Binary files differ
diff --git a/content/mavibot/download/.htaccess b/static/mavibot/download/.htaccess
similarity index 100%
rename from content/mavibot/download/.htaccess
rename to static/mavibot/download/.htaccess
diff --git a/content/mavibot/download/download-archive.cgi b/static/mavibot/download/download-archive.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/mavibot/download/download-archive.cgi
rename to static/mavibot/download/download-archive.cgi
diff --git a/content/mavibot/download/download-sources.cgi b/static/mavibot/download/download-sources.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/mavibot/download/download-sources.cgi
rename to static/mavibot/download/download-sources.cgi
diff --git a/content/mavibot/download/images/installation_archive_1.jpg b/static/mavibot/download/images/installation_archive_1.jpg
similarity index 100%
rename from content/mavibot/download/images/installation_archive_1.jpg
rename to static/mavibot/download/images/installation_archive_1.jpg
Binary files differ
diff --git a/content/mavibot/download/images/installation_archive_2.jpg b/static/mavibot/download/images/installation_archive_2.jpg
similarity index 100%
rename from content/mavibot/download/images/installation_archive_2.jpg
rename to static/mavibot/download/images/installation_archive_2.jpg
Binary files differ
diff --git a/content/mavibot/user-guide/images/01-before-manage-tree.graphml b/static/mavibot/user-guide/images/01-before-manage-tree.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/01-before-manage-tree.graphml
rename to static/mavibot/user-guide/images/01-before-manage-tree.graphml
diff --git a/content/mavibot/user-guide/images/01-before-manage-tree.png b/static/mavibot/user-guide/images/01-before-manage-tree.png
similarity index 100%
rename from content/mavibot/user-guide/images/01-before-manage-tree.png
rename to static/mavibot/user-guide/images/01-before-manage-tree.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/02-after-manage-tree.graphml b/static/mavibot/user-guide/images/02-after-manage-tree.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/02-after-manage-tree.graphml
rename to static/mavibot/user-guide/images/02-after-manage-tree.graphml
diff --git a/content/mavibot/user-guide/images/02-after-manage-tree.png b/static/mavibot/user-guide/images/02-after-manage-tree.png
similarity index 100%
rename from content/mavibot/user-guide/images/02-after-manage-tree.png
rename to static/mavibot/user-guide/images/02-after-manage-tree.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/03-after-manage-tree-commit.graphml b/static/mavibot/user-guide/images/03-after-manage-tree-commit.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/03-after-manage-tree-commit.graphml
rename to static/mavibot/user-guide/images/03-after-manage-tree-commit.graphml
diff --git a/content/mavibot/user-guide/images/03-after-manage-tree-commit.png b/static/mavibot/user-guide/images/03-after-manage-tree-commit.png
similarity index 100%
rename from content/mavibot/user-guide/images/03-after-manage-tree-commit.png
rename to static/mavibot/user-guide/images/03-after-manage-tree-commit.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/04-after-insert-value.graphml b/static/mavibot/user-guide/images/04-after-insert-value.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/04-after-insert-value.graphml
rename to static/mavibot/user-guide/images/04-after-insert-value.graphml
diff --git a/content/mavibot/user-guide/images/04-after-insert-value.png b/static/mavibot/user-guide/images/04-after-insert-value.png
similarity index 100%
rename from content/mavibot/user-guide/images/04-after-insert-value.png
rename to static/mavibot/user-guide/images/04-after-insert-value.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/05-after-insert-value-commit.graphml b/static/mavibot/user-guide/images/05-after-insert-value-commit.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/05-after-insert-value-commit.graphml
rename to static/mavibot/user-guide/images/05-after-insert-value-commit.graphml
diff --git a/content/mavibot/user-guide/images/05-after-insert-value-commit.png b/static/mavibot/user-guide/images/05-after-insert-value-commit.png
similarity index 100%
rename from content/mavibot/user-guide/images/05-after-insert-value-commit.png
rename to static/mavibot/user-guide/images/05-after-insert-value-commit.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/B-tree-structure.graphml b/static/mavibot/user-guide/images/B-tree-structure.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/B-tree-structure.graphml
rename to static/mavibot/user-guide/images/B-tree-structure.graphml
diff --git a/content/mavibot/user-guide/images/B-tree-structure.png b/static/mavibot/user-guide/images/B-tree-structure.png
similarity index 100%
rename from content/mavibot/user-guide/images/B-tree-structure.png
rename to static/mavibot/user-guide/images/B-tree-structure.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/BOB-add.graphml b/static/mavibot/user-guide/images/BOB-add.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/BOB-add.graphml
rename to static/mavibot/user-guide/images/BOB-add.graphml
diff --git a/content/mavibot/user-guide/images/BOB-add.png b/static/mavibot/user-guide/images/BOB-add.png
similarity index 100%
rename from content/mavibot/user-guide/images/BOB-add.png
rename to static/mavibot/user-guide/images/BOB-add.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/BTree.png b/static/mavibot/user-guide/images/BTree.png
similarity index 100%
rename from content/mavibot/user-guide/images/BTree.png
rename to static/mavibot/user-guide/images/BTree.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/InMemoryBTree.graphml b/static/mavibot/user-guide/images/InMemoryBTree.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/InMemoryBTree.graphml
rename to static/mavibot/user-guide/images/InMemoryBTree.graphml
diff --git a/content/mavibot/user-guide/images/InMemoryBTree.png b/static/mavibot/user-guide/images/InMemoryBTree.png
similarity index 100%
rename from content/mavibot/user-guide/images/InMemoryBTree.png
rename to static/mavibot/user-guide/images/InMemoryBTree.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/N-op-per-txn.graphml b/static/mavibot/user-guide/images/N-op-per-txn.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/N-op-per-txn.graphml
rename to static/mavibot/user-guide/images/N-op-per-txn.graphml
diff --git a/content/mavibot/user-guide/images/N-op-per-txn.png b/static/mavibot/user-guide/images/N-op-per-txn.png
similarity index 100%
rename from content/mavibot/user-guide/images/N-op-per-txn.png
rename to static/mavibot/user-guide/images/N-op-per-txn.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/PageIOLogical.png b/static/mavibot/user-guide/images/PageIOLogical.png
similarity index 100%
rename from content/mavibot/user-guide/images/PageIOLogical.png
rename to static/mavibot/user-guide/images/PageIOLogical.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/R4-node.png b/static/mavibot/user-guide/images/R4-node.png
similarity index 100%
rename from content/mavibot/user-guide/images/R4-node.png
rename to static/mavibot/user-guide/images/R4-node.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/RMHeader.graphml b/static/mavibot/user-guide/images/RMHeader.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/RMHeader.graphml
rename to static/mavibot/user-guide/images/RMHeader.graphml
diff --git a/content/mavibot/user-guide/images/RMHeader.png b/static/mavibot/user-guide/images/RMHeader.png
similarity index 100%
rename from content/mavibot/user-guide/images/RMHeader.png
rename to static/mavibot/user-guide/images/RMHeader.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/RecordManagerHeader-content.graphml b/static/mavibot/user-guide/images/RecordManagerHeader-content.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/RecordManagerHeader-content.graphml
rename to static/mavibot/user-guide/images/RecordManagerHeader-content.graphml
diff --git a/content/mavibot/user-guide/images/RecordManagerHeader-content.png b/static/mavibot/user-guide/images/RecordManagerHeader-content.png
similarity index 100%
rename from content/mavibot/user-guide/images/RecordManagerHeader-content.png
rename to static/mavibot/user-guide/images/RecordManagerHeader-content.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/RecordManagerHeader-content2.graphml b/static/mavibot/user-guide/images/RecordManagerHeader-content2.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/RecordManagerHeader-content2.graphml
rename to static/mavibot/user-guide/images/RecordManagerHeader-content2.graphml
diff --git a/content/mavibot/user-guide/images/ValueKeyHolder.graphml b/static/mavibot/user-guide/images/ValueKeyHolder.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ValueKeyHolder.graphml
rename to static/mavibot/user-guide/images/ValueKeyHolder.graphml
diff --git a/content/mavibot/user-guide/images/ValueKeyHolder.png b/static/mavibot/user-guide/images/ValueKeyHolder.png
similarity index 100%
rename from content/mavibot/user-guide/images/ValueKeyHolder.png
rename to static/mavibot/user-guide/images/ValueKeyHolder.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/browse-all.graphml b/static/mavibot/user-guide/images/browse-all.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/browse-all.graphml
rename to static/mavibot/user-guide/images/browse-all.graphml
diff --git a/content/mavibot/user-guide/images/browse-all.png b/static/mavibot/user-guide/images/browse-all.png
similarity index 100%
rename from content/mavibot/user-guide/images/browse-all.png
rename to static/mavibot/user-guide/images/browse-all.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/btree-header.graphml b/static/mavibot/user-guide/images/btree-header.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/btree-header.graphml
rename to static/mavibot/user-guide/images/btree-header.graphml
diff --git a/content/mavibot/user-guide/images/btree-header.png b/static/mavibot/user-guide/images/btree-header.png
similarity index 100%
rename from content/mavibot/user-guide/images/btree-header.png
rename to static/mavibot/user-guide/images/btree-header.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/btree-test-added.graphml b/static/mavibot/user-guide/images/btree-test-added.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/btree-test-added.graphml
rename to static/mavibot/user-guide/images/btree-test-added.graphml
diff --git a/content/mavibot/user-guide/images/btree-test-added.png b/static/mavibot/user-guide/images/btree-test-added.png
similarity index 100%
rename from content/mavibot/user-guide/images/btree-test-added.png
rename to static/mavibot/user-guide/images/btree-test-added.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/btreeHeader.png b/static/mavibot/user-guide/images/btreeHeader.png
similarity index 100%
rename from content/mavibot/user-guide/images/btreeHeader.png
rename to static/mavibot/user-guide/images/btreeHeader.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/btreeinfo.graphml b/static/mavibot/user-guide/images/btreeinfo.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/btreeinfo.graphml
rename to static/mavibot/user-guide/images/btreeinfo.graphml
diff --git a/content/mavibot/user-guide/images/btreeinfo.png b/static/mavibot/user-guide/images/btreeinfo.png
similarity index 100%
rename from content/mavibot/user-guide/images/btreeinfo.png
rename to static/mavibot/user-guide/images/btreeinfo.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/dynamic.graphml b/static/mavibot/user-guide/images/dynamic.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/dynamic.graphml
rename to static/mavibot/user-guide/images/dynamic.graphml
diff --git a/content/mavibot/user-guide/images/dynamic.png b/static/mavibot/user-guide/images/dynamic.png
similarity index 100%
rename from content/mavibot/user-guide/images/dynamic.png
rename to static/mavibot/user-guide/images/dynamic.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/fetch-i.graphml b/static/mavibot/user-guide/images/fetch-i.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/fetch-i.graphml
rename to static/mavibot/user-guide/images/fetch-i.graphml
diff --git a/content/mavibot/user-guide/images/fetch-i.png b/static/mavibot/user-guide/images/fetch-i.png
similarity index 100%
rename from content/mavibot/user-guide/images/fetch-i.png
rename to static/mavibot/user-guide/images/fetch-i.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/indexeldap.graphml b/static/mavibot/user-guide/images/indexeldap.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/indexeldap.graphml
rename to static/mavibot/user-guide/images/indexeldap.graphml
diff --git a/content/mavibot/user-guide/images/indexeldap.png b/static/mavibot/user-guide/images/indexeldap.png
similarity index 100%
rename from content/mavibot/user-guide/images/indexeldap.png
rename to static/mavibot/user-guide/images/indexeldap.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/initial-state.graphml b/static/mavibot/user-guide/images/initial-state.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/initial-state.graphml
rename to static/mavibot/user-guide/images/initial-state.graphml
diff --git a/content/mavibot/user-guide/images/initial-state.png b/static/mavibot/user-guide/images/initial-state.png
similarity index 100%
rename from content/mavibot/user-guide/images/initial-state.png
rename to static/mavibot/user-guide/images/initial-state.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/managedReferences.graphml b/static/mavibot/user-guide/images/managedReferences.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/managedReferences.graphml
rename to static/mavibot/user-guide/images/managedReferences.graphml
diff --git a/content/mavibot/user-guide/images/managedReferences.png b/static/mavibot/user-guide/images/managedReferences.png
similarity index 100%
rename from content/mavibot/user-guide/images/managedReferences.png
rename to static/mavibot/user-guide/images/managedReferences.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/mavibot-layout.graphml b/static/mavibot/user-guide/images/mavibot-layout.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/mavibot-layout.graphml
rename to static/mavibot/user-guide/images/mavibot-layout.graphml
diff --git a/content/mavibot/user-guide/images/mavibot-layout.png b/static/mavibot/user-guide/images/mavibot-layout.png
similarity index 100%
rename from content/mavibot/user-guide/images/mavibot-layout.png
rename to static/mavibot/user-guide/images/mavibot-layout.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/mavibot-walobject.graphml b/static/mavibot/user-guide/images/mavibot-walobject.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/mavibot-walobject.graphml
rename to static/mavibot/user-guide/images/mavibot-walobject.graphml
diff --git a/content/mavibot/user-guide/images/mavibot-walobject.png b/static/mavibot/user-guide/images/mavibot-walobject.png
similarity index 100%
rename from content/mavibot/user-guide/images/mavibot-walobject.png
rename to static/mavibot/user-guide/images/mavibot-walobject.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/nodeLeaf.graphml b/static/mavibot/user-guide/images/nodeLeaf.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/nodeLeaf.graphml
rename to static/mavibot/user-guide/images/nodeLeaf.graphml
diff --git a/content/mavibot/user-guide/images/nodeLeaf.png b/static/mavibot/user-guide/images/nodeLeaf.png
similarity index 100%
rename from content/mavibot/user-guide/images/nodeLeaf.png
rename to static/mavibot/user-guide/images/nodeLeaf.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/nodeLeaf2.graphml b/static/mavibot/user-guide/images/nodeLeaf2.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/nodeLeaf2.graphml
rename to static/mavibot/user-guide/images/nodeLeaf2.graphml
diff --git a/content/mavibot/user-guide/images/nodeLeaf2.png b/static/mavibot/user-guide/images/nodeLeaf2.png
similarity index 100%
rename from content/mavibot/user-guide/images/nodeLeaf2.png
rename to static/mavibot/user-guide/images/nodeLeaf2.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/one-op-per-txn.graphml b/static/mavibot/user-guide/images/one-op-per-txn.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/one-op-per-txn.graphml
rename to static/mavibot/user-guide/images/one-op-per-txn.graphml
diff --git a/content/mavibot/user-guide/images/one-op-per-txn.png b/static/mavibot/user-guide/images/one-op-per-txn.png
similarity index 100%
rename from content/mavibot/user-guide/images/one-op-per-txn.png
rename to static/mavibot/user-guide/images/one-op-per-txn.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/r3tor4.gif b/static/mavibot/user-guide/images/r3tor4.gif
similarity index 100%
rename from content/mavibot/user-guide/images/r3tor4.gif
rename to static/mavibot/user-guide/images/r3tor4.gif
Binary files differ
diff --git a/content/mavibot/user-guide/images/result.graphml b/static/mavibot/user-guide/images/result.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/result.graphml
rename to static/mavibot/user-guide/images/result.graphml
diff --git a/content/mavibot/user-guide/images/result.png b/static/mavibot/user-guide/images/result.png
similarity index 100%
rename from content/mavibot/user-guide/images/result.png
rename to static/mavibot/user-guide/images/result.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev1.graphml b/static/mavibot/user-guide/images/rev1.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev1.graphml
rename to static/mavibot/user-guide/images/rev1.graphml
diff --git a/content/mavibot/user-guide/images/rev1.png b/static/mavibot/user-guide/images/rev1.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev1.png
rename to static/mavibot/user-guide/images/rev1.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev2.graphml b/static/mavibot/user-guide/images/rev2.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev2.graphml
rename to static/mavibot/user-guide/images/rev2.graphml
diff --git a/content/mavibot/user-guide/images/rev2.png b/static/mavibot/user-guide/images/rev2.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev2.png
rename to static/mavibot/user-guide/images/rev2.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev3-1.graphml b/static/mavibot/user-guide/images/rev3-1.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev3-1.graphml
rename to static/mavibot/user-guide/images/rev3-1.graphml
diff --git a/content/mavibot/user-guide/images/rev3-1.png b/static/mavibot/user-guide/images/rev3-1.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev3-1.png
rename to static/mavibot/user-guide/images/rev3-1.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev3.graphml b/static/mavibot/user-guide/images/rev3.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev3.graphml
rename to static/mavibot/user-guide/images/rev3.graphml
diff --git a/content/mavibot/user-guide/images/rev3.png b/static/mavibot/user-guide/images/rev3.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev3.png
rename to static/mavibot/user-guide/images/rev3.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev4-with-offsets.graphml b/static/mavibot/user-guide/images/rev4-with-offsets.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev4-with-offsets.graphml
rename to static/mavibot/user-guide/images/rev4-with-offsets.graphml
diff --git a/content/mavibot/user-guide/images/rev4-with-offsets.png b/static/mavibot/user-guide/images/rev4-with-offsets.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev4-with-offsets.png
rename to static/mavibot/user-guide/images/rev4-with-offsets.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev4.graphml b/static/mavibot/user-guide/images/rev4.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev4.graphml
rename to static/mavibot/user-guide/images/rev4.graphml
diff --git a/content/mavibot/user-guide/images/rev4.png b/static/mavibot/user-guide/images/rev4.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev4.png
rename to static/mavibot/user-guide/images/rev4.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5-alone.graphml b/static/mavibot/user-guide/images/rev5-alone.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-alone.graphml
rename to static/mavibot/user-guide/images/rev5-alone.graphml
diff --git a/content/mavibot/user-guide/images/rev5-alone.png b/static/mavibot/user-guide/images/rev5-alone.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-alone.png
rename to static/mavibot/user-guide/images/rev5-alone.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5-release-rev3.graphml b/static/mavibot/user-guide/images/rev5-release-rev3.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev3.graphml
rename to static/mavibot/user-guide/images/rev5-release-rev3.graphml
diff --git a/content/mavibot/user-guide/images/rev5-release-rev3.png b/static/mavibot/user-guide/images/rev5-release-rev3.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev3.png
rename to static/mavibot/user-guide/images/rev5-release-rev3.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5-release-rev3and4.graphml b/static/mavibot/user-guide/images/rev5-release-rev3and4.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev3and4.graphml
rename to static/mavibot/user-guide/images/rev5-release-rev3and4.graphml
diff --git a/content/mavibot/user-guide/images/rev5-release-rev3and4.png b/static/mavibot/user-guide/images/rev5-release-rev3and4.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev3and4.png
rename to static/mavibot/user-guide/images/rev5-release-rev3and4.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5-release-rev4.graphml b/static/mavibot/user-guide/images/rev5-release-rev4.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev4.graphml
rename to static/mavibot/user-guide/images/rev5-release-rev4.graphml
diff --git a/content/mavibot/user-guide/images/rev5-release-rev4.png b/static/mavibot/user-guide/images/rev5-release-rev4.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-release-rev4.png
rename to static/mavibot/user-guide/images/rev5-release-rev4.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5-with-offsets.graphml b/static/mavibot/user-guide/images/rev5-with-offsets.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-with-offsets.graphml
rename to static/mavibot/user-guide/images/rev5-with-offsets.graphml
diff --git a/content/mavibot/user-guide/images/rev5-with-offsets.png b/static/mavibot/user-guide/images/rev5-with-offsets.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5-with-offsets.png
rename to static/mavibot/user-guide/images/rev5-with-offsets.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev5.graphml b/static/mavibot/user-guide/images/rev5.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev5.graphml
rename to static/mavibot/user-guide/images/rev5.graphml
diff --git a/content/mavibot/user-guide/images/rev5.png b/static/mavibot/user-guide/images/rev5.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev5.png
rename to static/mavibot/user-guide/images/rev5.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/rev6.graphml b/static/mavibot/user-guide/images/rev6.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/rev6.graphml
rename to static/mavibot/user-guide/images/rev6.graphml
diff --git a/content/mavibot/user-guide/images/rev6.png b/static/mavibot/user-guide/images/rev6.png
similarity index 100%
rename from content/mavibot/user-guide/images/rev6.png
rename to static/mavibot/user-guide/images/rev6.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/transaction-time-frame.graphml b/static/mavibot/user-guide/images/transaction-time-frame.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/transaction-time-frame.graphml
rename to static/mavibot/user-guide/images/transaction-time-frame.graphml
diff --git a/content/mavibot/user-guide/images/transaction-time-frame.png b/static/mavibot/user-guide/images/transaction-time-frame.png
similarity index 100%
rename from content/mavibot/user-guide/images/transaction-time-frame.png
rename to static/mavibot/user-guide/images/transaction-time-frame.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/ug-btree-after-last.graphml b/static/mavibot/user-guide/images/ug-btree-after-last.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-after-last.graphml
rename to static/mavibot/user-guide/images/ug-btree-after-last.graphml
diff --git a/content/mavibot/user-guide/images/ug-btree-after-last.png b/static/mavibot/user-guide/images/ug-btree-after-last.png
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-after-last.png
rename to static/mavibot/user-guide/images/ug-btree-after-last.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/ug-btree-before-first.graphml b/static/mavibot/user-guide/images/ug-btree-before-first.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-before-first.graphml
rename to static/mavibot/user-guide/images/ug-btree-before-first.graphml
diff --git a/content/mavibot/user-guide/images/ug-btree-before-first.png b/static/mavibot/user-guide/images/ug-btree-before-first.png
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-before-first.png
rename to static/mavibot/user-guide/images/ug-btree-before-first.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/ug-btree-has-next.graphml b/static/mavibot/user-guide/images/ug-btree-has-next.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-has-next.graphml
rename to static/mavibot/user-guide/images/ug-btree-has-next.graphml
diff --git a/content/mavibot/user-guide/images/ug-btree-has-next.png b/static/mavibot/user-guide/images/ug-btree-has-next.png
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-has-next.png
rename to static/mavibot/user-guide/images/ug-btree-has-next.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/ug-btree-has-prev.graphml b/static/mavibot/user-guide/images/ug-btree-has-prev.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-has-prev.graphml
rename to static/mavibot/user-guide/images/ug-btree-has-prev.graphml
diff --git a/content/mavibot/user-guide/images/ug-btree-has-prev.png b/static/mavibot/user-guide/images/ug-btree-has-prev.png
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-has-prev.png
rename to static/mavibot/user-guide/images/ug-btree-has-prev.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/ug-btree-sample.graphml b/static/mavibot/user-guide/images/ug-btree-sample.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-sample.graphml
rename to static/mavibot/user-guide/images/ug-btree-sample.graphml
diff --git a/content/mavibot/user-guide/images/ug-btree-sample.png b/static/mavibot/user-guide/images/ug-btree-sample.png
similarity index 100%
rename from content/mavibot/user-guide/images/ug-btree-sample.png
rename to static/mavibot/user-guide/images/ug-btree-sample.png
Binary files differ
diff --git a/content/mavibot/user-guide/images/v1-added-in-test.graphml b/static/mavibot/user-guide/images/v1-added-in-test.graphml
similarity index 100%
rename from content/mavibot/user-guide/images/v1-added-in-test.graphml
rename to static/mavibot/user-guide/images/v1-added-in-test.graphml
diff --git a/content/mavibot/user-guide/images/v1-added-in-test.png b/static/mavibot/user-guide/images/v1-added-in-test.png
similarity index 100%
rename from content/mavibot/user-guide/images/v1-added-in-test.png
rename to static/mavibot/user-guide/images/v1-added-in-test.png
Binary files differ
diff --git a/content/studio/download/.htaccess b/static/studio/download/.htaccess
similarity index 100%
rename from content/studio/download/.htaccess
rename to static/studio/download/.htaccess
diff --git a/content/studio/download/download-linux.cgi b/static/studio/download/download-linux.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/download/download-linux.cgi
rename to static/studio/download/download-linux.cgi
diff --git a/content/studio/download/download-macosx.cgi b/static/studio/download/download-macosx.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/download/download-macosx.cgi
rename to static/studio/download/download-macosx.cgi
diff --git a/content/studio/download/download-sources.cgi b/static/studio/download/download-sources.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/download/download-sources.cgi
rename to static/studio/download/download-sources.cgi
diff --git a/content/studio/download/download-windows.cgi b/static/studio/download/download-windows.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/download/download-windows.cgi
rename to static/studio/download/download-windows.cgi
diff --git a/content/studio/download/images/installation_linux_1.jpg b/static/studio/download/images/installation_linux_1.jpg
similarity index 100%
rename from content/studio/download/images/installation_linux_1.jpg
rename to static/studio/download/images/installation_linux_1.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_linux_2.jpg b/static/studio/download/images/installation_linux_2.jpg
similarity index 100%
rename from content/studio/download/images/installation_linux_2.jpg
rename to static/studio/download/images/installation_linux_2.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_1.jpg b/static/studio/download/images/installation_macosx_1.jpg
similarity index 100%
rename from content/studio/download/images/installation_macosx_1.jpg
rename to static/studio/download/images/installation_macosx_1.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_1.png b/static/studio/download/images/installation_macosx_1.png
similarity index 100%
rename from content/studio/download/images/installation_macosx_1.png
rename to static/studio/download/images/installation_macosx_1.png
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_2.jpg b/static/studio/download/images/installation_macosx_2.jpg
similarity index 100%
rename from content/studio/download/images/installation_macosx_2.jpg
rename to static/studio/download/images/installation_macosx_2.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_2.png b/static/studio/download/images/installation_macosx_2.png
similarity index 100%
rename from content/studio/download/images/installation_macosx_2.png
rename to static/studio/download/images/installation_macosx_2.png
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_3.jpg b/static/studio/download/images/installation_macosx_3.jpg
similarity index 100%
rename from content/studio/download/images/installation_macosx_3.jpg
rename to static/studio/download/images/installation_macosx_3.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_macosx_3.png b/static/studio/download/images/installation_macosx_3.png
similarity index 100%
rename from content/studio/download/images/installation_macosx_3.png
rename to static/studio/download/images/installation_macosx_3.png
Binary files differ
diff --git a/content/studio/download/images/installation_windows_1.jpg b/static/studio/download/images/installation_windows_1.jpg
similarity index 100%
rename from content/studio/download/images/installation_windows_1.jpg
rename to static/studio/download/images/installation_windows_1.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_windows_1.png b/static/studio/download/images/installation_windows_1.png
similarity index 100%
rename from content/studio/download/images/installation_windows_1.png
rename to static/studio/download/images/installation_windows_1.png
Binary files differ
diff --git a/content/studio/download/images/installation_windows_2.jpg b/static/studio/download/images/installation_windows_2.jpg
similarity index 100%
rename from content/studio/download/images/installation_windows_2.jpg
rename to static/studio/download/images/installation_windows_2.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_windows_2.png b/static/studio/download/images/installation_windows_2.png
similarity index 100%
rename from content/studio/download/images/installation_windows_2.png
rename to static/studio/download/images/installation_windows_2.png
Binary files differ
diff --git a/content/studio/download/images/installation_windows_3.jpg b/static/studio/download/images/installation_windows_3.jpg
similarity index 100%
rename from content/studio/download/images/installation_windows_3.jpg
rename to static/studio/download/images/installation_windows_3.jpg
Binary files differ
diff --git a/content/studio/download/images/installation_windows_3.png b/static/studio/download/images/installation_windows_3.png
similarity index 100%
rename from content/studio/download/images/installation_windows_3.png
rename to static/studio/download/images/installation_windows_3.png
Binary files differ
diff --git a/content/studio/download/images/installation_windows_4.jpg b/static/studio/download/images/installation_windows_4.jpg
similarity index 100%
rename from content/studio/download/images/installation_windows_4.jpg
rename to static/studio/download/images/installation_windows_4.jpg
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/1-menu.png b/static/studio/installation-in-eclipse.data/1-menu.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/1-menu.png
rename to static/studio/installation-in-eclipse.data/1-menu.png
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/2-available-software.png b/static/studio/installation-in-eclipse.data/2-available-software.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/2-available-software.png
rename to static/studio/installation-in-eclipse.data/2-available-software.png
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/3-install-details.png b/static/studio/installation-in-eclipse.data/3-install-details.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/3-install-details.png
rename to static/studio/installation-in-eclipse.data/3-install-details.png
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/4-review-licenses.png b/static/studio/installation-in-eclipse.data/4-review-licenses.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/4-review-licenses.png
rename to static/studio/installation-in-eclipse.data/4-review-licenses.png
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/5-warning.png b/static/studio/installation-in-eclipse.data/5-warning.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/5-warning.png
rename to static/studio/installation-in-eclipse.data/5-warning.png
Binary files differ
diff --git a/content/studio/installation-in-eclipse.data/6-certificates.png b/static/studio/installation-in-eclipse.data/6-certificates.png
similarity index 100%
rename from content/studio/installation-in-eclipse.data/6-certificates.png
rename to static/studio/installation-in-eclipse.data/6-certificates.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Help.png b/static/studio/screenshots.data/LDAPStudioApp_Help.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Help.png
rename to static/studio/screenshots.data/LDAPStudioApp_Help.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Help.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Help.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Help.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Help.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Help.thumb.png b/static/studio/screenshots.data/LDAPStudioApp_Help.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Help.thumb.png
rename to static/studio/screenshots.data/LDAPStudioApp_Help.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Help.thumb.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Help.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Help.thumb.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Help.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Preferences.png b/static/studio/screenshots.data/LDAPStudioApp_Preferences.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Preferences.png
rename to static/studio/screenshots.data/LDAPStudioApp_Preferences.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Preferences.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Preferences.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Preferences.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Preferences.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png b/static/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png
rename to static/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Preferences.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Welcome.png b/static/studio/screenshots.data/LDAPStudioApp_Welcome.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Welcome.png
rename to static/studio/screenshots.data/LDAPStudioApp_Welcome.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Welcome.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Welcome.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Welcome.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Welcome.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png b/static/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png
rename to static/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png.jpeg b/static/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png.jpeg
rename to static/studio/screenshots.data/LDAPStudioApp_Welcome.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Browser_Plugin.png b/static/studio/screenshots.data/LDAP_Browser_Plugin.png
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Browser_Plugin.png
rename to static/studio/screenshots.data/LDAP_Browser_Plugin.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Browser_Plugin.png.jpeg b/static/studio/screenshots.data/LDAP_Browser_Plugin.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Browser_Plugin.png.jpeg
rename to static/studio/screenshots.data/LDAP_Browser_Plugin.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png b/static/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png
rename to static/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png.jpeg b/static/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png.jpeg
rename to static/studio/screenshots.data/LDAP_Browser_Plugin.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png b/static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png
rename to static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png.jpeg b/static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png.jpeg
rename to static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png b/static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png
rename to static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png.jpeg b/static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png.jpeg
rename to static/studio/screenshots.data/LDAP_Studio_Welcome_Perspective.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png b/static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png
rename to static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png.jpeg b/static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png b/static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_AttributeTypeEditor.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png b/static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png
rename to static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png.jpeg b/static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png b/static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_ObjectClassEditor.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_Plugin.png b/static/studio/screenshots.data/SchemasEditor_Plugin.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_Plugin.png
rename to static/studio/screenshots.data/SchemasEditor_Plugin.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_Plugin.png.jpeg b/static/studio/screenshots.data/SchemasEditor_Plugin.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_Plugin.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_Plugin.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_Plugin.thumb.png b/static/studio/screenshots.data/SchemasEditor_Plugin.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_Plugin.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_Plugin.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_Plugin.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_Plugin.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_Plugin.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_Plugin.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_PluginOptions.png b/static/studio/screenshots.data/SchemasEditor_PluginOptions.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_PluginOptions.png
rename to static/studio/screenshots.data/SchemasEditor_PluginOptions.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_PluginOptions.png.jpeg b/static/studio/screenshots.data/SchemasEditor_PluginOptions.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_PluginOptions.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_PluginOptions.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png b/static/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_PluginOptions.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SchemaEditor.png b/static/studio/screenshots.data/SchemasEditor_SchemaEditor.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SchemaEditor.png
rename to static/studio/screenshots.data/SchemasEditor_SchemaEditor.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SchemaEditor.png.jpeg b/static/studio/screenshots.data/SchemasEditor_SchemaEditor.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SchemaEditor.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_SchemaEditor.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png b/static/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_SchemaEditor.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png b/static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png
rename to static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png.jpeg b/static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png b/static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png
rename to static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png.jpeg b/static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png.jpeg
rename to static/studio/screenshots.data/SchemasEditor_SourceCodeEditor.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/Schemas_Editor_Plugin.png b/static/studio/screenshots.data/Schemas_Editor_Plugin.png
similarity index 100%
rename from content/studio/screenshots.data/Schemas_Editor_Plugin.png
rename to static/studio/screenshots.data/Schemas_Editor_Plugin.png
Binary files differ
diff --git a/content/studio/screenshots.data/Schemas_Editor_Plugin.png.jpeg b/static/studio/screenshots.data/Schemas_Editor_Plugin.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/Schemas_Editor_Plugin.png.jpeg
rename to static/studio/screenshots.data/Schemas_Editor_Plugin.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png b/static/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png
rename to static/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png.jpeg b/static/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png.jpeg
rename to static/studio/screenshots.data/Schemas_Editor_Plugin.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_source.png b/static/studio/screenshots.data/aci_source.png
similarity index 100%
rename from content/studio/screenshots.data/aci_source.png
rename to static/studio/screenshots.data/aci_source.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_source.png.jpeg b/static/studio/screenshots.data/aci_source.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_source.png.jpeg
rename to static/studio/screenshots.data/aci_source.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_source.thumb.png b/static/studio/screenshots.data/aci_source.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/aci_source.thumb.png
rename to static/studio/screenshots.data/aci_source.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_source.thumb.png.jpeg b/static/studio/screenshots.data/aci_source.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_source.thumb.png.jpeg
rename to static/studio/screenshots.data/aci_source.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_1.png b/static/studio/screenshots.data/aci_visual_1.png
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_1.png
rename to static/studio/screenshots.data/aci_visual_1.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_1.png.jpeg b/static/studio/screenshots.data/aci_visual_1.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_1.png.jpeg
rename to static/studio/screenshots.data/aci_visual_1.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_1.thumb.png b/static/studio/screenshots.data/aci_visual_1.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_1.thumb.png
rename to static/studio/screenshots.data/aci_visual_1.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_1.thumb.png.jpeg b/static/studio/screenshots.data/aci_visual_1.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_1.thumb.png.jpeg
rename to static/studio/screenshots.data/aci_visual_1.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_2.png b/static/studio/screenshots.data/aci_visual_2.png
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_2.png
rename to static/studio/screenshots.data/aci_visual_2.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_2.png.jpeg b/static/studio/screenshots.data/aci_visual_2.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_2.png.jpeg
rename to static/studio/screenshots.data/aci_visual_2.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_2.thumb.png b/static/studio/screenshots.data/aci_visual_2.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_2.thumb.png
rename to static/studio/screenshots.data/aci_visual_2.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/aci_visual_2.thumb.png.jpeg b/static/studio/screenshots.data/aci_visual_2.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/aci_visual_2.thumb.png.jpeg
rename to static/studio/screenshots.data/aci_visual_2.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_extop.png b/static/studio/screenshots.data/ads_configuration_extop.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_extop.png
rename to static/studio/screenshots.data/ads_configuration_extop.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_extop.png.jpeg b/static/studio/screenshots.data/ads_configuration_extop.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_extop.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_extop.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_extop.thumb.png b/static/studio/screenshots.data/ads_configuration_extop.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_extop.thumb.png
rename to static/studio/screenshots.data/ads_configuration_extop.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_extop.thumb.png.jpeg b/static/studio/screenshots.data/ads_configuration_extop.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_extop.thumb.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_extop.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_general.png b/static/studio/screenshots.data/ads_configuration_general.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_general.png
rename to static/studio/screenshots.data/ads_configuration_general.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_general.png.jpeg b/static/studio/screenshots.data/ads_configuration_general.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_general.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_general.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_general.thumb.png b/static/studio/screenshots.data/ads_configuration_general.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_general.thumb.png
rename to static/studio/screenshots.data/ads_configuration_general.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_general.thumb.png.jpeg b/static/studio/screenshots.data/ads_configuration_general.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_general.thumb.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_general.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_interceptors.png b/static/studio/screenshots.data/ads_configuration_interceptors.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_interceptors.png
rename to static/studio/screenshots.data/ads_configuration_interceptors.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_interceptors.png.jpeg b/static/studio/screenshots.data/ads_configuration_interceptors.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_interceptors.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_interceptors.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_interceptors.thumb.png b/static/studio/screenshots.data/ads_configuration_interceptors.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_interceptors.thumb.png
rename to static/studio/screenshots.data/ads_configuration_interceptors.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_interceptors.thumb.png.jpeg b/static/studio/screenshots.data/ads_configuration_interceptors.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_interceptors.thumb.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_interceptors.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_partitions.png b/static/studio/screenshots.data/ads_configuration_partitions.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_partitions.png
rename to static/studio/screenshots.data/ads_configuration_partitions.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_partitions.png.jpeg b/static/studio/screenshots.data/ads_configuration_partitions.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_partitions.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_partitions.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_partitions.thumb.png b/static/studio/screenshots.data/ads_configuration_partitions.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_partitions.thumb.png
rename to static/studio/screenshots.data/ads_configuration_partitions.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/ads_configuration_partitions.thumb.png.jpeg b/static/studio/screenshots.data/ads_configuration_partitions.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ads_configuration_partitions.thumb.png.jpeg
rename to static/studio/screenshots.data/ads_configuration_partitions.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ldapstudio_eclipseplugincentral.png b/static/studio/screenshots.data/ldapstudio_eclipseplugincentral.png
similarity index 100%
rename from content/studio/screenshots.data/ldapstudio_eclipseplugincentral.png
rename to static/studio/screenshots.data/ldapstudio_eclipseplugincentral.png
Binary files differ
diff --git a/content/studio/screenshots.data/ldapstudio_eclipseplugincentral.png.jpeg b/static/studio/screenshots.data/ldapstudio_eclipseplugincentral.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ldapstudio_eclipseplugincentral.png.jpeg
rename to static/studio/screenshots.data/ldapstudio_eclipseplugincentral.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/ldapstudio_icon.png b/static/studio/screenshots.data/ldapstudio_icon.png
similarity index 100%
rename from content/studio/screenshots.data/ldapstudio_icon.png
rename to static/studio/screenshots.data/ldapstudio_icon.png
Binary files differ
diff --git a/content/studio/screenshots.data/ldapstudio_icon.png.jpeg b/static/studio/screenshots.data/ldapstudio_icon.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/ldapstudio_icon.png.jpeg
rename to static/studio/screenshots.data/ldapstudio_icon.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/studio-icon_128x128.png b/static/studio/screenshots.data/studio-icon_128x128.png
similarity index 100%
rename from content/studio/screenshots.data/studio-icon_128x128.png
rename to static/studio/screenshots.data/studio-icon_128x128.png
Binary files differ
diff --git a/content/studio/screenshots.data/studio-icon_128x128.png.jpeg b/static/studio/screenshots.data/studio-icon_128x128.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/studio-icon_128x128.png.jpeg
rename to static/studio/screenshots.data/studio-icon_128x128.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/subtree_editor.png b/static/studio/screenshots.data/subtree_editor.png
similarity index 100%
rename from content/studio/screenshots.data/subtree_editor.png
rename to static/studio/screenshots.data/subtree_editor.png
Binary files differ
diff --git a/content/studio/screenshots.data/subtree_editor.png.jpeg b/static/studio/screenshots.data/subtree_editor.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/subtree_editor.png.jpeg
rename to static/studio/screenshots.data/subtree_editor.png.jpeg
Binary files differ
diff --git a/content/studio/screenshots.data/subtree_editor.thumb.png b/static/studio/screenshots.data/subtree_editor.thumb.png
similarity index 100%
rename from content/studio/screenshots.data/subtree_editor.thumb.png
rename to static/studio/screenshots.data/subtree_editor.thumb.png
Binary files differ
diff --git a/content/studio/screenshots.data/subtree_editor.thumb.png.jpeg b/static/studio/screenshots.data/subtree_editor.thumb.png.jpeg
similarity index 100%
rename from content/studio/screenshots.data/subtree_editor.thumb.png.jpeg
rename to static/studio/screenshots.data/subtree_editor.thumb.png.jpeg
Binary files differ
diff --git a/content/studio/static/images/aci_editor_box.gif b/static/studio/static/images/aci_editor_box.gif
similarity index 100%
rename from content/studio/static/images/aci_editor_box.gif
rename to static/studio/static/images/aci_editor_box.gif
Binary files differ
diff --git a/content/studio/static/images/apacheds_configuration_box.gif b/static/studio/static/images/apacheds_configuration_box.gif
similarity index 100%
rename from content/studio/static/images/apacheds_configuration_box.gif
rename to static/studio/static/images/apacheds_configuration_box.gif
Binary files differ
diff --git a/content/studio/static/images/download_badge.gif b/static/studio/static/images/download_badge.gif
similarity index 100%
rename from content/studio/static/images/download_badge.gif
rename to static/studio/static/images/download_badge.gif
Binary files differ
diff --git a/content/studio/static/images/embedded_apacheds_box.gif b/static/studio/static/images/embedded_apacheds_box.gif
similarity index 100%
rename from content/studio/static/images/embedded_apacheds_box.gif
rename to static/studio/static/images/embedded_apacheds_box.gif
Binary files differ
diff --git a/content/studio/static/images/header_explanations.gif b/static/studio/static/images/header_explanations.gif
similarity index 100%
rename from content/studio/static/images/header_explanations.gif
rename to static/studio/static/images/header_explanations.gif
Binary files differ
diff --git a/content/studio/static/images/internationalization_box.gif b/static/studio/static/images/internationalization_box.gif
similarity index 100%
rename from content/studio/static/images/internationalization_box.gif
rename to static/studio/static/images/internationalization_box.gif
Binary files differ
diff --git a/content/studio/static/images/ldap_browser_box.gif b/static/studio/static/images/ldap_browser_box.gif
similarity index 100%
rename from content/studio/static/images/ldap_browser_box.gif
rename to static/studio/static/images/ldap_browser_box.gif
Binary files differ
diff --git a/content/studio/static/images/ldif_editor_box.gif b/static/studio/static/images/ldif_editor_box.gif
similarity index 100%
rename from content/studio/static/images/ldif_editor_box.gif
rename to static/studio/static/images/ldif_editor_box.gif
Binary files differ
diff --git a/content/studio/static/images/multiplatform_and_in_eclipse_box.gif b/static/studio/static/images/multiplatform_and_in_eclipse_box.gif
similarity index 100%
rename from content/studio/static/images/multiplatform_and_in_eclipse_box.gif
rename to static/studio/static/images/multiplatform_and_in_eclipse_box.gif
Binary files differ
diff --git a/content/studio/static/images/schema_editor_box.gif b/static/studio/static/images/schema_editor_box.gif
similarity index 100%
rename from content/studio/static/images/schema_editor_box.gif
rename to static/studio/static/images/schema_editor_box.gif
Binary files differ
diff --git a/content/studio/static/images/screen_aci_editor.jpg b/static/studio/static/images/screen_aci_editor.jpg
similarity index 100%
rename from content/studio/static/images/screen_aci_editor.jpg
rename to static/studio/static/images/screen_aci_editor.jpg
Binary files differ
diff --git a/content/studio/static/images/screen_apacheds_configuration.jpg b/static/studio/static/images/screen_apacheds_configuration.jpg
similarity index 100%
rename from content/studio/static/images/screen_apacheds_configuration.jpg
rename to static/studio/static/images/screen_apacheds_configuration.jpg
Binary files differ
diff --git a/content/studio/static/images/screen_ldap_browser.jpg b/static/studio/static/images/screen_ldap_browser.jpg
similarity index 100%
rename from content/studio/static/images/screen_ldap_browser.jpg
rename to static/studio/static/images/screen_ldap_browser.jpg
Binary files differ
diff --git a/content/studio/static/images/screen_ldif_editor.jpg b/static/studio/static/images/screen_ldif_editor.jpg
similarity index 100%
rename from content/studio/static/images/screen_ldif_editor.jpg
rename to static/studio/static/images/screen_ldif_editor.jpg
Binary files differ
diff --git a/content/studio/static/images/screen_schema_editor.jpg b/static/studio/static/images/screen_schema_editor.jpg
similarity index 100%
rename from content/studio/static/images/screen_schema_editor.jpg
rename to static/studio/static/images/screen_schema_editor.jpg
Binary files differ
diff --git a/content/studio/static/images/transparent.gif b/static/studio/static/images/transparent.gif
similarity index 100%
rename from content/studio/static/images/transparent.gif
rename to static/studio/static/images/transparent.gif
Binary files differ
diff --git a/content/studio/static/images/zoom.gif b/static/studio/static/images/zoom.gif
similarity index 100%
rename from content/studio/static/images/zoom.gif
rename to static/studio/static/images/zoom.gif
Binary files differ
diff --git a/content/studio/static/images/zoom/closebox.png b/static/studio/static/images/zoom/closebox.png
similarity index 100%
rename from content/studio/static/images/zoom/closebox.png
rename to static/studio/static/images/zoom/closebox.png
Binary files differ
diff --git a/content/studio/static/images/zoom/spacer.gif b/static/studio/static/images/zoom/spacer.gif
similarity index 100%
rename from content/studio/static/images/zoom/spacer.gif
rename to static/studio/static/images/zoom/spacer.gif
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-caption-fill.png b/static/studio/static/images/zoom/zoom-caption-fill.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-caption-fill.png
rename to static/studio/static/images/zoom/zoom-caption-fill.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-caption-l.png b/static/studio/static/images/zoom/zoom-caption-l.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-caption-l.png
rename to static/studio/static/images/zoom/zoom-caption-l.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-caption-r.png b/static/studio/static/images/zoom/zoom-caption-r.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-caption-r.png
rename to static/studio/static/images/zoom/zoom-caption-r.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow1.png b/static/studio/static/images/zoom/zoom-shadow1.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow1.png
rename to static/studio/static/images/zoom/zoom-shadow1.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow2.png b/static/studio/static/images/zoom/zoom-shadow2.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow2.png
rename to static/studio/static/images/zoom/zoom-shadow2.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow3.png b/static/studio/static/images/zoom/zoom-shadow3.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow3.png
rename to static/studio/static/images/zoom/zoom-shadow3.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow4.png b/static/studio/static/images/zoom/zoom-shadow4.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow4.png
rename to static/studio/static/images/zoom/zoom-shadow4.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow5.png b/static/studio/static/images/zoom/zoom-shadow5.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow5.png
rename to static/studio/static/images/zoom/zoom-shadow5.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow6.png b/static/studio/static/images/zoom/zoom-shadow6.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow6.png
rename to static/studio/static/images/zoom/zoom-shadow6.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow7.png b/static/studio/static/images/zoom/zoom-shadow7.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow7.png
rename to static/studio/static/images/zoom/zoom-shadow7.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-shadow8.png b/static/studio/static/images/zoom/zoom-shadow8.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-shadow8.png
rename to static/studio/static/images/zoom/zoom-shadow8.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-1.png b/static/studio/static/images/zoom/zoom-spin-1.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-1.png
rename to static/studio/static/images/zoom/zoom-spin-1.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-10.png b/static/studio/static/images/zoom/zoom-spin-10.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-10.png
rename to static/studio/static/images/zoom/zoom-spin-10.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-11.png b/static/studio/static/images/zoom/zoom-spin-11.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-11.png
rename to static/studio/static/images/zoom/zoom-spin-11.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-12.png b/static/studio/static/images/zoom/zoom-spin-12.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-12.png
rename to static/studio/static/images/zoom/zoom-spin-12.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-2.png b/static/studio/static/images/zoom/zoom-spin-2.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-2.png
rename to static/studio/static/images/zoom/zoom-spin-2.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-3.png b/static/studio/static/images/zoom/zoom-spin-3.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-3.png
rename to static/studio/static/images/zoom/zoom-spin-3.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-4.png b/static/studio/static/images/zoom/zoom-spin-4.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-4.png
rename to static/studio/static/images/zoom/zoom-spin-4.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-5.png b/static/studio/static/images/zoom/zoom-spin-5.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-5.png
rename to static/studio/static/images/zoom/zoom-spin-5.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-6.png b/static/studio/static/images/zoom/zoom-spin-6.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-6.png
rename to static/studio/static/images/zoom/zoom-spin-6.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-7.png b/static/studio/static/images/zoom/zoom-spin-7.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-7.png
rename to static/studio/static/images/zoom/zoom-spin-7.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-8.png b/static/studio/static/images/zoom/zoom-spin-8.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-8.png
rename to static/studio/static/images/zoom/zoom-spin-8.png
Binary files differ
diff --git a/content/studio/static/images/zoom/zoom-spin-9.png b/static/studio/static/images/zoom/zoom-spin-9.png
similarity index 100%
rename from content/studio/static/images/zoom/zoom-spin-9.png
rename to static/studio/static/images/zoom/zoom-spin-9.png
Binary files differ
diff --git a/content/studio/static/js/FancyZoom.js b/static/studio/static/js/FancyZoom.js
similarity index 100%
rename from content/studio/static/js/FancyZoom.js
rename to static/studio/static/js/FancyZoom.js
diff --git a/content/studio/static/js/FancyZoomHTML.js b/static/studio/static/js/FancyZoomHTML.js
similarity index 100%
rename from content/studio/static/js/FancyZoomHTML.js
rename to static/studio/static/js/FancyZoomHTML.js
diff --git a/content/studio/static/js/mootools.js b/static/studio/static/js/mootools.js
similarity index 100%
rename from content/studio/static/js/mootools.js
rename to static/studio/static/js/mootools.js
diff --git a/content/studio/static/js/slideshow.js b/static/studio/static/js/slideshow.js
similarity index 100%
rename from content/studio/static/js/slideshow.js
rename to static/studio/static/js/slideshow.js
diff --git a/content/studio/update/.htaccess b/static/studio/update/.htaccess
similarity index 100%
rename from content/studio/update/.htaccess
rename to static/studio/update/.htaccess
diff --git a/content/studio/update/1.0.0/index.html b/static/studio/update/1.0.0/index.html
similarity index 100%
rename from content/studio/update/1.0.0/index.html
rename to static/studio/update/1.0.0/index.html
diff --git a/content/studio/update/1.0.0/site.xml b/static/studio/update/1.0.0/site.xml
similarity index 100%
rename from content/studio/update/1.0.0/site.xml
rename to static/studio/update/1.0.0/site.xml
diff --git a/content/studio/update/1.0.0/web/site.css b/static/studio/update/1.0.0/web/site.css
similarity index 100%
rename from content/studio/update/1.0.0/web/site.css
rename to static/studio/update/1.0.0/web/site.css
diff --git a/content/studio/update/1.0.0/web/site.xsl b/static/studio/update/1.0.0/web/site.xsl
similarity index 100%
rename from content/studio/update/1.0.0/web/site.xsl
rename to static/studio/update/1.0.0/web/site.xsl
diff --git a/content/studio/update/1.0.1/index.html b/static/studio/update/1.0.1/index.html
similarity index 100%
rename from content/studio/update/1.0.1/index.html
rename to static/studio/update/1.0.1/index.html
diff --git a/content/studio/update/1.0.1/site.xml b/static/studio/update/1.0.1/site.xml
similarity index 100%
rename from content/studio/update/1.0.1/site.xml
rename to static/studio/update/1.0.1/site.xml
diff --git a/content/studio/update/1.0.1/web/site.css b/static/studio/update/1.0.1/web/site.css
similarity index 100%
rename from content/studio/update/1.0.1/web/site.css
rename to static/studio/update/1.0.1/web/site.css
diff --git a/content/studio/update/1.0.1/web/site.xsl b/static/studio/update/1.0.1/web/site.xsl
similarity index 100%
rename from content/studio/update/1.0.1/web/site.xsl
rename to static/studio/update/1.0.1/web/site.xsl
diff --git a/content/studio/update/1.1.0/index.html b/static/studio/update/1.1.0/index.html
similarity index 100%
rename from content/studio/update/1.1.0/index.html
rename to static/studio/update/1.1.0/index.html
diff --git a/content/studio/update/1.1.0/site.xml b/static/studio/update/1.1.0/site.xml
similarity index 100%
rename from content/studio/update/1.1.0/site.xml
rename to static/studio/update/1.1.0/site.xml
diff --git a/content/studio/update/1.1.0/web/site.css b/static/studio/update/1.1.0/web/site.css
similarity index 100%
rename from content/studio/update/1.1.0/web/site.css
rename to static/studio/update/1.1.0/web/site.css
diff --git a/content/studio/update/1.1.0/web/site.xsl b/static/studio/update/1.1.0/web/site.xsl
similarity index 100%
rename from content/studio/update/1.1.0/web/site.xsl
rename to static/studio/update/1.1.0/web/site.xsl
diff --git a/content/studio/update/1.2.0/index.html b/static/studio/update/1.2.0/index.html
similarity index 100%
rename from content/studio/update/1.2.0/index.html
rename to static/studio/update/1.2.0/index.html
diff --git a/content/studio/update/1.2.0/site.xml b/static/studio/update/1.2.0/site.xml
similarity index 100%
rename from content/studio/update/1.2.0/site.xml
rename to static/studio/update/1.2.0/site.xml
diff --git a/content/studio/update/1.2.0/web/site.css b/static/studio/update/1.2.0/web/site.css
similarity index 100%
rename from content/studio/update/1.2.0/web/site.css
rename to static/studio/update/1.2.0/web/site.css
diff --git a/content/studio/update/1.2.0/web/site.xsl b/static/studio/update/1.2.0/web/site.xsl
similarity index 100%
rename from content/studio/update/1.2.0/web/site.xsl
rename to static/studio/update/1.2.0/web/site.xsl
diff --git a/content/studio/update/1.3.0.v20081020/index.html b/static/studio/update/1.3.0.v20081020/index.html
similarity index 100%
rename from content/studio/update/1.3.0.v20081020/index.html
rename to static/studio/update/1.3.0.v20081020/index.html
diff --git a/content/studio/update/1.3.0.v20081020/site.xml b/static/studio/update/1.3.0.v20081020/site.xml
similarity index 100%
rename from content/studio/update/1.3.0.v20081020/site.xml
rename to static/studio/update/1.3.0.v20081020/site.xml
diff --git a/content/studio/update/1.3.0.v20081020/web/site.css b/static/studio/update/1.3.0.v20081020/web/site.css
similarity index 100%
rename from content/studio/update/1.3.0.v20081020/web/site.css
rename to static/studio/update/1.3.0.v20081020/web/site.css
diff --git a/content/studio/update/1.3.0.v20081020/web/site.xsl b/static/studio/update/1.3.0.v20081020/web/site.xsl
similarity index 100%
rename from content/studio/update/1.3.0.v20081020/web/site.xsl
rename to static/studio/update/1.3.0.v20081020/web/site.xsl
diff --git a/content/studio/update/1.4.0.v20090407/index.html b/static/studio/update/1.4.0.v20090407/index.html
similarity index 100%
rename from content/studio/update/1.4.0.v20090407/index.html
rename to static/studio/update/1.4.0.v20090407/index.html
diff --git a/content/studio/update/1.4.0.v20090407/site.xml b/static/studio/update/1.4.0.v20090407/site.xml
similarity index 100%
rename from content/studio/update/1.4.0.v20090407/site.xml
rename to static/studio/update/1.4.0.v20090407/site.xml
diff --git a/content/studio/update/1.4.0.v20090407/web/site.css b/static/studio/update/1.4.0.v20090407/web/site.css
similarity index 100%
rename from content/studio/update/1.4.0.v20090407/web/site.css
rename to static/studio/update/1.4.0.v20090407/web/site.css
diff --git a/content/studio/update/1.4.0.v20090407/web/site.xsl b/static/studio/update/1.4.0.v20090407/web/site.xsl
similarity index 100%
rename from content/studio/update/1.4.0.v20090407/web/site.xsl
rename to static/studio/update/1.4.0.v20090407/web/site.xsl
diff --git a/content/studio/update/1.5.0.v20091102/index.html b/static/studio/update/1.5.0.v20091102/index.html
similarity index 100%
rename from content/studio/update/1.5.0.v20091102/index.html
rename to static/studio/update/1.5.0.v20091102/index.html
diff --git a/content/studio/update/1.5.0.v20091102/site.xml b/static/studio/update/1.5.0.v20091102/site.xml
similarity index 100%
rename from content/studio/update/1.5.0.v20091102/site.xml
rename to static/studio/update/1.5.0.v20091102/site.xml
diff --git a/content/studio/update/1.5.0.v20091102/web/site.css b/static/studio/update/1.5.0.v20091102/web/site.css
similarity index 100%
rename from content/studio/update/1.5.0.v20091102/web/site.css
rename to static/studio/update/1.5.0.v20091102/web/site.css
diff --git a/content/studio/update/1.5.0.v20091102/web/site.xsl b/static/studio/update/1.5.0.v20091102/web/site.xsl
similarity index 100%
rename from content/studio/update/1.5.0.v20091102/web/site.xsl
rename to static/studio/update/1.5.0.v20091102/web/site.xsl
diff --git a/content/studio/update/1.5.1.v20091130/index.html b/static/studio/update/1.5.1.v20091130/index.html
similarity index 100%
rename from content/studio/update/1.5.1.v20091130/index.html
rename to static/studio/update/1.5.1.v20091130/index.html
diff --git a/content/studio/update/1.5.1.v20091130/site.xml b/static/studio/update/1.5.1.v20091130/site.xml
similarity index 100%
rename from content/studio/update/1.5.1.v20091130/site.xml
rename to static/studio/update/1.5.1.v20091130/site.xml
diff --git a/content/studio/update/1.5.1.v20091130/web/site.css b/static/studio/update/1.5.1.v20091130/web/site.css
similarity index 100%
rename from content/studio/update/1.5.1.v20091130/web/site.css
rename to static/studio/update/1.5.1.v20091130/web/site.css
diff --git a/content/studio/update/1.5.1.v20091130/web/site.xsl b/static/studio/update/1.5.1.v20091130/web/site.xsl
similarity index 100%
rename from content/studio/update/1.5.1.v20091130/web/site.xsl
rename to static/studio/update/1.5.1.v20091130/web/site.xsl
diff --git a/content/studio/update/1.5.2.v20091211/index.html b/static/studio/update/1.5.2.v20091211/index.html
similarity index 100%
rename from content/studio/update/1.5.2.v20091211/index.html
rename to static/studio/update/1.5.2.v20091211/index.html
diff --git a/content/studio/update/1.5.2.v20091211/site.xml b/static/studio/update/1.5.2.v20091211/site.xml
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/1.5.2.v20091211/site.xml
rename to static/studio/update/1.5.2.v20091211/site.xml
diff --git a/content/studio/update/1.5.2.v20091211/web/site.css b/static/studio/update/1.5.2.v20091211/web/site.css
similarity index 100%
rename from content/studio/update/1.5.2.v20091211/web/site.css
rename to static/studio/update/1.5.2.v20091211/web/site.css
diff --git a/content/studio/update/1.5.2.v20091211/web/site.xsl b/static/studio/update/1.5.2.v20091211/web/site.xsl
similarity index 100%
rename from content/studio/update/1.5.2.v20091211/web/site.xsl
rename to static/studio/update/1.5.2.v20091211/web/site.xsl
diff --git a/content/studio/update/1.5.3.v20100330/index.html b/static/studio/update/1.5.3.v20100330/index.html
similarity index 100%
rename from content/studio/update/1.5.3.v20100330/index.html
rename to static/studio/update/1.5.3.v20100330/index.html
diff --git a/content/studio/update/1.5.3.v20100330/site.xml b/static/studio/update/1.5.3.v20100330/site.xml
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/1.5.3.v20100330/site.xml
rename to static/studio/update/1.5.3.v20100330/site.xml
diff --git a/content/studio/update/1.5.3.v20100330/web/site.css b/static/studio/update/1.5.3.v20100330/web/site.css
similarity index 100%
rename from content/studio/update/1.5.3.v20100330/web/site.css
rename to static/studio/update/1.5.3.v20100330/web/site.css
diff --git a/content/studio/update/1.5.3.v20100330/web/site.xsl b/static/studio/update/1.5.3.v20100330/web/site.xsl
similarity index 100%
rename from content/studio/update/1.5.3.v20100330/web/site.xsl
rename to static/studio/update/1.5.3.v20100330/web/site.xsl
diff --git a/content/studio/update/2.x/.htaccess b/static/studio/update/2.x/.htaccess
similarity index 100%
rename from content/studio/update/2.x/.htaccess
rename to static/studio/update/2.x/.htaccess
diff --git a/content/studio/update/2.x/index.html b/static/studio/update/2.x/index.html
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/2.x/index.html
rename to static/studio/update/2.x/index.html
diff --git a/content/studio/update/2.x/site--xml.cgi b/static/studio/update/2.x/site--xml.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/2.x/site--xml.cgi
rename to static/studio/update/2.x/site--xml.cgi
diff --git a/content/studio/update/2.x/site--xml.html b/static/studio/update/2.x/site--xml.html
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/2.x/site--xml.html
rename to static/studio/update/2.x/site--xml.html
diff --git a/content/studio/update/2.x/web/site.css b/static/studio/update/2.x/web/site.css
similarity index 100%
rename from content/studio/update/2.x/web/site.css
rename to static/studio/update/2.x/web/site.css
diff --git a/content/studio/update/2.x/web/site.xsl b/static/studio/update/2.x/web/site.xsl
similarity index 100%
rename from content/studio/update/2.x/web/site.xsl
rename to static/studio/update/2.x/web/site.xsl
diff --git a/content/studio/update/compositeArtifacts--xml.cgi b/static/studio/update/compositeArtifacts--xml.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/compositeArtifacts--xml.cgi
rename to static/studio/update/compositeArtifacts--xml.cgi
diff --git a/static/studio/update/compositeArtifacts--xml.html b/static/studio/update/compositeArtifacts--xml.html
new file mode 100644
index 0000000..d1e98fe
--- /dev/null
+++ b/static/studio/update/compositeArtifacts--xml.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<?compositeArtifactRepository version="1.0.0"?>
+<repository name="Apache Directory Studio"
+ type="org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository"
+ version="1.0.0">
+ <properties size="1">
+ <property name="p2.timestamp" value="1536867977000" />
+ </properties>
+ <children size="2">
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/eclipse" />
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/dependencies" />
+ </children>
+</repository>
diff --git a/content/studio/update/compositeContent--xml.cgi b/static/studio/update/compositeContent--xml.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/compositeContent--xml.cgi
rename to static/studio/update/compositeContent--xml.cgi
diff --git a/static/studio/update/compositeContent--xml.html b/static/studio/update/compositeContent--xml.html
new file mode 100644
index 0000000..c05db34
--- /dev/null
+++ b/static/studio/update/compositeContent--xml.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<?compositeMetadataRepository version="1.0.0"?>
+<repository name="Apache Directory Studio"
+ type="org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository"
+ version="1.0.0">
+ <properties size="1">
+ <property name="p2.timestamp" value="1536867977000" />
+ </properties>
+ <children size="2">
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/eclipse" />
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/dependencies" />
+ </children>
+</repository>
diff --git a/content/studio/update/p2.index b/static/studio/update/p2.index
similarity index 100%
rename from content/studio/update/p2.index
rename to static/studio/update/p2.index
diff --git a/content/studio/update/product/.htaccess b/static/studio/update/product/.htaccess
similarity index 100%
rename from content/studio/update/product/.htaccess
rename to static/studio/update/product/.htaccess
diff --git a/content/studio/update/product/compositeArtifacts--xml.cgi b/static/studio/update/product/compositeArtifacts--xml.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/product/compositeArtifacts--xml.cgi
rename to static/studio/update/product/compositeArtifacts--xml.cgi
diff --git a/static/studio/update/product/compositeArtifacts--xml.html b/static/studio/update/product/compositeArtifacts--xml.html
new file mode 100644
index 0000000..d1e98fe
--- /dev/null
+++ b/static/studio/update/product/compositeArtifacts--xml.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<?compositeArtifactRepository version="1.0.0"?>
+<repository name="Apache Directory Studio"
+ type="org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository"
+ version="1.0.0">
+ <properties size="1">
+ <property name="p2.timestamp" value="1536867977000" />
+ </properties>
+ <children size="2">
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/eclipse" />
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/dependencies" />
+ </children>
+</repository>
diff --git a/content/studio/update/product/compositeContent--xml.cgi b/static/studio/update/product/compositeContent--xml.cgi
old mode 100755
new mode 100644
similarity index 100%
rename from content/studio/update/product/compositeContent--xml.cgi
rename to static/studio/update/product/compositeContent--xml.cgi
diff --git a/static/studio/update/product/compositeContent--xml.html b/static/studio/update/product/compositeContent--xml.html
new file mode 100644
index 0000000..c05db34
--- /dev/null
+++ b/static/studio/update/product/compositeContent--xml.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<?compositeMetadataRepository version="1.0.0"?>
+<repository name="Apache Directory Studio"
+ type="org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository"
+ version="1.0.0">
+ <properties size="1">
+ <property name="p2.timestamp" value="1536867977000" />
+ </properties>
+ <children size="2">
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/eclipse" />
+ <child location="https://downloads.apache.org/directory/studio/2.0.0.v20180908-M14/update/dependencies" />
+ </children>
+</repository>
diff --git a/content/studio/update/product/p2.index b/static/studio/update/product/p2.index
similarity index 100%
rename from content/studio/update/product/p2.index
rename to static/studio/update/product/p2.index
diff --git a/content/studio/users-guide.data/html.png b/static/studio/users-guide.data/html.png
similarity index 100%
rename from content/studio/users-guide.data/html.png
rename to static/studio/users-guide.data/html.png
Binary files differ
diff --git a/content/studio/users-guide.data/pdf.png b/static/studio/users-guide.data/pdf.png
similarity index 100%
rename from content/studio/users-guide.data/pdf.png
rename to static/studio/users-guide.data/pdf.png
Binary files differ
diff --git a/templates/apacheds/download-archive.html b/templates/apacheds/download-archive.html
deleted file mode 100644
index d31549f..0000000
--- a/templates/apacheds/download-archive.html
+++ /dev/null
@@ -1,110 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Downloads for Archive</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.zip">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>TAR.GZ Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.tar.gz">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_archive_1.jpg" width="225" height="130"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Server.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
-
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_archive_2.jpg" width="225" height="160"/></td>
- <td> </td>
- <td>Extract the downladed archive and place the extracted folder where you want Apache DS to be installed.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>A recent Linux distribution, Mac OS X (10.4 - Tiger or later), Windows (XP or Vista).</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-linux-bin.html b/templates/apacheds/download-linux-bin.html
deleted file mode 100644
index 421ff49..0000000
--- a/templates/apacheds/download-linux-bin.html
+++ /dev/null
@@ -1,112 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Downloads for Linux Binary Installer</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Linux Binary Installer 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.bin">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.bin">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-64bit.bin
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.bin.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.bin.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.bin.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>Linux Binary Installer 32 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.bin">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.bin">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-32bit.bin
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.bin.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.bin.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.bin.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_bin_1.jpg" width="225" height="130"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Server for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_bin_2.jpg" width="225" height="161"/></td>
- <td> </td>
- <td>Open a terminal.<br>
- Change to your downloads folder.<br>
- Give execution rights to the installer (<em>chmod a+x apacheds-{{version_apacheds}}-64bit.bin</em>).<br>
- Run the installer (<em>./apacheds-{{version_apacheds}}-64bit.bin</em>).</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>A recent Linux distribution.</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}-64bit.bin{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-linux-deb.html b/templates/apacheds/download-linux-deb.html
deleted file mode 100644
index b17b6c2..0000000
--- a/templates/apacheds/download-linux-deb.html
+++ /dev/null
@@ -1,138 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Downloads for Linux Debian Package</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Linux Debian Package 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-amd64.deb">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-amd64.deb">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-amd64.deb
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-amd64.deb.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-amd64.deb.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-amd64.deb.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>Linux Debian Package 32 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.deb">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.deb">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-i386.deb
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.deb.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.deb.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.deb.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_deb_1.jpg" width="225" height="130"/></td>
- <td> </td>
- <td>Click on the link above to download ApacheDS for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_deb_2.jpg" width="225" height="159"/></td>
- <td> </td>
- <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_deb_3.jpg" width="225" height="169"/></td>
- <td> </td>
- <td>The installer displays some information about what's going to be installed.<br>Click the <em>Install Package</em> button to start the installation.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_4.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_deb_4.jpg" width="225" height="151"/></td>
- <td> </td>
- <td>You might be prompted to enter your <em>root</em> password.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_5.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_deb_5.jpg" width="225" height="115"/></td>
- <td> </td>
- <td>The installation starts.</td>
- </tr>
- </table>
-</p>
-
-<h2> Command line installation</h2>
- You can also install the debian package from the command line :
-
- <pre>
- chmod +x apacheds-2.0.0-<version>-amd64.deb
- </pre>
-
- <pre>
- dpkg -i apacheds-2.0.0-<version>-amd64.deb
- </pre>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>A recent Linux distribution supporting the *.deb install packages.</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}-amd64.deb{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-linux-rpm.html b/templates/apacheds/download-linux-rpm.html
deleted file mode 100644
index bb41ea1..0000000
--- a/templates/apacheds/download-linux-rpm.html
+++ /dev/null
@@ -1,121 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Download for Linux RPM Package</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Linux RPM Package 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-x86_64.rpm">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-x86_64.rpm">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-x86_64.rpm
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-x86_64.rpm.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-x86_64.rpm.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-x86_64.rpm.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>Linux RPM Package 32 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.rpm">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.rpm">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-i386.rpm
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.rpm.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.rpm.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-i386.rpm.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_rpm_1.jpg" width="225" height="138"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Server for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_rpm_2.jpg" width="225" height="176"/></td>
- <td> </td>
- <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_rpm_3.jpg" width="225" height="143"/></td>
- <td> </td>
- <td>You might be prompted to enter your <em>root</em> password.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_4.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_rpm_4.jpg" width="225" height="127"/></td>
- <td> </td>
- <td>The installation starts.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>A recent Linux distribution supporting the *.rpm install packages.</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}-x86_64.rpm{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-macosx.html b/templates/apacheds/download-macosx.html
deleted file mode 100644
index c10f619..0000000
--- a/templates/apacheds/download-macosx.html
+++ /dev/null
@@ -1,121 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Download for Mac OS X Installer</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Mac OS X Installer 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.dmg">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.dmg">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-64bit.dmg
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.dmg.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.dmg.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-64bit.dmg.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>Mac OS X Installer 32 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.dmg">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.dmg">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}-32bit.dmg
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.dmg.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.dmg.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}-32bit.dmg.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_1.jpg" width="225" height="120"/></td>
- <td> </td>
- <td>Click on the link above to download ApacheDS for Mac OS X.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_2.jpg" width="225" height="161"/></td>
- <td> </td>
- <td>Double-click on the disk image to open it.<br/>It may have already been opened by your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_3.jpg" width="225" height="194"/></td>
- <td> </td>
- <td>Double-click on the <em>Apache Directory Server Installer.pkg</em> file to open the installer.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_4.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_4.jpg" width="225" height="164"/></td>
- <td> </td>
- <td>Follow the instructions of the installer to complete the installation.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>Mac OS X version 10.4 (Tiger) or later.</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}-64bit.dmg{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-sources.html b/templates/apacheds/download-sources.html
deleted file mode 100644
index 52b3589..0000000
--- a/templates/apacheds/download-sources.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Download for Sources</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-parent-{{version_apacheds}}-source-release.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-parent-{{version_apacheds}}-source-release.zip">
- <strong>
- [preferred]/[...]/apacheds-parent-{{version_apacheds}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-parent-{{version_apacheds}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-parent-{{version_apacheds}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-parent-{{version_apacheds}}-source-release.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-parent-{{version_apacheds}}-source-release.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/download-windows.html b/templates/apacheds/download-windows.html
deleted file mode 100644
index 17686f7..0000000
--- a/templates/apacheds/download-windows.html
+++ /dev/null
@@ -1,92 +0,0 @@
-{% extends "apacheds/page.html" %}
- {% block content %}
-<h1>Download for Windows</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.exe">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.exe">
- <strong>
- [preferred]/[...]/apacheds-{{version_apacheds}}.exe
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.exe.asc">ASC</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.exe.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/apacheds/dist/{{version_apacheds}}/apacheds-{{version_apacheds}}.exe.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_1.jpg" width="225" height="141"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Server for Windows.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_2.jpg" width="225" height="146"/></td>
- <td> </td>
- <td>Double-click on the installer to open it.<br/>It may have already been opened by your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_3.jpg" width="225" height="175"/></td>
- <td> </td>
- <td>You may be prompted to confirm that you are sure you want to open the installer. Answer <em>Run</em> if such a popup is displayed.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_4.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_4.jpg" width="225" height="178"/></td>
- <td> </td>
- <td>Follow the instructions of the installer to complete the installation.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- ApacheDS requires at least:
- <ul>
- <li>Windows XP, Vista or 7.</li>
- <li><a href="http://www.java.com/">a Java Runtime Environment</a> 6 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apacheds-{{version_apacheds}}.exe{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/apacheds/index.html b/templates/apacheds/index.html
deleted file mode 100644
index 073cced..0000000
--- a/templates/apacheds/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
-{% extends "apacheds/page.html" %}
-
-{% block content %}
-
- {% block hero %}
- <div class="hero clearfix">
- <div class="left">
- <h1>ApacheDS™</h1>
- <h2>LDAP and Kerberos server written in Java</h2>
- <div class="description">ApacheDS™ is an extensible and embeddable directory server entirely written in Java, which has been certified LDAPv3 compatible by the Open Group. Besides LDAP it supports Kerberos 5 and the Change Password Protocol. It has been designed to introduce triggers, stored procedures, queues and views to the world of LDAP which has lacked these rich constructs.</div>
- <div class="download-link">
- <a href="{{base}}apacheds/downloads.html" class="download_badge"><b>Download<br>ApacheDS {{version_apacheds}}</b></a>
- </div>
- </div>
- <div class="right">
- <img src="../images/hero-apacheds.jpg" width="377" height="287" border="0"/>
- </div>
- </div>
- {% endblock %}
-
- {% block features-highlights %}
- <div class="features-highlights clearfix">
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_server_ldapv3_compliant.png">
- <h3>LDAPv3 Compliant</h3>
- <div class="text">Since its initial version, ApacheDS has been certified by the Open Group which guarantees conformance of directory servers to version 3 of the LDAP protocol.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_server_x500_authorization.png">
- <h3>Full X500 Authorization</h3>
- <div class="text">ApacheDS uses an adaptation of the X.500 basic access control scheme in combination with X.500 subentries to control access to entries and attributes within the DIT.</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_server_kerberos_server.png">
- <h3>Kerberos Server Built-in</h3>
- <div class="text">Not only is ApacheDS an LDAP server, it also supports the Kerberos protocol being a KDC (Key Distribution Center), a TGS (Ticket Granting Server) and an AS (Authentication Server).</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_server_multi_master_replication.png">
- <h3>Multi-Master Replication</h3>
- <div class="text">Multi-master replication support via RFC 4533 (Content Synchronization Operation) has been added to ApacheDS 2.0, making it also compatible with OpenLDAP.</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_server_password_policy.png">
- <h3>Password Policy Support</h3>
- <div class="text">ApacheDS supports the "Password Policy for LDAP Directories" RFC draft, allowing it to enforce a set of rules designed to encourage users to employ strong passwords and use them properly.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_server_ldif_based_configuration.png">
- <h3>LDIF-Based Configuration</h3>
- <div class="text">The configuration of ApacheDS relies on an LDIF file, a well known format for people working around LDAP technologies, making it easier to configure the server.</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_server_written_java_embeddable.png">
- <h3>Written in Java and Embeddable</h3>
- <div class="text">ApacheDS has been written in Java, one of the best object-oriented programming languages, which makes it easy for developpers to embed in their own Java applications.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_server_multi_platform.png">
- <h3>Multi-Platform</h3>
- <div class="text">ApacheDS is available on most operating systems (Linux, Mac OS X & Windows), with dedicated installers for each platform (.deb, .bin, or .rpm packages, Windows installer, .zip and .tar.gz archives, etc).</div>
- </div>
- </div>
- {% endblock %}
-
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/apacheds/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/apacheds/page.html b/templates/apacheds/page.html
deleted file mode 100644
index 2f392d9..0000000
--- a/templates/apacheds/page.html
+++ /dev/null
@@ -1,99 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/green.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/server-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>ApacheDS 2.0</h5>
- <ul>
- <li><a href="{{base}}apacheds/">Home</a></li>
- <li><a href="{{base}}apacheds/news.html">News</a></li>
- <li><a href="{{base}}apacheds/features.html">Features</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}apacheds/downloads.html">ApacheDS {{version_apacheds}}</a> <img src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}apacheds/download-old-versions.html">Older versions</a></li>
- </ul>
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}apacheds/basic-user-guide.html">Basic User Guide </a></li>
- <li><a href="{{base}}apacheds/advanced-user-guide.html">Advanced User Guide</a></li>
- <li><a href="{{base}}apacheds/developer-guide.html">Developer Guide</a></li>
- <li><a href="{{base}}apacheds/kerberos-user-guide.html">Kerberos User Guide</a></li>
- <li><a href="{{base}}apacheds/configuration/ads-2.0-configuration.html">Configuration</a></li>
- <li><a href="{{base}}apacheds/gen-docs/latest/apidocs">JavaDocs</a></li>
- <li><a href="{{base}}apacheds/gen-docs/latest/xref">Cross-Reference</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
\ No newline at end of file
diff --git a/templates/api/download-archive-1.html b/templates/api/download-archive-1.html
deleted file mode 100644
index 6d2fcff..0000000
--- a/templates/api/download-archive-1.html
+++ /dev/null
@@ -1,79 +0,0 @@
-{% extends "api/page.html" %}
- {% block content %}
-<h1>Downloads of Archive packages</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>LDAP API 1.0</h2>
-
-<h3>ZIP Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.zip">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api}}-bin.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h3>TAR.GZ Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.tar.gz">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api}}-bin.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-bin.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-ldap-api-{{version_api}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
\ No newline at end of file
diff --git a/templates/api/download-archive-2.html b/templates/api/download-archive-2.html
deleted file mode 100644
index 8d6503f..0000000
--- a/templates/api/download-archive-2.html
+++ /dev/null
@@ -1,78 +0,0 @@
-{% extends "api/page.html" %}
- {% block content %}
-<h1>Downloads of Archive packages</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>LDAP API 2.0</h2>
-
-<h3>ZIP Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.zip">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api2}}-bin.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h3>TAR.GZ Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.tar.gz">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api2}}-bin.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-bin.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-ldap-api-{{version_api}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
\ No newline at end of file
diff --git a/templates/api/download-sources-1.html b/templates/api/download-sources-1.html
deleted file mode 100644
index 23d3bf8..0000000
--- a/templates/api/download-sources-1.html
+++ /dev/null
@@ -1,78 +0,0 @@
-{% extends "api/page.html" %}
- {% block content %}
-<h1>Download of source packages</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>LDAP API 1.0</h2>
-
-<h3>ZIP Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.zip">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api}}-src.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h3>TAR.GZ Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.tar.gz">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api}}-src.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api}}/apache-ldap-api-{{version_api}}-src.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-ldap-api-{{version_api}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
\ No newline at end of file
diff --git a/templates/api/download-sources-2.html b/templates/api/download-sources-2.html
deleted file mode 100644
index c966303..0000000
--- a/templates/api/download-sources-2.html
+++ /dev/null
@@ -1,78 +0,0 @@
-{% extends "api/page.html" %}
- {% block content %}
-<h1>Download of source packages</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>LDAP API 2.0</h2>
-
-<h3>ZIP Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.zip">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api2}}-src.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h3>TAR.GZ Archive</h3>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.tar.gz">
- <strong>
- [preferred]/[...]/apache-ldap-api-{{version_api2}}-src.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.tar.gz.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/api/dist/{{version_api2}}/apache-ldap-api-{{version_api2}}-src.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-ldap-api-{{version_api}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
\ No newline at end of file
diff --git a/templates/api/index.html b/templates/api/index.html
deleted file mode 100644
index fbb23f0..0000000
--- a/templates/api/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% extends "api/page.html" %}
-
-{% block content %}
-
- {% block hero %}
- <div class="hero clearfix">
- <div class="left">
- <h1>Apache Directory LDAP API™</h1>
- <h2>The modern Java LDAP API</h2>
- <div class="description">
- The Apache Directory LDAP API is an ongoing effort to provide an enhanced LDAP API, as a replacement for JNDI and the existing LDAP API (jLdap and Mozilla LDAP API).<br/>
- This is a "schema aware" API with some convenient ways to access all types of LDAP servers, not only ApacheDS but any LDAP server.<br/>
- The API is OSGI ready and extensible. New controls, schema elements and network layer could be added or used in the near future.
- </div>
- <div class="download-link">
- <a href="{{base}}api/downloads-1.html" class="download_badge"><b>Download Apache<br>LDAP API {{version_api}}</b></a>
- </div>
- <div class="download-link">
- <a href="{{base}}api/downloads-2.html" class="download_badge"><b>Download Apache<br>LDAP API {{version_api2}}</b></a>
- </div>
- </div>
- <div class="right">
- <img src="../images/hero-ldap-api.jpg" width="377" height="287" border="0"/>
- </div>
- </div>
- {% endblock %}
-
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/api/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/templates/api/page.html b/templates/api/page.html
deleted file mode 100644
index dadf9b6..0000000
--- a/templates/api/page.html
+++ /dev/null
@@ -1,107 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/brown.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/api-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>LDAP API </h5>
- <ul>
- <li><a href="{{base}}api/">Home</a></li>
- <li><a href="{{base}}api/news.html">News</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}api/downloads-1.html">Version {{version_api}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}api/downloads-2.html">Version {{version_api2}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}api/download-old-versions.html">Older versions</a></li>
- </ul>
- <h5>Getting Started</h5>
- <ul>
- <li><a href="{{base}}api/vision.html">Vision</a></li>
- <li><a href="{{base}}api/java-api.html">Java API</a></li>
- </ul>
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}api/five-minutes-tutorial.html">Five minute tutorial</a></li>
- <li><a href="{{base}}api/user-guide.html">User Guide</a></li>
- <li><a href="{{base}}api/migration-guide.html">API 1 to 2 migration</a></li>
- <li><a href="{{base}}api/gen-docs/latest/apidocs/">JavaDocs</a></li>
- <li><a href="{{base}}api/gen-docs/latest2/apidocs/">JavaDocs 2</a></li>
- <li><a href="{{base}}api/gen-docs/latest/xref/">Cross-Reference</a></li>
- <li><a href="{{base}}api/gen-docs/latest2/xref/">Cross-Reference 2</a></li>
- <!--li><a href="{{base}}api/gen-docs/latest/">Generated Reports</a></li-->
- <li><a href="{{base}}api/developer-guide.html">Developer Guide</a></li>
- <li><a href="{{base}}api/internal-design-guide.html">Internal Guide</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
\ No newline at end of file
diff --git a/templates/download-verify-file-integrity.html b/templates/download-verify-file-integrity.html
deleted file mode 100644
index 05de000..0000000
--- a/templates/download-verify-file-integrity.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<h1><a name="verifyIntegrity"></a>Verify the integrity of the file</h1>
-
-<p>The PGP signatures can be verified using PGP or GPG. First download the <a href="https://downloads.apache.org/directory/KEYS">KEYS</a> as well as the <em>asc</em> signature file for the relevant distribution. Then verify the signatures using:</p>
-
-<div class="preformatted">
- <div class="preformattedContent">
- <pre>$ pgpk -a KEYS
-$ gpgv {% block filename %}{% endblock %}.asc</pre>
- </div>
-</div>
-or
-<div class="preformatted">
- <div class="preformattedContent">
- <pre>$ pgp -ka KEYS
-$ gpg {% block filename %}{% endblock %}.asc {% block filename %}{% endblock %}</pre>
- </div>
-</div>
-or
-<div class="preformatted">
- <div class="preformattedContent">
- <pre>$ gpg --import KEYS
-$ gpg --verify {% block filename %}{% endblock %}.asc {% block filename %}{% endblock %}</pre>
- </div>
-</div>
-
-<p> </p>
-
-<p>Alternatively, you can verify the checksums of the files (see the <a href="https://www.apache.org/info/verification.html">How to verify downloaded files</a> page). </p>
-<p> </p>
diff --git a/templates/footer.html b/templates/footer.html
deleted file mode 100644
index a0666ad..0000000
--- a/templates/footer.html
+++ /dev/null
@@ -1,10 +0,0 @@
- </div><!-- rightColumn -->
- <div id="endContent"></div>
- </div><!-- content -->
- <div id="footer">© 2003-2018, <a href="http://www.apache.org">The Apache Software Foundation</a> - <a href="{{base}}privacy-policy.html">Privacy Policy</a><br />
- Apache Directory, ApacheDS, Apache Directory Server, Apache Directory Studio, Apache LDAP API, Apache Triplesec, Triplesec, Apache Mavibot, Mavibot, Apache eSCIMo, eSCIMo, Apache SCIMple, SCIMple,Fortress, Apache Fortress, EnMasse, Apache EnMasse,
- Apache Kerby, Kerby, Apache, the Apache feather logo, and the Apache Directory project logos are trademarks of The Apache Software Foundation.
- </div>
- </div><!-- container -->
- </body>
-</html>
\ No newline at end of file
diff --git a/templates/fortress/download-archive.html b/templates/fortress/download-archive.html
deleted file mode 100644
index ef33841..0000000
--- a/templates/fortress/download-archive.html
+++ /dev/null
@@ -1,129 +0,0 @@
-{% extends "fortress/page.html" %}
- {% block content %}
-<h1>Download Binaries</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Download jar and war files</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}.jar">
- <strong>
- [preferred]/[...]/fortress-core-{{version_fortress}}.jar
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}.jar.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-realm-impl-{{version_fortress}}.jar">
- <strong>
- [preferred]/[...]/fortress-realm-impl-{{version_fortress}}.jar
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-impl-{{version_fortress}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-impl-{{version_fortress}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-impl-{{version_fortress}}.jar.sha512">SHA512</a>]
- </td>
- </tr>
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-realm-proxy-{{version_fortress}}.jar">
- <strong>
- [preferred]/[...]/fortress-realm-proxy-{{version_fortress}}.jar
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-proxy-{{version_fortress}}.jar.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-proxy-{{version_fortress}}.jar.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-proxy-{{version_fortress}}.jar.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}.war">
- <strong>
- [preferred]/[...]/fortress-rest-{{version_fortress}}.war
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}.war.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}.war.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}.war.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}.war">
- <strong>
- [preferred]/[...]/fortress-web-{{version_fortress}}.war
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}.war.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}.war.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}.war.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}fortress-core-{{version_fortress}}.jar{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/fortress/download-sources.html b/templates/fortress/download-sources.html
deleted file mode 100644
index af3692d..0000000
--- a/templates/fortress/download-sources.html
+++ /dev/null
@@ -1,113 +0,0 @@
-{% extends "fortress/page.html" %}
- {% block content %}
-<h1>Downloads for Archive</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}-source-release.zip">
- <strong>
- [preferred]/[...]/fortress-core-{{version_fortress}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-core-{{version_fortress}}-source-release.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-realm-{{version_fortress}}-source-release.zip">
- <strong>
- [preferred]/[...]/fortress-realm-{{version_fortress}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-{{version_fortress}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-{{version_fortress}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-realm-{{version_fortress}}-source-release.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}-source-release.zip">
- <strong>
- [preferred]/[...]/fortress-rest-{{version_fortress}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-rest-{{version_fortress}}-source-release.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}-source-release.zip">
- <strong>
- [preferred]/[...]/fortress-web-{{version_fortress}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}-source-release.zip.sha256">SHA256</a>-<a href="https://downloads.apache.org/directory/fortress/dist/{{version_fortress}}/fortress-web-{{version_fortress}}-source-release.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}fortress-core-{{version_api}}-source-release.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/fortress/index.html b/templates/fortress/index.html
deleted file mode 100644
index bd237e5..0000000
--- a/templates/fortress/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "fortress/page.html" %}
-
-{% block content %}
- {% block hero %}
- <div class="hero clearfix">
- <div class="top">
- <h1>Apache Fortress™</h1>
- <h2>Access Management SDK and Web Components</h2>
- <div class="description">
- <b>A standards-based access management system, written in Java, supports ANSI INCITS 359 RBAC and more. </b>
-<br><br>
- </div>
- </div>
- <!--div class="download-link">
- <a href="{{base}}fortress/downloads.html" class="download_badge"><b>Download Apache<br>Fortress {{version_fortress}}</b></a>
- </div-->
- <div class="bottom">
- <img src="../images/fortress-web-system-arch.png" style="width: 75%; height: 75%" border="0"/>
- </div>
- </div>
- {% endblock %}
-
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/fortress/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-{% endblock %}
diff --git a/templates/fortress/page.html b/templates/fortress/page.html
deleted file mode 100644
index 53eef68..0000000
--- a/templates/fortress/page.html
+++ /dev/null
@@ -1,106 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/turquoise.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/fortress-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>Fortress</h5>
- <ul>
- <li><a href="{{base}}fortress/">Home</a></li>
- <li><a href="{{base}}fortress/history.html">History</a></li>
- <li><a href="{{base}}fortress/news.html">News</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}fortress/downloads.html">Fortress {{version_fortress}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}fortress/download-old-versions.html">Older versions</a></li>
- </ul>
- <!--h5>Getting Started</h5>
- <ul>
- <li><a href="{{base}}fortress/vision.html">Vision</a></li>
- <li><a href="{{base}}fortress/issues.html">Issues</a></li>
- </ul-->
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}fortress/overview.html">Overview</a></li>
- <li><a href="{{base}}fortress/installation.html">Installation Guide</a></li>
- <li><a href="{{base}}fortress/user-guide.html">Users Guide</a></li>
- <li><a href="{{base}}fortress/coding-standards.html">Coding Standards</a></li>
- <li><a href="{{base}}fortress/gen-docs/latest/apidocs/">JavaDocs</a></li>
- <!--li><a href="{{base}}fortress/gen-docs/latest/xref/">Cross-Reference</a></li-->
- <li><a href="{{base}}fortress/gen-docs/latest/">Generated Reports</a></li>
- <li><a href="{{base}}fortress/developer-guide.html">Developer Guide</a></li>
- <li><a href="{{base}}fortress/testimonials.html">Testimonials</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
diff --git a/templates/header.html b/templates/header.html
deleted file mode 100644
index c02df8d..0000000
--- a/templates/header.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<html>
- <head>
- <title>{% block title %}{{ headers.title }}{% endblock %} — Apache Directory</title>
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/green.css" rel="stylesheet" type="text/css">
- {% endblock %}
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/server-icon_16x16.png">
- {% endblock %}
- <!-- Google Analytics -->
- <!--script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
- <script type="text/javascript">
- _uacct = "UA-1358462-1";
- urchinTracker();
- </script-->
- </head>
- <body>
- <div id="container">
- <div id="header">
- <div id="subProjectsNavBar">
- <a href="{{base}}">
- {% if isDirSite %}
- <STRONG>Main</STRONG>
- {% else %}
- Main
- {% endif %}
- </a>
- |
- <a href="{{base}}apacheds">
- {% if isDirApacheDS %}
- <STRONG>ApacheDS</STRONG>
- {% else %}
- ApacheDS
- {% endif %}
- </a>
- |
- <a href="{{base}}studio">
- {% if isDirStudio %}
- <STRONG>Studio</STRONG>
- {% else %}
- Studio
- {% endif %}
- </a>
- |
- <a href="{{base}}api">
- {% if isDirAPI %}
- <STRONG>LDAP API</STRONG>
- {% else %}
- LDAP API
- {% endif %}
- </a>
- |
- <a href="{{base}}mavibot">
- {% if isDirMVBT %}
- <STRONG>Mavibot</STRONG>
- {% else %}
- Mavibot
- {% endif %}
- </a>
- |
- <a href="{{base}}scimple">
- {% if isDirScimple %}
- <STRONG>SCIMple</STRONG>
- {% else %}
- SCIMple
- {% endif %}
- </a>
- |
- <a href="{{base}}fortress">
- {% if isDirFortress %}
- <STRONG>Fortress</STRONG>
- {% else %}
- Fortress
- {% endif %}
- </a>
- |
- <a href="{{base}}kerby">
- {% if isDirKerby %}
- <STRONG>Kerby</STRONG>
- {% else %}
- Kerby
- {% endif %}
- </a>
- </div><!-- subProjectsNavBar -->
- </div><!-- header -->
- <div id="content">
- <div id="leftColumn">
- {% include "navigation.html" %}
- </div><!-- leftColumn -->
- <div id="rightColumn">
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
deleted file mode 100644
index e23bd45..0000000
--- a/templates/index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends "page.html" %}
-
-{% block content %}
- {{content|markdown}}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/kerby/download-archive.html b/templates/kerby/download-archive.html
deleted file mode 100644
index 356b328..0000000
--- a/templates/kerby/download-archive.html
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "kerby/page.html" %}
- {% block content %}
-<h1>Downloads of Archive packages</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-bin.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-bin.zip">
- <strong>
- [preferred]/[...]/apache-kerby-{{version_kerby}}-bin.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.zip.asc">ASC</a>-<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.zip.sha512">SHA-512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>TAR.GZ Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.tar.gz">
- <strong>
- [preferred]/[...]/apache-kerby-{{version_kerby}}-bin.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.tar.gz.asc">ASC</a>-<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-bin.tar.gz.sha512">SHA-512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-kerby-{{version_kerby}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/kerby/download-sources.html b/templates/kerby/download-sources.html
deleted file mode 100644
index 3031b4b..0000000
--- a/templates/kerby/download-sources.html
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "kerby/page.html" %}
- {% block content %}
-<h1>Downloads for Archive</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-source-release.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-source-release.zip">
- <strong>
- [preferred]/[...]/kerby-all-{{version_kerby}}-source-release.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-source-release.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/kerby/dist/{{version_kerby}}/kerby-all-{{version_kerby}}-source-release.zip.sha512">SHA-512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<!-- h2>TAR.GZ Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-src.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-src.tar.gz">
- <strong>
- [preferred]/[...]/apache-kerby-{{version_kerby}}-src.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-src.tar.gz.asc">ASC</a>-<a href="https://archive.apache.org/dist/directory/kerby/dist/{{version_kerby}}/apache-kerby-{{version_kerby}}-src.tar.gz.sha512">SHA-512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
--->
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-kerby-{{version_kerby}}-src.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/kerby/index.html b/templates/kerby/index.html
deleted file mode 100644
index ac4a9f8..0000000
--- a/templates/kerby/index.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "kerby/page.html" %}
-
-{% block content %}
-
- {% block hero %}
- <div class="hero clearfix">
- <div class="left">
- <h1>Apache Kerby™</h1>
- <h2>A Kerberos Protocol and KDC Implementation</h2>
- </div>
- <div class="right">
- <img src="../images/kerby_logo.png" width="125" height="125" border="0"/>
- </div>
- </div>
- {% endblock %}
-
- {% block description %}
- <div class="description">
- Apache Kerby™ is a Java Kerberos binding. It provides a rich, intuitive and interoperable implementation, library, KDC and various facilities that integrates PKI, OTP and token (OAuth2) as desired in modern environments such as cloud, Hadoop and mobile.<br/>
- </div>
- <!-- div class="download-link">
- <a href="{{base}}kerby/downloads.html" class="download_badge"><b>Download Apache<br>Kerby {{version_kerby}}</b></a>
- </div-->
- {% endblock %}
-
- {% block overview %}
- <div class="news">{% filter markdown %}{% include "../content/kerby/overview.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-
-<!--
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/kerby/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
--->
-
-{% endblock %}
diff --git a/templates/kerby/page.html b/templates/kerby/page.html
deleted file mode 100644
index e5acece..0000000
--- a/templates/kerby/page.html
+++ /dev/null
@@ -1,99 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/orange.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/api-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <h5>Kerby</h5>
- <ul>
- <li><a href="{{base}}kerby/">Home</a></li>
- <li><a href="{{base}}kerby/news.html">News</a></li>
- <li><a href="{{base}}kerby/features.html">Features</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}kerby/downloads.html">Version {{version_kerby}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}kerby/download-old-versions.html">Older versions</a></li>
- </ul>
- <h5>Getting Started</h5>
- <ul>
- <!--li><a href="{{base}}kerby/vision.html">Vision</a></li-->
- <li><a href="{{base}}kerby/issues.html">Issues</a></li>
- </ul>
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}kerby/overview.html">Overview</a></li>
- <!--li><a href="{{base}}kerby/quick-start.html">Quick Start</a></li-->
- <li><a href="{{base}}kerby/kerby-asn1.html">Kerby ASN1</a></li>
- <li><a href="{{base}}kerby/user-guide.html">User Guide</a></li>
- <!--li><a href="{{base}}kerby/gen-docs/latest/apidocs/">JavaDocs</a></li-->
- <!--li><a href="{{base}}kerby/gen-docs/latest/xref/">Cross-Reference</a></li-->
- <!--li><a href="{{base}}kerby/gen-docs/latest/">Generated Reports</a></li-->
- <li><a href="{{base}}kerby/developer-guide.html">Developer Guide</a></li>
- <li><a href="{{base}}kerby/tutorials.html">Tutorials</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
diff --git a/templates/mavibot/download-archive.html b/templates/mavibot/download-archive.html
deleted file mode 100644
index 2a769c3..0000000
--- a/templates/mavibot/download-archive.html
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "mavibot/page.html" %}
- {% block content %}
-<h1>Downloads for Archive</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.zip">
- <strong>
- [preferred]/[...]/mavibot-{{version_mavibot}}-bin.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.zip.sha1">SHA-1</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>TAR.GZ Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.tar.gz">
- <strong>
- [preferred]/[...]/mavibot-{{version_mavibot}}-bin.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-bin.tar.gz.sha1">SHA-1</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}mavibot-{{version_mavibot}}-bin.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/mavibot/download-sources.html b/templates/mavibot/download-sources.html
deleted file mode 100644
index 8566ef2..0000000
--- a/templates/mavibot/download-sources.html
+++ /dev/null
@@ -1,76 +0,0 @@
-{% extends "mavibot/page.html" %}
- {% block content %}
-<h1>Downloads for Archive</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>ZIP Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.zip">
- <strong>
- [preferred]/[...]/mavibot-{{version_mavibot}}-src.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.zip.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.zip.sha1">SHA-1</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>TAR.GZ Archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.tar.gz">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.tar.gz">
- <strong>
- [preferred]/[...]/mavibot-{{version_mavibot}}-src.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.tar.gz.asc">ASC</a>-<a href="https://downloads.apache.org/directory/mavibot/dist/{{version_mavibot}}/mavibot-{{version_mavibot}}-src.tar.gz.sha1">SHA-1</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}apache-mavibot-{{version_mavibot}}-src.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/mavibot/index.html b/templates/mavibot/index.html
deleted file mode 100644
index 0d4583b..0000000
--- a/templates/mavibot/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{% extends "mavibot/page.html" %}
-
-{% block content %}
-
- {% block hero %}
- <div class="hero clearfix">
- <div class="left">
- <h1>Apache Mavibot™</h1>
- <h2>MVCC BTree Java Implementation</h2>
- <div class="description">
- Mavibot™ is a <em>Multi Version Concurrency Control</em> (MVCC) BTree in Java. It is expected to be a replacement for JDBM (The current backend for the Apache Directory Server), but could be a good fit for any other project in need of a Java MVCC BTree implementation.
- </div>
- <div class="download-link">
- <a href="{{base}}mavibot/downloads.html" class="download_badge"><b>Download Apache<br>Mavibot {{version_mavibot}}</b></a>
- </div>
- </div>
- <div class="right">
- <img src="../images/hero-mavibot.jpg" width="377" height="287" border="0"/>
- </div>
- </div>
- {% endblock %}
-
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/mavibot/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-
-{% endblock %}
diff --git a/templates/mavibot/page.html b/templates/mavibot/page.html
deleted file mode 100644
index 70c58fb..0000000
--- a/templates/mavibot/page.html
+++ /dev/null
@@ -1,101 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/turquoise.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/mavibot-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>Mavibot 1.0</h5>
- <ul>
- <li><a href="{{base}}mavibot/">Home</a></li>
- <li><a href="{{base}}mavibot/news.html">News</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}mavibot/downloads.html">Version {{version_mavibot}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}mavibot/download-old-versions.html">Older versions</a></li>
- </ul>
- <h5>Getting Started</h5>
- <ul>
- <li><a href="{{base}}mavibot/vision.html">Vision</a></li>
- </ul>
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}mavibot/five-minutes-tutorial.html">Five minutes tutorial</a></li>
- <li><a href="{{base}}mavibot/user-guide.html">User Guide</a></li>
- <li><a href="{{base}}mavibot/gen-docs/latest/apidocs/">JavaDocs</a></li>
- <li><a href="{{base}}mavibot/gen-docs/latest/xref/">Cross-Reference</a></li>
- <!--li><a href="{{base}}mavibot/gen-docs/latest/">Generated Reports</a></li-->
- <li><a href="{{base}}mavibot/developer-guide.html">Developer Guide</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
diff --git a/templates/navigation.html b/templates/navigation.html
deleted file mode 100644
index 39a5389..0000000
--- a/templates/navigation.html
+++ /dev/null
@@ -1,72 +0,0 @@
-{% block navigation %}
-<div id="navigation">
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>Latest Downloads</h5>
- <ul>
- <li><a href="{{base}}apacheds/downloads.html">ApacheDS {{version_apacheds}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}studio/downloads.html">Studio {{version_studio_name}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}api/downloads-1.html">LDAP API {{version_api}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}api/downloads-2.html">LDAP API {{version_api2}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}mavibot/downloads.html">Mavibot {{version_mavibot}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}fortress/downloads.html">Fortress {{version_fortress}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li-->
- <li><a href="{{base}}scimple/downloads.html">SCIMple {{version_scimple}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}kerby/downloads.html">Kerby {{version_kerby}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- </ul>
- <h5>Sub-Projects</h5>
- <ul>
- <li><a href="{{base}}apacheds/">ApacheDS</a></li>
- <li><a href="{{base}}studio/">Apache Directory Studio</a></li>
- <li><a href="{{base}}api/">Apache LDAP API</a></li>
- <li><a href="{{base}}mavibot/">Apache Mavibot</a></li>
- <li><a href="{{base}}scimple/">Apache SCIMple</a></li>
- <li><a href="{{base}}fortress/">Apache Fortress</a></li>
- <li><a href="{{base}}kerby/">Apache Kerby</a></li>
- </ul>
- <!--h5>Sandbox</h5>
- <ul>
- <li><a href="{{base}}triplesec/">Triplesec</a></li>
- </ul-->
- <h5>Resources</h5>
- <ul>
- <li><a href="{{base}}references.html">References</a></li>
- <li><a href="{{base}}articles.html">Articles</a></li>
- <li><a href="{{base}}conference-materials.html">Conferences</a></li>
- <li><a href="{{base}}testimonies.html">Testimonials</a></li>
- <li><a href="{{base}}vision.html">Vision</a></li>
- <li><a href="{{base}}security-advisories.html">Security Advisories</a></li>
- <!--li><a href="{{base}}interopability.html">Interropability</a></li-->
- </ul>
- {% endblock %}
- {% block common-navigation %}
- <h5>Support</h5>
- <ul>
- <li><a href="{{base}}mailing-lists-and-irc.html">Mailing Lists & IRC</a></li>
- <li><a href="{{base}}sources.html">Sources</a></li>
- <li><a href="{{base}}issue-tracking.html">Issue Tracking</a></li>
- <li><a href="{{base}}commercial-support.html">Commercial Support</a></li>
- </ul>
- <h5>Community</h5>
- <ul>
- <li><a href="{{base}}contribute.html">How to Contribute</a></li>
- <li><a href="{{base}}team.html">Team</a></li>
- <li><a href="{{base}}original-project-proposal.html">Original Project Proposal</a></li>
- <li><a href="{{base}}special-thanks.html" class="external-link" rel="nofollow">Special Thanks</a></li>
- </ul>
- <h5>About Apache</h5>
- <ul>
- <li><a href="http://www.apache.org/">Apache</a></li>
- <li><a href="http://www.apache.org/licenses/">License</a></li>
- <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
- <li><a href="http://www.apache.org/security/">Security</a></li>
- </ul>
- {% endblock %}
-</div><!-- navigation -->
-{% endblock %}
diff --git a/templates/page.html b/templates/page.html
deleted file mode 100644
index 52b6206..0000000
--- a/templates/page.html
+++ /dev/null
@@ -1,68 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/green.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/server-icon_16x16.png">
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
\ No newline at end of file
diff --git a/templates/scimple/index.html b/templates/scimple/index.html
deleted file mode 100644
index 4ae8ea6..0000000
--- a/templates/scimple/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "scimple/page.html" %}
-
-{% block content %}
- {{content|markdown}}
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/scimple/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/scimple/page.html b/templates/scimple/page.html
deleted file mode 100644
index 5be3ec8..0000000
--- a/templates/scimple/page.html
+++ /dev/null
@@ -1,97 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/brown.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/api-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>SCIMple 1.0</h5>
- <ul>
- <li><a href="{{base}}scimple/">Home</a></li>
- <li><a href="{{base}}scimple/news.html">News</a></li>
- </ul>
- <!--<h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}scimple/downloads.html">Version {{version_scimple}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}scimple/download-old-versions.html">Older versions</a></li>
- </ul>-->
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}scimple/five-minutes-tutorial.html">Five minutes tutorial</a></li>
- <li><a href="{{base}}scimple/user-guide.html">User Guide</a></li>
- <li><a href="{{base}}scimple/gen-docs/latest/apidocs/">JavaDocs</a></li>
- <li><a href="{{base}}scimple/gen-docs/latest/xref/">Cross-Reference</a></li>
- <!--li><a href="{{base}}scimple/gen-docs/latest/">Generated Reports</a></li-->
- <li><a href="{{base}}scimple/developer-guide.html">Developer Guide</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
\ No newline at end of file
diff --git a/templates/studio/download-linux.html b/templates/studio/download-linux.html
deleted file mode 100644
index 8ba6ed1..0000000
--- a/templates/studio/download-linux.html
+++ /dev/null
@@ -1,84 +0,0 @@
-{% extends "studio/page.html" %}
- {% block content %}
-<h1>Downloads for Linux</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Linux 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz ">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz">
- <strong>
- [preferred][...]/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.asc">ASC</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.sha256">SHA256</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_1.jpg" width="225" height="141"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Studio for your Linux architecture.<br />Your download appears in the download manager of your web browser.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_linux_2.jpg" width="225" height="150"/></td>
- <td> </td>
- <td>Extract the downladed archive and place the extracted folder where you want Apache Directory Studio to be installed.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- Apache Directory Studio requires at least:
- <ul>
- <li>a recent Linux distribution. It has been tested successfully on Ubuntu and Arch Linux.</li>
- <li><a href="http://jdk.java.net/">Java Development Kit</a> 8 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}ApacheDirectoryStudio-{{version_studio}}-linux.gtk.x86_64.tar.gz{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/studio/download-macosx.html b/templates/studio/download-macosx.html
deleted file mode 100644
index d0a75f3..0000000
--- a/templates/studio/download-macosx.html
+++ /dev/null
@@ -1,90 +0,0 @@
-{% extends "studio/page.html" %}
- {% block content %}
-<h1>Downloads for macOS</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>macOS 64 bit</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg">
- <strong>
- [preferred][...]/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg.asc">ASC</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg.sha256">SHA256</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_1.jpg" width="225" height="120"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Studio for macOS.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_2.jpg" width="225" height="161"/></td>
- <td> </td>
- <td>The download appeares in the Downloads folder in Finder. Double-click on the disk image to open it.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_macosx_3.jpg" width="225" height="207"/></td>
- <td> </td>
- <td>Drag-and-drop the <em>Apache Directory Studio</em> application on the <em>Applications</em> folder to install it.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- Apache Directory Studio requires at least:
- <ul>
- <li>macOS version 10.10 (Yosemite) or later.</li>
- <li><a href="http://jdk.java.net/">Java Development Kit</a> 8 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}ApacheDirectoryStudio-{{version_studio}}-macosx.cocoa.x86_64.dmg{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/studio/download-sources.html b/templates/studio/download-sources.html
deleted file mode 100644
index 4e060c3..0000000
--- a/templates/studio/download-sources.html
+++ /dev/null
@@ -1,49 +0,0 @@
-{% extends "studio/page.html" %}
- {% block content %}
-<h1>Download for Sources</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-src.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-src.zip">
- <strong>
- [preferred][...]/ApacheDirectoryStudio-{{version_studio}}-src.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-src.zip.asc">ASC</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-src.zip.sha256">SHA256</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-src.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}ApacheDirectoryStudio-{{version_studio}}-src.zip{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/studio/download-windows.html b/templates/studio/download-windows.html
deleted file mode 100644
index 87c1f38..0000000
--- a/templates/studio/download-windows.html
+++ /dev/null
@@ -1,125 +0,0 @@
-{% extends "studio/page.html" %}
- {% block content %}
-<h1>Downloads for Windows</h1>
-
-<p>
- [if-any logo]
- <a href="[link]"><img align="right" src="[logo]" border="0" /></a>
- [end]
- We suggest the following mirror site for your download:
-</p>
-
-<h2>Windows 64 bit installer</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe">
- <strong>
- [preferred][...]/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe.asc">ASC</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe.sha256">SHA256</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<h2>Windows 64 bit zip archive</h2>
-
-<p>
- <div class="download">
- <table width="100%" class="noBorder">
- <tr>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip">
- <img src="{{base}}images/download.png" width="32" height="32" border="0"/>
- </a>
- </td>
- <td> </td>
- <td>
- <a href="[preferred]directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip">
- <strong>
- [preferred][...]/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip
- </strong>
- </a>
- </td>
- <td align="right">
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip.asc">ASC</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip.sha256">SHA256</a>]
- [<a href="https://downloads.apache.org/directory/studio/{{version_studio}}/ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.zip.sha512">SHA512</a>]
- </td>
- </tr>
- </table>
- </div>
-</p>
-
-<p> </p>
-
-{% include "download-change-mirror.html" %}
-
-<p> </p>
-
-<h1>Installation</h1>
-
-<p>
- <table class="noBorder">
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_1.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_1.jpg" width="225" height="141"/></td>
- <td> </td>
- <td>Click on the link above to download Apache Directory Studio for Windows.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_2.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_2.jpg" width="225" height="150"/></td>
- <td> </td>
- <td>Double-click on the installer to open it.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_3.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_3.jpg" width="225" height="180"/></td>
- <td> </td>
- <td>You may be prompted to confirm that you are sure you want to open the installer. Answer <em>Run</em> if such a popup is displayed.</td>
- </tr>
- <tr>
- <td width="64" height="64"><img src="{{base}}images/figure_4.gif" width="64" height="64"/></td>
- <td><img src="images/installation_windows_4.jpg" width="225" height="176"/></td>
- <td> </td>
- <td>Follow the instructions of the installer to complete the installation.</td>
- </tr>
- </table>
-</p>
-
-<p> </p>
-
-<h1>Requirements</h1>
-
-<p>
- Apache Directory Studio requires at least:
- <ul>
- <li>a recent Windows version.</li>
- <li><a href="http://jdk.java.net/">Java Development Kit</a> 8 or later.</li>
- </ul>
-</p>
-
-<p> </p>
-
- {% extends "download-verify-file-integrity.html" %}
- {% block filename %}ApacheDirectoryStudio-{{version_studio}}-win32.win32.x86_64.exe{% endblock %}
- {% endextends %}
- {% endblock %}
-{% endextends %}
diff --git a/templates/studio/index.html b/templates/studio/index.html
deleted file mode 100644
index 424070f..0000000
--- a/templates/studio/index.html
+++ /dev/null
@@ -1,94 +0,0 @@
-{% extends "studio/page.html" %}
-
-{% block content %}
-
- {% block hero %}
- <div class="hero clearfix">
- <div class="left">
- <h1>Apache Directory Studio™</h1>
- <h2>The Eclipse-based LDAP browser and directory client</h2>
- <div class="description">Apache Directory Studio is a complete directory tooling platform intended to be used with any LDAP server however it is particularly designed for use with ApacheDS. It is an Eclipse RCP application, composed of several Eclipse (OSGi) plugins, that can be easily upgraded with additional ones. These plugins can even run within Eclipse itself.</div>
- <div class="download-link">
- <a href="{{base}}studio/downloads.html" class="download_badge"><b>Download Apache<br>Directory Studio {{version_studio_name}}</b></a>
- </div>
- </div>
- <div class="right">
- <div id="studio-slideshow" class="slideshow">
- <img src="static/images/screen_ldap_browser.jpg" width="377" height="287" border="0"/>
- </div>
- <script type="text/javascript" src="static/js/mootools.js"></script><script type="text/javascript" src="static/js/slideshow.js"></script>
- <script type="text/javascript">
- window.onload = function()
- {
- new Slideshow( "studio-slideshow",
- {
- hu: 'static/images/',
- images: [
- 'screen_ldap_browser.jpg',
- 'screen_ldif_editor.jpg',
- 'screen_aci_editor.jpg',
- 'screen_schema_editor.jpg',
- 'screen_apacheds_configuration.jpg'
- ],
- duration: [600, 2000]
- });
- }
- </script>
- </div>
- </div>
- {% endblock %}
-
- {% block features-highlights %}
- <div class="features-highlights clearfix">
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_studio_ldap_browser.png">
- <h3>LDAP Browser</h3>
- <div class="text">The LDAP Browser has been designed to work with almost any LDAP server available. It not only permits to read and display the tree of your LDAP Server but also allows you to modify it by creating, editing or removing entries.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_studio_ldif_editor.png">
- <h3>LDIF Editor</h3>
- <div class="text">The LDIF Editor is a tool for editing LDIF files. It provides syntax highlighting and content assistance.</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_studio_schema_editor.png">
- <h3>Schema Editor</h3>
- <div class="text">The Schema Editor has been designed to edit the schema files in the OpenLDAP format. It allows you to edit easily attribute types and object classes for Apache Directory Server and OpenLDAP.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_studio_embedded_apacheds.png">
- <h3>Embedded ApacheDS</h3>
- <div class="text">Apache Directory Studio bundles the latest version of the LDAPV3 certified ApacheDS. Creating and launching a new LDAP server now takes less than 10 seconds!</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_studio_apacheds_configuration.png">
- <h3>ApacheDS Configuration</h3>
- <div class="text">The ApacheDS Configuration Editor can be used to edit the server configuration ('server.xml' and 'config.ldif' files) of an Apache Directory Server installation.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_studio_aci_editor.png">
- <h3>ACI Editor</h3>
- <div class="text">The ACI Editor allows you to define, for an entry or a set of entries, graphically or manually (in souce code mode), an ACI (Access Control Information) item specification for Apache Directory Server.</div>
- </div>
- <div class="separator clearfix"></div>
- <div class="feature-highlight left">
- <img class="icon" src="../images/feature_highlight_studio_internationalization.png">
- <h3>Internationalization</h3>
- <div class="text">Apache Directory Studio is internationalized in English, French and German. We're also open for volunteers who want to add another language support.</div>
- </div>
- <div class="feature-highlight right">
- <img class="icon" src="../images/feature_highlight_studio_multi_platform_in_eclipse.png">
- <h3>Multi-Platform & in Eclipse</h3>
- <div class="text">Based on Eclipse, Apache Directory Studio is a multi-plaform application that runs on macOS, Linux and Windows, and also as plugins inside Eclipse itself.</div>
- </div>
- </div>
- {% endblock %}
-
- {% block news %}
- <div class="news">{% filter markdown %}{% include "../content/studio/news.mdtext" %}{% endfilter %}</div>
- {% endblock %}
-
-
-{% endblock %}
diff --git a/templates/studio/page.html b/templates/studio/page.html
deleted file mode 100644
index 5b6d325..0000000
--- a/templates/studio/page.html
+++ /dev/null
@@ -1,100 +0,0 @@
-{% extends "header.html" %}
- {% block css %}
- <link href="{{base}}css/common.css" rel="stylesheet" type="text/css">
- <link href="{{base}}css/blue.css" rel="stylesheet" type="text/css">
- {% endblock %}
-
- {% block favicon %}
- <link rel="shortcut icon" href="{{base}}images/studio-icon_16x16.png">
- {% endblock %}
-
- {% block project-navigation %}
- <!--ul>
- <li>
- <a href="http://bit.ly/1n9YlQT" target="_blank">
- <img src="{{base}}images/ApacheConBudapest.png" width="125" height="125" alt="I'm Speaking at ApacheCon Europe 2014! Join me!" title="I'm Speaking at ApacheCon Europe 2014! Join me!" border="0" style="margin-bottom:-3px;"/>
- </a>
- </li>
- </ul-->
- <h5>Apache Directory Studio</h5>
- <ul>
- <li><a href="{{base}}studio/">Home</a></li>
- <li><a href="{{base}}studio/news.html">News</a></li>
- <li><a href="{{base}}studio/screenshots.html">Screenshots</a></li>
- </ul>
- <h5>Downloads</h5>
- <ul>
- <li><a href="{{base}}studio/downloads.html">Version {{version_studio_name}}</a> <IMG src="{{base}}images/new_badge.gif" alt="" style="margin-bottom:-3px;" border="0"></li>
- <li><a href="{{base}}studio/download-old-versions.html">Older Versions</a></li>
- </ul>
- <h5>Documentation</h5>
- <ul>
- <li><a href="{{base}}studio/users-guide.html">User's Guide</a></li>
- <li><a href="{{base}}studio/developers-guide.html">Developer's Guide</a></li>
- <li><a href="{{base}}studio/faqs.html">FAQs</a></li>
- </ul>
- <h5>Resources</h5>
- <ul>
- <li><a href="{{base}}studio/changelog.html">ChangeLog</a></li>
- <li><a href="{{base}}studio/testimonials.html">Testimonials</a></li>
- </ul>
- {% endblock %}
-{% endextends %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% block content %}{{ content|markdown }}{% endblock %}
-
-{% if headers.navprev or headers.navup or headers.navnext %}
- <div class="nav">
- <div class="nav_prev">
- {% if headers.navprev %}
- <a href="{{ headers.navprev }}">{{ headers.navprevtext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_up">
- {% if headers.navup %}
- <a href="{{ headers.navup }}">{{ headers.navuptext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="nav_next">
- {% if headers.navnext %}
- <a href="{{ headers.navnext }}">{{ headers.navnexttext }}</a>
- {% else %}
-
- {% endif %}
- </div>
- <div class="clearfix"></div>
- </div>
-{% endif %}
-
-{% include "footer.html" %}
\ No newline at end of file