h1. Fields 
*Target Component*: {{org.exoplatform.services.cms.taxonomy.TaxonomyService}}

*Name*: {{predefinedTaxonomyPlugin}}

*Set-method*: {{addTaxonomyPlugin}}

*Type*: _org.exoplatform.services.cms.taxonomy.impl.TaxonomyPlugin_

|| *Value param*|| *Type* || *Default value* || *Description*||
| *autoCreateInNewRepository* | {{Boolean}} |{{true}}| Enable/Disable the creation of the taxonomies in the newly created repository. |
| *repository* | {{String}} |{{repository}}| Name of the repository where taxonomies are created. |
| *workspace* | {{String}} |{{dms-system}}| Name of the workspace where taxonomies are created. |
| *treeName* | {{String}} | {{system}}| Name of the taxonomy tree to be created. |

|| *Object param*|| *Type* || *Default value* || *Description*||
| *permission.configuration* | {{String}}|{{org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig}} | Access permission for the whole taxonomy tree. |
| *predefined.actions* | {{string}}| {{org.exoplatform.services.cms.actions.impl.ActionConfig}} | Predefined actions for the taxonomy tree root node. |
| *taxonomy.configuration* | {{String}}| {{org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig}} | Access permissions for each taxonomy in tree. |

*Object type*: _org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig_
||*Name*||*Type*||*Description*||
|*taxonomies*|{{java.util.ArrayList<TaxonomyConfig$Taxonomy>}}|List of taxonomies to be configured with permission.|

*Object type*: _org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy_
||*Name*||*Type*||*Default value*||*Description*||
|*name*|{{String}}|{{name}}|Name of the taxonomy.|
|*path*|{{String}}|{{cms}}|Path to the taxonomy in the taxonomy tree.|
|*permissions*|{{Arraylist}}|{{java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission>}}|List of permissions for users or groups to access the taxonomy.|

*Object type*: _org.exoplatform.services.cms.actions.impl.ActionConfig_
||*Name*||*Type*||*Default value*||*Description*||
|*actions*||{{Arraylist}}|{{java.util.ArrayList<ActionConfig$TaxonomyAction>}}|List of actions created for the taxonomy tree root node.|

*Object type*: _org.exoplatform.services.cms.actions.impl.ActionConfig$TaxonomyAction_
||*Field name*||*Type*||*Default value*||*Description*||
| *type* | {{String}} |{{exo:taxonomyAction}}| Type of the action. |
| *name* | {{String}} |{{taxonomyAction}}|  Name of the action. |
| *description* | {{String}} | {{N/A}}| Description of the action. |
| *homePath* | {{String}} | {{dms-system:/exo:ecm/exo:taxonomyTrees/storage/System}}| Location of node where the action node is stored. |
| *targetWspace* | {{String}} |{{N/A}}| When a new node is created in the node whose path is defined in the *homePath* field, it will be moved to a new location automatically. The target workspace is specified in this field. |
| *targetPath* | {{String}} |{{collaboration}}|  When a new node is created in the node whose path is defined in *homePath* field, it will be moved to a new location automatically. The target path is specified in this field. |
| *lifecyclePhase* |{{Arraylist}}|  {{java.util.ArrayList<String>}} | The life cycle phases, in which the action is activated. |
| *roles* | {{String}} | {{{*:/platform/administrators}}}| The users or groups only with whom the action is activated. |
| *mixins* |{{Arraylist}}|  {{java.util.ArrayList<ActionConfig$Mixin>}} | List of node types that are affected by this action. |

*Object type*: _org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin_
||*Field name*||*Type*||*Default value*||*Description*||
|*name*|{{String}}|{{mix:affectedNodeTypes}}|Mixin node type name that will be added. The node type is used to store the affected node types.|
|*properties*||{{String}}|{{exo:affectedNodeTypeNames=exo:article,exo:podcast,exo:sample,kfx:document,nt:file,rma:filePlan}}|The name of the properties that store all the node types affected by the action.|

h1. Sample configuration

{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.services.cms.taxonomy.TaxonomyService</target-component>
  <component-plugin>
    <name>predefinedTaxonomyPlugin</name>
    <set-method>addTaxonomyPlugin</set-method>
    <type>org.exoplatform.services.cms.taxonomy.impl.TaxonomyPlugin</type>
    <init-params>
      <value-param>
        <name>autoCreateInNewRepository</name>
        <value>true</value>
      </value-param>
      <value-param>
        <name>repository</name>
        <value>repository</value>
      </value-param>
      <value-param>
        <name>workspace</name>
        <value>dms-system</value>
      </value-param>
      <value-param>
        <name>treeName</name>
        <value>System</value>
      </value-param>
      <object-param>
        <name>permission.configuration</name>
        <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig">
          <field name="taxonomies">
            <collection type="java.util.ArrayList">
              <value>
                <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy">
                  <field name="permissions">
                    <collection type="java.util.ArrayList">
                      <value>
                        <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Permission">
                          <field name="identity">
                            <string>*:/platform/users</string>
                          </field>
                          <field name="read">
                            <string>true</string>
                          </field>
                          <field name="addNode">
                            <string>true</string>
                          </field>
                          <field name="setProperty">
                            <string>true</string>
                          </field>
                          <field name="remove">
                            <string>false</string>
                          </field>
                        </object>
                      </value>
                    </collection>
                  </field>
                </object>
              </value>
            </collection>
          </field>
        </object>
      </object-param>
      <object-param>
        <name>predefined.actions</name>
        <description>description</description>
        <object type="org.exoplatform.services.cms.actions.impl.ActionConfig">
          <field name="actions">
            <collection type="java.util.ArrayList">
              <value>
                <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$TaxonomyAction">
                  <field name="type">
                    <string>exo:taxonomyAction</string>
                  </field>
                  <field name="name">
                    <string>taxonomyAction</string>
                  </field>
                  <field name="description">
                    <string></string>
                  </field>
                  <field name="homePath">
                    <string>dms-system:/exo:ecm/exo:taxonomyTrees/storage/System</string>
                  </field>
                  <field name="targetWspace">
                    <string>collaboration</string>
                  </field>
                  <field name="targetPath">
                    <string>/Documents</string>
                  </field>
                  <field name="lifecyclePhase">
                    <collection type="java.util.ArrayList">
                      <value>
                        <string>node_added</string>
                      </value>
                    </collection>
                  </field>
                  <field name="roles">
                    <string>*:/platform/administrators</string>
                  </field>
                  <field name="mixins">
                    <collection type="java.util.ArrayList">
                      <value>
                        <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">
                          <field name="name">
                            <string>mix:affectedNodeTypes</string>
                          </field>
                          <field name="properties">
                            <string>exo:affectedNodeTypeNames=exo:article,exo:podcast,exo:sample,kfx:document,nt:file,rma:filePlan
                            </string>
                          </field>
                        </object>
                      </value>
                    </collection>
                  </field>
                </object>
              </value>
            </collection>
          </field>
        </object>
      </object-param>
      <object-param>
        <name>taxonomy.configuration</name>
        <description>configuration predefined taxonomies to inject in jcr</description>
        <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig">
          <field name="taxonomies">
            <collection type="java.util.ArrayList">
              <!-- cms taxonomy -->
              <value>
                <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy">
                  <field name="name">
                    <string>cmsTaxonomy</string>
                  </field>
                  <field name="path">
                    <string>/cms</string>
                  </field>
                  <field name="permissions">
                    <collection type="java.util.ArrayList">
                      <value>
                        <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Permission">
                          <field name="identity">
                            <string>*:/platform/users</string>
                          </field>
                          <field name="read">
                            <string>true</string>
                          </field>
                          <field name="addNode">
                            <string>true</string>
                          </field>
                          <field name="setProperty">
                            <string>true</string>
                          </field>
                          <field name="remove">
                            <string>false</string>
                          </field>
                        </object>
                      </value>
                    </collection>
                  </field>
                </object>
              </value>
            </collection>
          </field>
        </object>
      </object-param>
    </init-params>
  </component-plugin>
</external-component-plugins>
{code}
