Index: ivy.xml
===================================================================
--- ivy.xml	(revision 29176)
+++ ivy.xml	(working copy)
@@ -41,6 +41,7 @@
     <dependency org="org.ametys.cms" name="cms" branch="3.6.x" rev="latest.integration" conf="default->default;runtime->resources"/>
     <dependency org="org.ametys.plugins" name="odf" branch="2.3.x" rev="latest.integration" conf="default->default;runtime->resources"/>
     <dependency org="org.ametys.plugins" name="odf-sync" branch="2.3.x" rev="latest.integration" conf="default->default;runtime->resources"/>
+    <dependency org="org.ametys.plugins" name="odf-export" branch="2.3.x" rev="latest.integration" conf="default->default;runtime->resources"/>
 
     <!-- Runtime dependencies -->
     <dependency org="slf4j" name="slf4j" rev="1.6.4" conf="runtime->log4j12"/>
Index: webapp/WEB-INF/param/odf-export.xml
===================================================================
--- webapp/WEB-INF/param/odf-export.xml	(revision 0)
+++ webapp/WEB-INF/param/odf-export.xml	(revision 0)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   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.
+   -->
+
+<export prefix='ODF'>
+	<content id='org.ametys.plugins.odf.Content.program' name='program' />
+	<content id='org.ametys.plugins.odf.Content.course' name='course' />
+	<content id='org.ametys.plugins.odf.Content.person' name='person' />
+	<content id='org.ametys.plugins.odf.Content.orgunit' name='orgunit' />
+</export>
+   
+   
Index: webapp/WEB-INF/param/cms-ribbon.xml
===================================================================
--- webapp/WEB-INF/param/cms-ribbon.xml	(revision 29176)
+++ webapp/WEB-INF/param/cms-ribbon.xml	(working copy)
@@ -19,7 +19,602 @@
 
 	<tabs>
 		<!-- ODF -->
-		<import>plugin:odf-sync://cms-ribbon-apogee.xml</import>
+		<tab label="plugin.odf:RIBBON_TABS_TAB_ODF_LABEL">
+            <groups>
+                <!-- Program Group -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_PROGRAM_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.program.SearchMenu"/>
+                        <layout size="small">
+                            <control id="org.ametys.odfsync.program.ImportProgramButton"/>
+                            <control id="org.ametys.odf.program.AddProgramButton"/>
+                            <control id="org.ametys.odf.program.Dashboard"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.program.SearchMenu"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odfsync.program.ImportProgramButton"/>
+                            <control id="org.ametys.odf.program.AddProgramButton"/>
+                            <control id="org.ametys.odf.program.Dashboard"/>
+                        </layout>
+                    </small>
+                </group>
+                <!-- Course Group -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_COURSES_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.course.Search"/>
+                        <layout size="small">
+                            <control id="org.ametys.odfsync.course.ImportCourseButton"/>
+                            <control id="org.ametys.odf.course.AddCourse"/>
+                            <control id="org.ametys.odf.course.Dashboard"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.course.Search"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odfsync.course.ImportCourseButton"/>
+                            <control id="org.ametys.odf.course.AddCourse"/>
+                            <control id="org.ametys.odf.course.Dashboard"/>
+                        </layout>
+                    </small>
+                </group>
+                <!-- OrgUnit Group -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_ORGUNIT_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.orgunit.OrgUnitButton"/>
+                        <layout size="small">
+                            <control id="org.ametys.odfsync.orgunit.ImportOrgUnitButton"/>
+                            <control id="org.ametys.odf.orgunit.AddOrgunitButton"/>
+                            <control id="org.ametys.odf.rights.assignment.tool.Composante"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.orgunit.OrgUnitButton"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odfsync.orgunit.ImportOrgUnitButton"/>
+                            <control id="org.ametys.odf.orgunit.AddOrgunitButton"/>
+                            <control id="org.ametys.odf.rights.assignment.tool.Composante"/>
+                        </layout>
+                    </small>
+                </group>
+                <!-- Person Group -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_PERSONS_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.person.PersonButton"/>
+                        <layout size="small">
+                            <control id="org.ametys.odfsync.person.ImportPerson"/>
+                            <control id="org.ametys.odf.person.AddPersonButton"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.person.PersonButton"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odfsync.person.ImportPerson"/>
+                            <control id="org.ametys.odf.person.AddPersonButton"/>
+                        </layout>
+                    </small>
+                </group>
+                <!-- Synchronization Group -->
+                <group label="plugin.odf-sync:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_SYNCHRO_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.sync.GlobalSynchronizationButton"/>
+                    </medium>
+                    <small/>
+                </group>
+                <!-- Export -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_EXPORT_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.PDFExport"/>
+		                <control id="org.ametys.odf.ExportSql"/>
+                    </medium>
+                    <small/>
+                </group>
+                
+                <!-- Catalogs Group -->
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_CATALOGS_LABEL" icon="">
+                    <large />
+                    <medium>
+                        <control id="org.ametys.odf.catalog.Catalogs"/>
+                        <control id="org.ametys.odf.catalog.Create"/>
+                    </medium>
+                    <small>
+                        <layout size="small">
+                            <control id="org.ametys.odf.catalog.Catalogs"/>
+                            <control id="org.ametys.odf.catalog.Create"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>  
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_ORGUNIT_CONTENT_LABEL" id="org.ametys.odf.orgunit.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.content.orgunit.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odf.orgunit.workflow.Draft"/>
+                        <control id="org.ametys.odf.orgunit.workflow.Proposed"/>
+                        <control id="org.ametys.odf.orgunit.workflow.Validated"/>
+                        <control id="org.ametys.odf.content.Delete"/>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odf.orgunit.workflow.Draft"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.orgunit.workflow.Proposed"/>
+                            <control id="org.ametys.odf.orgunit.workflow.Validated"/>
+                            <control id="org.ametys.odf.content.Delete"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.orgunit.workflow.Draft"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.orgunit.workflow.Proposed"/>
+                            <control id="org.ametys.odf.orgunit.workflow.Validated"/>
+                            <control id="org.ametys.odf.content.Delete"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odfsync.orgunit.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odfsync.orgunit.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odfsync.orgunit.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_CONTAINER_CONTENT_LABEL" id="org.ametys.odf.container.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.content.container.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.content.Delete"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_STRUC_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odfsync.container.ChangeSyncCode"/>
+                        <control id="org.ametys.cms.ContentConsistencyTest"/>
+                    </medium>
+                    <small></small>
+                </group>
+            </groups>
+        </tab>
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_SUBPROGRAM_CONTENT_LABEL" id="org.ametys.odf.subprogram.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.content.container.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.content.Delete"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_STRUC_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odfsync.subprogram.ChangeSyncCode"/>
+                        <control id="org.ametys.cms.ContentConsistencyTest"/>
+                    </medium>
+                    <small></small>
+                </group>
+            </groups>
+        </tab>
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_PERSON_CONTENT_LABEL" id="org.ametys.odf.person.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.content.person.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.person.workflow.Draft"/>
+                        <control id="org.ametys.odf.person.workflow.Validated"/>
+                        <control id="org.ametys.odf.content.Delete"/>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.person.workflow.Draft"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.person.workflow.Validated"/>
+                            <control id="org.ametys.odf.content.Delete"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odfsync.person.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odfsync.person.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odfsync.person.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>      
+        
+        <!-- +
+             | PROGRAM
+             + -->
+        <!-- RIBBON_TABS_TAB_ODF_CONTENT_LABEL -->
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_PROGRAM_LABEL" id="org.ametys.odf.program.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.content.program.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odf.program.workflow.Draft"/>
+                        <control id="org.ametys.odf.program.workflow.Proposed"/>
+                        <control id="org.ametys.odf.program.workflow.Validated"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.content.Delete"/>
+                            <control id="org.ametys.odf.program.workflow.Archive"/>
+                        </layout>
+                    </large>
+                    <medium>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.workflow.Draft"/>
+                            <control id="org.ametys.odf.program.workflow.Proposed"/>
+                            <control id="org.ametys.odf.program.workflow.Validated"/>
+                        </layout>
+                        <layout size="small">
+                            <control id="org.ametys.odf.content.Delete"/>
+                            <control id="org.ametys.odf.program.workflow.Archive"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.workflow.Draft"/>
+                            <control id="org.ametys.odf.program.workflow.Proposed"/>
+                            <control id="org.ametys.odf.program.workflow.Validated"/>
+                        </layout>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.content.Delete"/>
+                            <control id="org.ametys.odf.program.workflow.Archive"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_STRUC_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.program.ProgramTree"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddContainer"/>
+                            <control id="org.ametys.odfsync.program.ImportSubProgramOrContainer"/>
+                        </layout>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.program.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odfsync.program.apogee.Synchronize"/>
+                        <control id="org.ametys.odf.cdmfr.Export2CDMfr"/>
+                        <control id="org.ametys.odf.program.TranslateFull"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odfsync.program.apogee.Synchronize"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.cdmfr.Export2CDMfr"/>
+                            <control id="org.ametys.odf.program.TranslateFull"/>
+                            <control id="org.ametys.cms.userinterface.History"/>
+                        </layout>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odfsync.program.apogee.Synchronize"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.cdmfr.Export2CDMfr"/>
+                            <control id="org.ametys.odf.program.TranslateFull"/>
+                            <control id="org.ametys.cms.userinterface.History"/>
+                        </layout>
+                        <layout size="very-small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>
+             
+        <!-- +
+             | COURSE
+             + -->
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_COURSELIST_LABEL" id="org.ametys.odf.course.Tab" contextualColor="4" contextualGroup="C" contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_STRUC_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odfsync.course.EditCourseList"/>
+                        <control id="org.ametys.odf.course.DeleteCourseList"/>
+                        <control id="org.ametys.odf.course.AddCourseIntoList"/>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odfsync.course.EditCourseList"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.course.DeleteCourseList"/>
+                            <control id="org.ametys.odf.course.AddCourseIntoList"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odfsync.course.EditCourseList"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.course.DeleteCourseList"/>
+                            <control id="org.ametys.odf.course.AddCourseIntoList"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>           
+        <tab label="plugin.odf:RIBBON_TABS_TAB_ODF_COURSE_LABEL" id="org.ametys.odf.course.content.Tab" contextualColor="4" contextualGroup="O"  contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_ACTION_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.content.course.Edit"/>
+                        <control id="org.ametys.cms.Unlock"/>
+                    </medium>
+                    <small/>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_WORKFLOW_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odf.course.workflow.Draft"/>
+                        <control id="org.ametys.odf.course.workflow.Proposed"/>
+                        <control id="org.ametys.odf.course.workflow.Validated"/>
+                        <control id="org.ametys.odf.content.Delete"/>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odf.course.workflow.Draft"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.course.workflow.Proposed"/>
+                            <control id="org.ametys.odf.course.workflow.Validated"/>
+                            <control id="org.ametys.odf.content.Delete"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.course.workflow.Draft"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.course.workflow.Proposed"/>
+                            <control id="org.ametys.odf.course.workflow.Validated"/>
+                            <control id="org.ametys.odf.content.Delete"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_ODF_GROUPS_GROUP_STRUC_LABEL" icon="">
+                    <large/>
+                    <medium>
+                        <control id="org.ametys.odf.course.CourseTree"/>
+                        <layout size="small">
+                            <control id="org.ametys.odf.course.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                            <control id="org.ametys.odf.course.RemoveCourseFromList"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odf.course.CourseTree"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.odf.course.AddCourseList"/>
+                            <control id="org.ametys.odfsync.program.ImportCourseList"/>
+                            <control id="org.ametys.odf.course.RemoveCourseFromList"/>
+                        </layout>
+                    </small>
+                </group>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large>
+                        <control id="org.ametys.odfsync.course.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </large>
+                    <medium>
+                        <control id="org.ametys.odfsync.course.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </medium>
+                    <small>
+                        <control id="org.ametys.odfsync.course.apogee.Synchronize"/>
+                        <control id="org.ametys.cms.userinterface.History"/>
+                        <layout size="very-small">
+                            <control id="org.ametys.cms.ContentConsistencyTest"/>
+                            <control id="org.ametys.cms.Details"/>
+                            <control id="org.ametys.cms.content.Reload"/>
+                        </layout>
+                    </small>
+                </group>
+            </groups>
+        </tab>
+        
+        <!-- +
+             | SYNCHRO 
+             + -->
+        <tab label="plugin.odf-sync:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_SYNCHRO_LABEL" id="org.ametys.odf.sync.SynchronizationTab" contextualColor="6" contextualGroup="SYNC" contextualLabel="plugin.odf:RIBBON_TABS_TAB_ODF_LABEL">
+            <groups>
+                <group label="plugin.odf:RIBBON_TABS_TAB_CONTENT_GROUPS_GROUP_TOOL_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.sync.GlobalSynchronizationRun"/>
+                        <control id="org.ametys.odf.sync.GlobalSynchronizationSeeReport"/>
+                    </medium>
+                    <small></small>
+                </group>
+            </groups>
+        </tab>
+        
+        <tab label="plugin.cms:RIBBON_TABS_TAB_ARCHIVED_CONTENT_LABEL" id="org.ametys.cms.archived.content.Tab" contextualColor="1" contextualGroup="A" contextualLabel="plugin.cms:RIBBON_TABS_TAB_ARCHIVED_CONTENT_LABEL">
+            <groups>
+                <group label="plugin.cms:RIBBON_TABS_TAB_ARCHIVED_CONTENT_GROUP_ACTIONS_LABEL" icon="">
+                    <large></large>
+                    <medium>
+                        <control id="org.ametys.odf.program.workflow.Unarchive"/>
+                    </medium>
+                    <small/>
+                </group>
+            </groups>
+        </tab>
+        
+        <import>plugin:odf://cms-ribbon-catalog.xml</import>
 		
 		<tab label="RIBBON_TABS_TAB_RIGHTS_HANDLE_LABEL">
 			<groups>
Index: dev/dev-mode-leave.xml
===================================================================
--- dev/dev-mode-leave.xml	(revision 29176)
+++ dev/dev-mode-leave.xml	(working copy)
@@ -43,7 +43,8 @@
 			
 		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf"/></antcall>
 		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-sync"/></antcall>
-		
+		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-export"/></antcall>
+			        
 		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces/admin"/></antcall>
 		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces/cms"/></antcall>
 		<antcall target="remove-link"><param name="link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces/odf"/></antcall>
Index: dev/ivy-dev.xml
===================================================================
--- dev/ivy-dev.xml	(revision 29176)
+++ dev/ivy-dev.xml	(working copy)
@@ -58,7 +58,9 @@
     <dependency org="apache" name="lucene" rev="3.0.3" conf="default->analyzers"/>
     <dependency org="apache" name="tika" rev="1.3" conf="default->parsers;runtime->xmp"/>
     <dependency org="google" name="guava" rev="12.0.1" conf="default->default"/>
-    
+     
+    <dependency org="mysql" name="mysql-connector-java" rev="5.1.6" conf="default->default"/>
+
 	<!-- Oracle dependencies -->
 	<dependency org="oracle" name="oracle-connector-java" rev="11.2.0.1.0" conf="default->default;"/>
 	
Index: dev/dev-mode-enter.xml
===================================================================
--- dev/dev-mode-enter.xml	(revision 29176)
+++ dev/dev-mode-enter.xml	(working copy)
@@ -48,8 +48,9 @@
 												
 		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf"/>					<param name="original-dir" location="${ametys-root-dir}/plugins/odf/trunk/main/plugin-odf"/></antcall>
 		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-sync"/>			<param name="original-dir" location="${ametys-root-dir}/plugins/odf_sync/trunk/main/plugin-odf-sync"/></antcall>
-		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-lomsearch"/>		<param name="original-dir" location="${ametys-root-dir}/plugins/odf_lomsearch/trunk/main/plugin-odf-lomsearch"/></antcall>
-			
+		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-export"/>          <param name="original-dir" location="${ametys-root-dir}/plugins/odf_export/main/plugin-odf-export"/></antcall>
+		    <!--	<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/plugins/odf-lomsearch"/>		<param name="original-dir" location="${ametys-root-dir}/plugins/odf_lomsearch/trunk/main/plugin-odf-lomsearch"/></antcall>
+		-->	
 		<mkdir dir="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces"/>
 		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces/admin"/>			<param name="original-dir" location="${ametys-root-dir}/kernel/01_RUNTIME/trunk/main/workspace-admin"/></antcall>
 		<antcall target="create-link"><param name="new-link" location="${ametys-root-dir}/templates/ODF/trunk/webapp/workspaces/cms"/>				<param name="original-dir" location="${ametys-root-dir}/kernel/07_CMS/trunk/main/workspace-cms"/></antcall>
@@ -110,8 +111,9 @@
 			
 			&lt;classpathentry kind="src" path="webapp/plugins/odf/src"/&gt;
 			&lt;classpathentry kind="src" path="webapp/plugins/odf-sync/src"/&gt;
-			&lt;classpathentry kind="src" path="webapp/plugins/odf-lomsearch/src"/&gt;
-			
+            &lt;classpathentry kind="src" path="webapp/plugins/odf-export/src"/&gt;
+<!--			&lt;classpathentry kind="src" path="webapp/plugins/odf-lomsearch/src"/&gt;
+	-->		
 			&lt;classpathentry kind="src" path="webapp/workspaces/admin/src"/&gt;
 			&lt;classpathentry kind="src" path="webapp/workspaces/cms/src"/&gt;
 			&lt;classpathentry kind="src" path="webapp/workspaces/repository/src"/&gt;
