h1.Components {anchor:id=SOCref.Configuration.Component}
h2. ActivityManager {anchor:id=SOCref.Configuration.Component.ActivityManager}
|| Configuration name || Data type || Default Value || Description ||
| allowedTags | {{String list}} | {{b, i, a, span, em, strong, p, ol, ul,li, br, img}} | html tags |

h2. SpaceService {anchor:id=SOCref.Configuration.Component.SpaceService}
|| Configuration name || Data type || Default Value || Description ||
| space.homeNodeApp | {{String}} | {{SpaceActivityStreamPortlet}} | The home application for a space |
| space.apps | {{String list}} | {{DashboardPortlet:true}}, {{SpaceSettingPortlet:false}}, {{MembersPortlet:true}} | The space applications |

{note}
Deprecated: Use external-component-plugins instead: org.exoplatform.social.core.space.SpaceApplicationConfigPlugin
{note}

h2. IdentityManager {anchor:id=SOCref.Configuration.Component.IdentityManager}
|| Configuration name || Data type || Default Value || Description ||
| providers | {{String}} | {{org.exoplatform.social.core.identity.provider.SpaceIdentityProvider}} |  |

h2. ProfileConfig {anchor:id=SOCref.Configuration.Component.ProfileConfig}
|| Configuration name || Data type || Default Value || Description ||
| nodetype.emails | {{String}} | {{exo:profileKeyValue}} |  |
| nodetype.phones | {{String}} | {{exo:profileKeyValue}} |  |
| nodetype.ims | {{String}} |  {{exo:profileKeyValue}} |  |
| nodetype.urls | {{String}} | {{exo:profileKeyValue}} |  |
| nodetype.address | {{String}} | {{exo:profileAddress}} |  |
| nodetype.experiences | {{String}} | {{exo:profileExperience}} |  |
| nodetype.education | {{String}} |  {{exo:profileEducation}} |  |
| forceMultiValue | {{String}} | xxxxxxxxxxxx |  |


h2. ServiceProviderStore {anchor:id=SOCref.Configuration.Component.ServiceProviderStore}
|| Configuration name || Data type || Default Value || Description ||
| sample-provider | properties-params |  |  sample service provider |

h1. External component plugins {anchor:id=SOCref.Configuration.External_component_plugins}
h2. MentionsProcessor {anchor:id=SOCref.Configuration.External_component_plugins.MentionsProcessor}
|| Configuration name || Data type || Default Value || Description ||
| priority | {{String}} | 2 | priority of this processor (lower are executed first) |

h2. PortletPreferenceRequiredPlugin {anchor:id=SOCref.Configuration.External_component_plugins.PortletPrederenceRequiredPlugin}
|| Configuration name || Data type || Default Value || Description ||
| portletsPrefsRequired | {{String list}} | {{SpaceActivityStreamPortlet, SpaceSettingPortlet, MembersPortlet}} | The portlet name which requires space URL preference|

h2. SpaceApplicationConfigPlugin {anchor:id=SOCref.Configuration.External_component_plugins.SpaceApplicationConfigPlugin}

|| Configuration name || Data type || Description ||
| spaceHomeApplication | {{SpaceApplicationConfigPlugin$SpaceApplication}} | The space application for the space home node| 
|spaceApplicationList| {{SpaceApplicationConfigPlugin}} |space application list configuration|

h2. AddNodeTypePlugin {anchor:id=SOCref.Configuration.External_component_plugins.AddNodeTypePlugin}
|| Configuration name || Data type || Default Value || Description ||
| autoCreatedInNewRepository | {{String}} | {{jar:/conf/portal/core-nodetypes.xml}} | Node types configuration file |
h1. RelationshipManager {anchor:id=SOCref.Configuration.RelationshipManager}
The Service is used to manipulate user relationships.

h1. SpaceIdentityProvider {anchor:id=SOCref.Configuration.SpaceIdentityProvider}
The provider is to give identity space instances.

h1. SpaceApplicationHandler {anchor:id=SOCref.Configuration.SpaceApplicationHandler}
The service is to handle all events related to creating and managing all the application spaces.

h1. ExoPeopleService {anchor:id=SOCref.Configuration.ExoPeopleService}
The service is to manipulate all data related to people in the Portal.

h1. Space Service {anchor:id=SOCref.Configuration.SpaceService}

h2. Description {anchor:id=SOCref.Configuration.SpaceService.Description}
The service for spaces management includes creating spaces, and installing applications.

h2. Components configuration {anchor:id=SOCref.Configuration.SpaceService.ComponentsConfiguration}

|| Component name || Description ||
| SpaceServiceImpl | Implementation class of Space Service. |

{code:xml}
<component>
    <key>org.exoplatform.social.core.space.spi.SpaceService</key>
    <type>org.exoplatform.social.core.space.impl.SpaceServiceImpl</type>
    <!-- Deprecated, Use external-component-plugins instead
    <init-params>
      <values-param>
        <name>space.homeNodeApp</name>
        <value>SpaceActivityStreamPortlet</value>
      </values-param>
      <values-param>
        <name>space.apps</name>
        <value>DashboardPortlet:true</value>
        <value>SpaceSettingPortlet:false</value>
        <value>MembersPortlet:true</value>
      </values-param>
    </init-params>
    -->
  </component>
{code}

|| Configuration name || Data Type || Possible value || Default Value || Description ||
| *SpaceActivityStreamPortlet* | {{String}} | N/A | {{SpaceActivityStreamPortlet}} | The name of portlet displaying activities of spaces |
| *space.apps* | {{String list}} | {{Porlets' name: true/false }} | {{DashboardPortlet:true}}; {{SpaceSettingPortlet:false}}; {{MembersPortlet:true}} |The list of configurations for portlets used as portlet applications. |

h2. External plug-in configuration {anchor:id=SOCref.Configuration.SpaceService.ExternalPluginConfiguration}
h3. PortletPreferenceRequiredPlugin {anchor:id=SOCref.Configuration.SpaceService.ExternalPluginConfiguration.PortletPreferenceRequiredPlugin}
{code:xml}
<external-component-plugins>
  <target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>
    <component-plugin>
      <name>portlets.prefs.required</name>
      <set-method>setPortletsPrefsRequired</set-method>
      <type>org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin</type>
      <init-params>
        <values-param>
          <name>portletsPrefsRequired</name>
          <value>SpaceActivityStreamPortlet</value>
          <value>SpaceSettingPortlet</value>
          <value>MembersPortlet</value>
        </values-param>
      </init-params>
    </component-plugin>
</external-component-plugins>
{code}

In which:

|| Name || Set-method || Type || Description  ||
| *PortletPreferenceRequiredPlugin* | setPortletsPrefsRequired | org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin | Configure the list of portlet names which will have portlet preference of space context. |

* Init-params:

|| Name || Possible value || Default Value || Description ||
| *portletsPrefsRequired* | {{Portlet names}} | {{SpaceActivityStreamPortlet; SpaceSettingPortlet; MembersPortlet}} | List of portlets which need to be saved and get the space context name. |

h3. SpaceApplicationConfigPlugin {anchor:id=SOCref.Configuration.SpaceService.ExternalPluginConfiguration.SpaceApplicationConfigPlugin}
{note}
Since 1.1.3
{note}
{code:xml}
 <external-component-plugins>
    <target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>
    <!-- Default applications to be installed when creating a new space -->
    <component-plugin>
      <name>Space Application Configuration</name>
      <set-method>setSpaceApplicationConfigPlugin</set-method>
      <type>org.exoplatform.social.core.space.SpaceApplicationConfigPlugin</type>
      <init-params>

        <object-param>
          <name>spaceHomeApplication</name>
          <description>Space Home Application</description>
          <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
            <field name="portletApp"><string>social-portlet</string></field>
            <field name="portletName"><string>SpaceActivityStreamPortlet</string></field>
            <field name="appTitle"><string>Home</string></field>
            <!--<field name="icon"><string>SpaceHomeIcon</string></field>-->
          </object>
        </object-param>

        <object-param>
          <name>spaceApplicationListConfig</name>
          <description>space application list configuration</description>
          <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin">
            <field name="spaceApplicationList">
              <collection type="java.util.ArrayList">
                <value>
                  <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                    <field name="portletApp"><string>dashboard</string></field>
                    <field name="portletName"><string>DashboardPortlet</string></field>
                    <field name="appTitle"><string>Dashboard</string></field>
                    <field name="removable"><boolean>true</boolean></field>
                    <field name="order"><int>1</int></field>
                    <field name="uri"><string>dashboard</string></field>
                    <!--<field name="icon"><string>SpaceDashboardIcon</string></field>-->
                  </object>
                </value>
                <value>
                  <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                    <field name="portletApp"><string>social-portlet</string></field>
                    <field name="portletName"><string>SpaceSettingPortlet</string></field>
                    <field name="appTitle"><string>Space Settings</string></field>
                    <field name="removable"><boolean>false</boolean></field>
                    <field name="order"><int>2</int></field>
                    <field name="uri"><string>settings</string></field>
                    <!--<field name="icon"><string>SpaceSettingsIcon</string></field>-->
                  </object>
                </value>
                <value>
                  <object type="org.exoplatform.social.core.space.SpaceApplicationConfigPlugin$SpaceApplication">
                    <field name="portletApp"><string>social-portlet</string></field>
                    <field name="portletName"><string>MembersPortlet</string></field>
                    <field name="appTitle"><string>Members</string></field>
                    <field name="removable"><boolean>true</boolean></field>
                    <field name="order"><int>3</int></field>
                    <field name="uri"><string>members</string></field>
                    <!--<field name="icon"><string>SpaceMembersIcon</string></field>-->
                  </object>
                </value>
              </collection>
            </field>
          </object>
        </object-param>

      </init-params>
    </component-plugin>
 </external-component-plugins>
{code}

In which:

|| Name || Set-method || Type || Description  ||
| *Space Application Configuration* | setSpaceApplicationConfigPlugin | org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin | Configure the list of space applications to be installed when creating a new space. |

h1. Activity Manager {anchor:id=SOCref.Configuration.ActivityManager}

h2. Description {anchor:id=SOCref.Configuration.ActivityManager.Description}

The service is to manipulate space and user activities.

h2. Component plug-in configuration {anchor:id=SOCref.Configuration.ActivityManager.ComponentPluginConfiguration}

{code:xml}
  <component-plugin>
        <name>OSHtmlSanitizer</name>
        <set-method>addProcessorPlugin</set-method>
        <type>org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor</type>
        <init-params>
          <values-param>
            <name>allowedTags</name>
            <value>b</value>
            <value>i</value>
            <value>a</value>
            <value>span</value>
            <value>em</value>
            <value>strong</value>
            <value>p</value>
            <value>ol</value>
            <value>ul</value>
            <value>li</value>
            <value>br</value>
            <value>img</value>
          </values-param>
        </init-params>
  </component-plugin>
{code}


In which,

|| Name || Set-method || Type || Description ||
| *OSHtmlSanitizerProcessor* | addProcessorPlugin | org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor | The plugin that renders valid html tags appearing in the Activity body (content). |

* Init-params:

|| Name || Possible value  || Default Value || Description ||
| *allowedTags* | {{html tags}} | b, i, a, span, em, strong, p, ol, ul,li, br, img | To process and render html tags in the activity content (body). |

h2. External plug-in configuration {anchor:id=SOCref.Configuration.ActivityManager.ExternalPluginConfiguration}

{code:xml}
<external-component-plugins>
    <target-component>org.exoplatform.social.core.manager.ActivityManager</target-component>
    <component-plugin>
      <name>MentionsProcessor</name>
      <set-method>addProcessorPlugin</set-method>
      <type>org.exoplatform.social.core.processor.MentionsProcessor</type>
      <init-params>
        <value-param>
          <name>priority</name>
          <description>priority of this processor (lower number will be executed first)</description>
          <value>2</value>
        </value-param>
      </init-params>
    </component-plugin>
</external-component-plugins>
{code}

In which:

|| Name || Set-method || Type || Description ||
| *MentionsProcessor* | addProcessorPlugin | org.exoplatform.social.core.processor.MentionsProcessor | A processor that substitutes @username expressions by a link on the user profile. |

* Init-params:

|| Name || Possible value || Default Value || Description ||
| *priority* | {{priority number}} | 2 | Priority of this processor (The lower level will be executed first). |

h1. Identity Manager {anchor:id=SOCref.Configuration.IdentityManager}

h2. Description {anchor:id=SOCref.Configuration.IdentityManager.Description}

The service is to manipulate the identity operations like creating, getting, deleting or finding a profile.

h2. Component plug-in configuration {anchor:id=SOCref.Configuration.IdentityManager.ComponentPluginConfiguration}

{code:xml}
<component>
    <key>org.exoplatform.social.core.manager.IdentityManager</key>
    <type>org.exoplatform.social.core.manager.IdentityManager</type>
    <component-plugins>
      <component-plugin>
        <name>SpaceIdentityProvider plugin</name>
        <set-method>registerIdentityProviders</set-method>
        <type>org.exoplatform.social.core.identity.IdentityProviderPlugin</type>
        <init-params>
          <values-param>
          <name>providers</name>
            <description>Identity Providers</description>
            <value>org.exoplatform.social.core.identity.provider.SpaceIdentityProvider</value>
          </values-param>
        </init-params>
      </component-plugin>
    </component-plugins>
  </component>
{code}

In which:

|| Name || Set-method || Type || Description ||
| *SpaceIdentityProvider plugin* | registerIdentityProviders | org.exoplatform.social.core.identity.IdentityProviderPlugin | The plugin that provides identity for a space |

* Init-params:

|| Name || Possible value || Default Value || Description ||
| *providers* | {{Every other identity providers}} | {{org.exoplatform.social.core.identity.provider.SpaceIdentityProvider}} | Identity Provider instances for managing identities. |

h1. OpenSocial Rest Context Configuration {anchor:id=SOCref.Configuration.OpenSocialRestContextConfiguration}

h2. Description {anchor:id=SOCref.Configuration.OpenSocialRestContextConfiguration.Description}

The service is used to configure the portal container name when there is a OpenSocial REST API request. By configuring this service, we can make sure to to reach the right portal container.
The default portal container is {{portal}}.

h2. Component plug-in configuration {anchor:id=SOCref.Configuration.OpenSocialRestContextConfiguration.ComponentPluginConfiguration}

This should be used when there is a portal container different than the default {{portal}} one.

{code:xml}
  <external-component-plugins>
    <target-component>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</target-component>
    <component-plugin>
      <name>set portal container name used for REST service</name>
      <set-method>setRestContainerName</set-method>
      <type>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</type>
        <init-params>
        <value-param>
          <name>rest-container-name</name>
          <value>socialdemo</value>
        </value-param>
      </init-params>
    </component-plugin>
  </external-component-plugins>
{code}

In which:

|| Name || Set-method || Type || Description ||
| *set portal container name used for REST service* | setRestContainerName | org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig | The plugin provided to set rest portal container name for OpenSocial REST API request |

* Init-params:

|| Name || Possible value || Default Value || Description ||
| *rest-container-name* | {{any valid portal container name}} | {{N/A}} | Portal container name |
