Documentation
¶
Overview ¶
Package mimimport converts Microsoft Identity Manager (MIM/FIM) workflow definitions into Atlas-executable BPMN 2.0 XML.
MIM does not emit BPMN. Its workflows are serialised as XOML — the markup of the Windows Workflow Foundation (WF) — and are normally extracted with the FIMAutomation cmdlet Export-FIMConfig, which wraps each WorkflowDefinition's XOML as an attribute inside a resource-graph XML. This package accepts either raw XOML or such a wrapper (it locates and unescapes the embedded XOML) and produces a single <definitions> document the Atlas compiler can deploy.
Losslessness ¶
The translation follows one rule: nothing is silently dropped. Where a WF construct has a faithful BPMN counterpart it is emitted natively (see the mapping in Convert); where it does not, the activity is still emitted — as a typed or plain task placeholder — and its original markup is preserved in an <atlas:mimSource> extension element together with a <documentation> note. A Report lists every produced node with a status of native, preserved or manual-review, so the lossy points are explicit rather than hidden.
The conversion reproduces the workflow's *structure and intent*, not MIM's runtime semantics: the authentication/authorization/action request model, the FEEL bodies of individual activities, and diagram layout are intentionally out of scope for a first pass and are flagged for manual review where relevant.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Note ¶
type Note struct {
NodeID string // BPMN id of the produced element
Activity string // XOML activity local name it came from
Kind string // BPMN element kind (userTask, serviceTask, exclusiveGateway, …)
Status Status
Detail string // what a reviewer should know (why preserved / what to check)
}
Note is one entry in a conversion Report.
type Report ¶
Report is the per-node ledger of a conversion.
type Result ¶
Result is the output of a conversion: the BPMN document and its report.
func Convert ¶
Convert reads a MIM/FIM XOML workflow (or an Export-FIMConfig wrapper that embeds one) and returns Atlas-deployable BPMN 2.0.
Control flow is mapped natively:
SequentialWorkflow / Sequence → a chain of flow nodes IfElseActivity (+ branches) → an exclusive gateway split/join ParallelActivity (+ branches) → a parallel gateway split/join WhileActivity → an exclusive-gateway loop
Leaf activities are mapped by intent:
Approval* → userTask (native) Notification/Email → serviceTask (native, type mim-notification) FunctionEvaluator → serviceTask (preserved, type mim-function) PowerShell* → serviceTask (preserved, type mim-powershell) Create/Update/Delete/Group/Resource → serviceTask (preserved, type mim-resource) anything else → task (manual-review) with the XOML preserved
name, when non-empty, overrides the process name derived from the workflow.
type Status ¶
type Status string
Status classifies how faithfully one produced BPMN node reflects its XOML source, so the lossy points of a conversion are explicit.
const ( // StatusNative marks a node whose BPMN meaning matches the WF construct: // control-flow gateways, approvals (user task), notifications. StatusNative Status = "native" // StatusPreserved marks a node mapped to a typed task shell whose inner logic // (a FEEL body, a PowerShell script, a resource operation) was not translated // but is kept verbatim in <atlas:mimSource> for a developer to wire up. StatusPreserved Status = "preserved" // StatusManualReview marks a node that needs a human: an unrecognised activity // kept as a plain-task placeholder, or a branch/loop whose condition could not // be translated to FEEL and was replaced with a safe placeholder. StatusManualReview Status = "manual-review" )