Skip to content

Sync Preview

A Sync Preview answers what synchronising one object would do right now, with the configuration already saved. It changes nothing: it stages no exports and writes no objects. Unlike a Configuration Change Preview, it is synchronous and needs no Activity id: it evaluates one object against the Synchronisation Rules already saved and returns immediately. See Sync Preview for what the outcome tree and the destructive cascade mean.

The two Sync Preview cmdlets compared Get-JIMConnectedSystemObjectSyncPreview starts from a Connected System Object, named by -ConnectedSystemId and -Id. It previews the inbound chain (scope, join or projection, and Attribute Flow), then the outbound decisions the resulting Metaverse Object state would produce, and, where the object would fall out of scope and disconnect, the destructive cascade. Get-JIMMetaverseObjectSyncPreview starts from a Metaverse Object, named by -Id, as it stands now: it has no inbound chain, so Inbound is always empty and there is no cascade, and it previews only the outbound decisions its current state would produce. Either way the would-be Pending Exports are listed in ProposedExports and nothing is staged. Both return the same object, and nothing changes: check HasBlockingErrors first. Connected System Object Get-JIMConnectedSystemObjectSyncPreview Metaverse Object Get-JIMMetaverseObjectSyncPreview Starts from the object-ConnectedSystemId and -Id the object as it stands now-Id Inbound scope, join or projection, Attribute Flow noneInbound is always empty Outbound what the resulting MetaverseObject would exportProposedExports; nothing is staged what its current state would exportProposedExports; nothing is staged Destructive cascade where it would leave scope and disconnectMetaverse Object deletion,downstream deprovisioning noneno inbound chain to leave Both return the same object and change nothing: check HasBlockingErrors first The two Sync Preview cmdlets compared Get-JIMConnectedSystemObjectSyncPreview starts from a Connected System Object, named by -ConnectedSystemId and -Id. It previews the inbound chain (scope, join or projection, and Attribute Flow), then the outbound decisions the resulting Metaverse Object state would produce, and, where the object would fall out of scope and disconnect, the destructive cascade. Get-JIMMetaverseObjectSyncPreview starts from a Metaverse Object, named by -Id, as it stands now: it has no inbound chain, so Inbound is always empty and there is no cascade, and it previews only the outbound decisions its current state would produce. Either way the would-be Pending Exports are listed in ProposedExports and nothing is staged. Both return the same object, and nothing changes: check HasBlockingErrors first. Connected System Object Get-JIMConnectedSystemObjectSyncPreview Starts fromthe object-ConnectedSystemId and -Id Inboundscope, join or projection, Attribute Flow Outboundwhat the resulting Metaverse Object would exportProposedExports; nothing is staged Destructive cascadewhere it would leave scope and disconnectMetaverse Object deletion, downstream deprovisioning Metaverse Object Get-JIMMetaverseObjectSyncPreview Starts fromthe object as it stands now-Id InboundnoneInbound is always empty Outboundwhat its current state would exportProposedExports; nothing is staged Destructive cascadenoneno inbound chain to leave Both return the same object and change nothing: check HasBlockingErrors first

Both return the same object, tabled under Get-JIMConnectedSystemObjectSyncPreview. Check HasBlockingErrors before reading anything else: a preview that surfaced a blocking error describes a synchronisation that would fail, not one that would succeed as shown.


Get-JIMConnectedSystemObjectSyncPreview

Previews what synchronising a Connected System Object would do: the inbound chain (scope, join or projection, Attribute Flow), the outbound decisions the resulting Metaverse Object state would produce, and, where the object would fall out of scope and disconnect, the destructive cascade (whether the Metaverse Object would be deleted or scheduled for deletion, and which downstream Connected System Objects would be deprovisioned).

Syntax

Get-JIMConnectedSystemObjectSyncPreview -ConnectedSystemId <int> -Id <guid>

Parameters

Name Type Required Default Description
ConnectedSystemId int Yes The Connected System that owns the object. Accepts pipeline input by property name.
Id guid Yes The Connected System Object to preview. Accepts pipeline input by property name.

Output

What synchronising the object would do, were the real synchronisation to run now, with the outcome tree flattened beside it. Check HasBlockingErrors first: a preview that surfaced a blocking error describes a synchronisation that would fail.

Property Type Description
OutcomeTree object[] The outcomes the synchronisation would produce, as a tree, in the same shape as the outcomes recorded on a Run Profile Execution Item. Each has OutcomeType, TargetEntityId, TargetEntityDescription, SyncRuleId, SyncRuleName, StagedChangeType, DetailCount, DetailMessage, ObjectMatchingRuleId, ObjectMatchingRuleDescriptionSnapshot, MatchedValue, ConnectedSystemObjectChangeId, Ordinal and Children.
Inbound object The inbound summary: would the object project or join, and what Attribute Flows would result. Empty for a Metaverse Object preview, which has no inbound chain. It has WouldProject, ProjectedMetaverseObjectTypeId, ProjectedMetaverseObjectTypeName, WouldJoinMetaverseObjectId, WouldJoinObjectMatchingRuleId, WouldJoinObjectMatchingRuleDescription, WouldJoinMatchedValue, AlreadyJoinedMetaverseObjectId and AttributeFlowChanges.
ProposedExports object[] The Pending Exports that would be staged per target Connected System, were the real synchronisation to run. None of them is staged: the preview changes nothing. Each has ConnectedSystemId, ChangeType, ConnectedSystemObjectId, SourceMetaverseObjectId and AttributeChanges.
Errors object[] Conditions that would prevent the real synchronisation. Distinct from Warnings so a caller can render blockers and advisories differently without parsing message text. Each has Code, Detail, SyncRuleId, SyncRuleName, ConnectedSystemId, AttributeName and MatchCandidates.
Warnings object[] Advisory conditions that would not prevent the real synchronisation. Each has Code, Detail, SyncRuleId, SyncRuleName, ConnectedSystemId, AttributeName and MatchCandidates.
HasBlockingErrors bool True when the preview surfaced at least one blocking condition (that is, Errors is non-empty).
AffectedSyncRules object[] The Synchronisation Rules that participated at any step of the previewed chain. Each has Id and Name.
GeneratedValueProbes object[] Each value the preview generated that the real synchronisation would also probe for (Unique Value Generation): the preview is a dry run and checks JIM's own records only, while the synchronisation also asks these Connected Systems whether the value is already in use, and generates a different value if one of them already has an account using it. Empty when no generated value would be probed. Each has AttributeName, BuiltFromAttributeName, Value and ConnectedSystemNames.
Outcomes object[] The outcome tree flattened in its own display order, for Format-Table: one row per outcome, with Depth, OutcomeType, Target (its description, or its id), SyncRule (its name, or its id), DetailCount, DetailMessage and StagedChangeType. A Joined row made by matching also carries ObjectMatchingRule (what the rule compares, or its id) and MatchedValue (the value the join would match on); both are empty on every other row.

When the object would join, Inbound names the Object Matching Rule behind the join in WouldJoinObjectMatchingRuleId and WouldJoinObjectMatchingRuleDescription (what the rule compares), and the value it would match on in WouldJoinMatchedValue.

In Errors, an AmbiguousMatch error lists in MatchCandidates the Metaverse Objects the object's Object Matching Rule found. An AmbiguousProvisioningMatch error lists the Connected System Objects found before provisioning. Both carry the fields Get-JIMActivityExecutionItem returns for them apart from Exists and JoinedObjects.

Examples

Preview synchronising an object, including any destructive cascade
Get-JIMConnectedSystemObjectSyncPreview -ConnectedSystemId 1 -Id "3934ff12-4996-42c0-a396-41e17ac47af7"
Read the outcome tree as a flat table
$preview = Get-JIMConnectedSystemObjectSyncPreview -ConnectedSystemId 1 -Id $csoId
$preview.Outcomes | Format-Table Depth, OutcomeType, Target, SyncRule
Check what leaving scope would do to a candidate object
$objectId = (Get-JIMConnectedSystemObject -ConnectedSystemId 1 -Search "jsmith").Id
$preview = Get-JIMConnectedSystemObjectSyncPreview -ConnectedSystemId 1 -Id $objectId
$preview.Warnings | Where-Object Code -eq 'OutOfScope' | Select-Object Detail

Get-JIMMetaverseObjectSyncPreview

Previews what synchronising from a Metaverse Object's current state would do: the outbound decisions that state would produce. A Metaverse Object is never synchronised itself; its Connected System Objects are, so this cmdlet evaluates the Metaverse Object as it stands now, outbound only, with no inbound chain of its own (Inbound is always $null). For the full inbound-then-outbound chain of one Connected System Object, use Get-JIMConnectedSystemObjectSyncPreview instead.

Syntax

Get-JIMMetaverseObjectSyncPreview -Id <guid>

Parameters

Name Type Required Default Description
Id guid Yes The Metaverse Object to preview. Accepts pipeline input by property name.

Output

What synchronising from the Metaverse Object as it stands now would do, outbound only, with the outcome tree flattened beside it. Inbound is always empty: a Metaverse Object has no inbound chain of its own. Check HasBlockingErrors first.

Properties as under Get-JIMConnectedSystemObjectSyncPreview.

Examples

Preview what would export from a Metaverse Object as it stands now
Get-JIMMetaverseObjectSyncPreview -Id "8f14e45f-ceea-467e-adde-3f8cbb1e4d28"
List the Connected Systems a pending edit would export to
$preview = Get-JIMMetaverseObjectSyncPreview -Id $mvoId
$preview.ProposedExports | Format-Table ConnectedSystemId, ChangeType

See also

  • Sync Preview: what these cmdlets evaluate, including the destructive cascade
  • Previews: previewing a proposed configuration change across every object it would affect