anchor.diff:  
     publish proxy;
     stopWatch.Stop()
  -  printfn "Downtime: %.1f minutes" stopWatch.Elapsed.TotalMinutes;
  +  log.Info "Downtime: %.1f minutes" stopWatch.Elapsed.TotalMinutes;
     transfer_solution_components proxy sol.Id complete_solution_name
     // Delete [partial solution] on TARGET
  -  printfn "Deleting solution '%s'" temporary_solution_name;
  +  log.Verbose "Deleting solution '%s'" temporary_solution_name;
     proxy.Delete("solution", sol.Id);
       
positive.code:   let id = solution_component.Attributes.["objectid"] :?> Guid
    match typeString with
    // Remark, what does fake workflow mean?
      | Some "Workflow" when not (List.contains id workflows) -> printfn " Skipping 'fake' workflow"
      | _ ->
        match typeString with
          | None -> printfn "Adding thing (%i) to solution" type_
          | Some s -> printfn "Adding %s to solution" s
        let req = AddSolutionComponentRequest ()
        req.ComponentType <- type_;
        req.ComponentId <- id;
  
negative.code:   Thread.Sleep 10000;
    match fetchImportStatusOnce proxy id with
      | None -> 
        log.Verbose "Import not started yet.";
        fetchImportStatus proxy id asyncid
      | Some (_, _, data) when data.Contains("<result result=\"failure\"") -> 
        let job = CrmData.CRUD.retrieve proxy "asyncoperation" asyncid
        if job.Attributes.ContainsKey "message" then
          log.Verbose "%s" (job.Attributes.["message"] :?> string);
        else 
          let doc = XmlDocument ()
          doc.LoadXml data;
          select_nodes doc "//result[@result='failure']"
          |> Seq.iter (fun a -> log.Verbose "%s" (a.Attributes.GetNamedItem "errortext").Value)
        failwithf "An error occured in import.";
      | Some (true, _, _) -> 
        log.Info "Import succesful.";
      | Some (false, progress, _) -> 
        log.Verbose "Importing: %.1f%%" progress;
        fetchImportStatus proxy id asyncid
  
  let import solution_zip_path complete_solution_name temporary_solution_name (env:DG.Daxif.Environment) = 
    log.Verbose "Connecting to environment %s" env.name;
    let proxy = env.connect().GetProxy()
    // TODO: Remove all Daxif plugin steps
    // Import [partial solution] to TARGET
    let fileBytes = File.ReadAllBytes(solution_zip_path + "/" + temporary_solution_name + ".zip")
    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
    log.Info "Importing solution";
    let importid = Guid.NewGuid()
    let req = ImportSolutionRequest ()
    req.CustomizationFile <- fileBytes;
  