h1.Components {anchor:id=SOCref.Configuration.Component}
h2. ActivityManager {anchor:id=SOCref.Configuration.Component.ActivityManager}

|| Configuration name || Data type || Possible 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 || Possible value || Description ||
| space.homeNodeApp | {{String}} | {{SpaceActivityStreamPortlet}} | The home application for a space. |
| space.apps | {{String list}} | {{DashboardPortlet:true}}, {{SpaceSettingPortlet:false}}, {{MembersPortlet:true}} | The applications that are used for initializing the application when the space is created. |

{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 || Possible value || Description ||
| providers | {{String}} | {{org.exoplatform.social.core.identity.provider.SpaceIdentityProvider}} | The identity providers. |

h2. ProfileConfig {anchor:id=SOCref.Configuration.Component.ProfileConfig}
|| Configuration name || Data type || Possible 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 || Possible 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 || Possible value || Description ||
| priority | {{String}} | 2 | The priority of this processor (the lower is executed first). |
  
h2. PortletPreferenceRequiredPlugin {anchor:id=SOCref.Configuration.External_component_plugins.PortletPrederenceRequiredPlugin}
|| Configuration name || Data type || Possible 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 || Possible 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 || Possible 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. |

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 || Possible 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.2.0-GA {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>span</value>
      <value>a</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  || Possible value || Description ||
| *allowedTags* | {{html tags}} | b, i, a, span, em, strong, p, ol, ul,li, br, img | Process and render HTML tags in the activity content (body). |

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

{code:xml}
<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>
{code}

In which:

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

* Init-params:

|| Name || Possible value || Possible value || Description ||
| *priority* | {{priority number}} | 2 | The 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, such as 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 || Possible 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 an OpenSocial REST API request. By configuring this service, you can make sure that the right portal container is reached.
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 | This plugin is used to set the rest portal container name for the OpenSocial REST API request. |

* Init-params:

|| Name || Possible value || Possible value || Description ||
| *rest-container-name* | {{any valid portal container name}} | {{N/A}} | Name of the portal container. |