# Client Matter — Extranet integration
After a matter is provisioned, the service can automatically create a companion extranet workspace for the client or the matter. The extranet request is a duplicate of the original provisioning request, adjusted to target the extranet environment and structure.
Two extranet modes exist and can be active simultaneously:
- Client extranet — one extranet workspace per client, shared across all matters for that client.
- Matter extranet — one extranet workspace per matter.
# How it works
# 1. Deciding whether to create an extranet
ICreateUpdateExtranet.Assign() reads extranet flags from the request's properties:
| Flag source | Property checked | Mode activated |
|---|---|---|
ClientListExtranetColumnNameCreate | A column in ClientProperties, or the config value itself if no column matches | Client extranet |
MatterListExtranetColumnNameClientCreate | A column in MatterProperties, or the config value itself | Client extranet (fallback) |
MatterListExtranetColumnNameMatterCreate | A column in MatterProperties, or the config value itself | Matter extranet |
A value of Yes, True, 1, or Ja (case-insensitive) activates the corresponding mode.
# 2. Building the extranet request
The original request is duplicated. All design settings (site sets, permission sets, folder sets, etc.) and existing URL properties are cleared from the copy. The extranet-specific settings from SettingsCfg.Provisioning.Extranet are then applied:
Client extranet copy:
MatterCode→ClientMatterCodeFormatresolved as a dynamic expression, or{ClientCode}EXif not set.MatterName→ClientMatterNameFormatresolved as a dynamic expression, or the originalClientNameif not set.- Design structure →
ExtranetClientDesignenum value; the corresponding design set (ClientClientDesignSet/ClientMatterDesignSet) is applied. - Site URL →
ClientSharepointUrlSiteresolved as a dynamic expression (setsServerRelativeUrl). My Matterslist addition is suppressed on the extranet copy.
Matter extranet copy:
ClientCode→ClientCodeFormatresolved as a dynamic expression (optional; unchanged if not set).ClientName→ClientNameFormatresolved as a dynamic expression (optional).MatterCode→MatterCodeFormatresolved as a dynamic expression, or{MatterCode}EXif not set.MatterName→MatterNameFormatresolved as a dynamic expression, or{MatterName} (Extranet)if not set.- Design structure →
ExtranetMatterDesignenum value; the corresponding design set (ClientDesignSet/MatterDesignSet) is applied. - Site URL →
SharepointUrlSiteresolved as a dynamic expression (setsServerRelativeUrl).
# 3. Column mapping
If ColumnMapping is configured, its entries are applied to the extranet copy's properties before the request is dispatched. Each entry has the form TargetColumn=Value, where both sides are evaluated as dynamic expressions. This allows extranet-specific metadata to be injected or existing columns to be overridden.
Example: "IsExtranet=True" sets IsExtranet to True on the extranet copy.
# 4. Dispatching the extranet request
ICreateUpdateExtranet.Execute() saves the extranet request as a JSON file:
- Same environment (
ExternalMonitorDirectorynot set): the JSON is written to the current service instance's monitor directory. The service will pick it up and provision the extranet workspace within the same SharePoint environment. - External environment (
ExternalMonitorDirectoryset): a matter list entry is created in the local list first (so the URL can be resolved immediately), then the JSON is written toExternalMonitorDirectory. A separate service instance watching that directory provisions the extranet workspace in the external environment.
# 5. Extranet code write-back
After Execute() completes, the assigned extranet matter codes are written back into the original matter's list entry:
| Scenario | Column written | Value |
|---|---|---|
| Client extranet created | ClientListExtranetColumnNameMatterCode in the client list | Extranet MatterCode |
| Client extranet created | MatterListExtranetColumnNameClientMatterCode in the matter list | Extranet MatterCode |
| Matter extranet created | MatterListExtranetColumnNameMatterMatterCode in the matter list (default: ExtranetMatterCode) | Extranet MatterCode |
# Configuration reference
All properties live under SettingsCfg.Provisioning.Extranet (a SettingsProvisioningCfg.ExtranetCfg object).
# Trigger columns
| Property | Description |
|---|---|
ClientListExtranetColumnNameCreate | Column in ClientProperties whose value activates client extranet. Set to True/1/Yes directly to always create a client extranet. |
MatterListExtranetColumnNameClientCreate | Column in MatterProperties that also activates client extranet (fallback/alternative to above). |
MatterListExtranetColumnNameMatterCreate | Column in MatterProperties whose value activates matter extranet. |
# Client extranet structure
| Property | Description |
|---|---|
ExtranetClientDesign | ClientMatterDesign enum value for the client extranet workspace. |
ClientClientDesignSet | Design set name for the client part of the client extranet (used by designs that have a client site/site collection). |
ClientMatterDesignSet | Design set name for the matter part of the client extranet. |
ClientMatterCodeFormat | Dynamic expression for the extranet matter code. Default: {ClientCode}EX. |
ClientMatterNameFormat | Dynamic expression for the extranet matter name. Default: original ClientName. |
ClientSharepointUrlSite | Dynamic expression resolving to the ServerRelativeUrl for the client extranet site. |
ClientSharepointUrlDocLib | Dynamic expression resolving to the doclib URL for a pre-existing client extranet (used when ExternalMonitorDirectory is set). |
# Matter extranet structure
| Property | Description |
|---|---|
ExtranetMatterDesign | ClientMatterDesign enum value for the matter extranet workspace. |
ClientDesignSet | Design set name for the client part of the matter extranet. |
MatterDesignSet | Design set name for the matter part of the matter extranet. |
ClientCodeFormat | Dynamic expression to override the client code on the extranet copy. |
ClientNameFormat | Dynamic expression to override the client name on the extranet copy. |
MatterCodeFormat | Dynamic expression for the extranet matter code. Default: {MatterCode}EX. |
MatterNameFormat | Dynamic expression for the extranet matter name. Default: {MatterName} (Extranet). |
SharepointUrlSite | Dynamic expression resolving to the ServerRelativeUrl for the matter extranet site. |
SharepointUrlDocLib | Dynamic expression resolving to the doclib URL for a pre-existing matter extranet (used when ExternalMonitorDirectory is set). |
# Write-back columns
| Property | Description |
|---|---|
ClientListExtranetColumnNameMatterCode | Column in the client list where the client extranet matter code is written back. |
MatterListExtranetColumnNameClientMatterCode | Column in the matter list where the client extranet matter code is written back. |
MatterListExtranetColumnNameMatterMatterCode | Column in the matter list where the matter extranet matter code is written back. Default: ExtranetMatterCode. |
# Dispatch and mapping
| Property | Description |
|---|---|
ExternalMonitorDirectory | Path to the watch folder of the service instance that manages the extranet environment. When set, the extranet JSON is dropped here instead of the local monitor directory. |
ColumnMapping | Array of TargetColumn=Value strings applied to the extranet copy's properties. Both sides support dynamic expressions. |
# Related links
- Client Matter — Execution flow — step 11 (post-success: extranet integration)
- Dynamic Name — expression syntax used in format properties