# 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:

  • MatterCodeClientMatterCodeFormat resolved as a dynamic expression, or {ClientCode}EX if not set.
  • MatterNameClientMatterNameFormat resolved as a dynamic expression, or the original ClientName if not set.
  • Design structure → ExtranetClientDesign enum value; the corresponding design set (ClientClientDesignSet / ClientMatterDesignSet) is applied.
  • Site URL → ClientSharepointUrlSite resolved as a dynamic expression (sets ServerRelativeUrl).
  • My Matters list addition is suppressed on the extranet copy.

Matter extranet copy:

  • ClientCodeClientCodeFormat resolved as a dynamic expression (optional; unchanged if not set).
  • ClientNameClientNameFormat resolved as a dynamic expression (optional).
  • MatterCodeMatterCodeFormat resolved as a dynamic expression, or {MatterCode}EX if not set.
  • MatterNameMatterNameFormat resolved as a dynamic expression, or {MatterName} (Extranet) if not set.
  • Design structure → ExtranetMatterDesign enum value; the corresponding design set (ClientDesignSet / MatterDesignSet) is applied.
  • Site URL → SharepointUrlSite resolved as a dynamic expression (sets ServerRelativeUrl).

# 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 (ExternalMonitorDirectory not 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 (ExternalMonitorDirectory set): a matter list entry is created in the local list first (so the URL can be resolved immediately), then the JSON is written to ExternalMonitorDirectory. 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.
Last Updated: 4/23/2026, 10:40:37 AM