anchor.diff:  prepare(AtmLaneIndex, AtmWorkflowExecutionId, AtmWorkflowExecutionCtx) ->
       AtmWorkflowExecutionDoc = mark_as_preparing(AtmLaneIndex, AtmWorkflowExecutionId),
   
  -    AtmLaneExecutionCreateCtx = create_execution_elements(build_lane_execution_create_ctx(
  -        AtmLaneIndex, AtmWorkflowExecutionDoc, AtmWorkflowExecutionCtx
  -    )),
  +    try
  +        create_lane(AtmLaneIndex, AtmWorkflowExecutionDoc, AtmWorkflowExecutionCtx),
  +        ok
  +    catch throw:{error, _} ->
  +        % TODO log error
  +        ok
  +    end,
   
       ok.
   
  
positive.code:             {ok, [NewRun | PreviousRuns]};
          _ ->
              ?ERROR_ATM_INVALID_STATUS_TRANSITION(Status, ?PREPARING_STATUS)
      end.
  
  
  
negative.code:     atm_workflow_execution:doc() | no_return().
  mark_as_preparing(AtmLaneIndex, AtmWorkflowExecutionId) ->
      Diff = fun(#atm_workflow_execution{lanes = AtmLaneExecutions} = AtmWorkflowExecution) ->
          % TODO check that workflow in ongoing/is not aborting; maybe change workflow status to active?
          AtmLaneExecution = lists:nth(AtmLaneIndex, AtmLaneExecutions),
  
          case mark_current_run_as_preparing(AtmLaneExecution#atm_lane_execution_rec.runs) of
  