anchor.diff:        try CrmDataInternal.CRUD.performAsBulkWithOutput service log req
         with _ -> errors <- true;
   
  -  log.Verbose "Synching plugins"
  -
  -  // Sync Webresources
  -  let targetWebRes = getWebresources service solutionId |> getEntityIds
  -
  -  let deletionError =
  -    [|(webResLogicalName, extSol.keepWebresources, targetWebRes, takeName, None)|]
  -    |> Array.map (fun x -> deleteElements service x)
  -    |> Array.exists (fun x -> not x)
  -
  -  if deletionError then errors <- true
  -
     if errors then
       failwith "There were errors during the post-steps of extended solution"
     else
  
positive.code:   let solutionId, extSol = getExtendedSolutionAndId service solutionName zipPath
    
    let mutable errors = false in
  
    // Attempt to find owners in target to preserve owners of workflows
    if reassignWorkflows then
  
negative.code:     let mutable errors = false in
      // Sync plugins and workflows
      let targetAsms, targetTypes, targetSteps, targetImgs = getPluginsIds service solutionId
     
      
      let deletionError =
        [|
          (imgLogicName, extSol.keepPluginImages, targetImgs, takeGuid, None)
          (stepLogicName, extSol.keepPluginSteps, targetSteps, takeGuid, None)
          (typeLogicName, extSol.keepPluginTypes, targetTypes, takeName, None)
          (asmLogicName, extSol.keepAssemblies, targetAsms, takeName, None)
        |]
        |> Array.map (fun x -> deleteElements service x)
        |> Array.exists (fun x -> not x)
  
  