anchor.diff:      {ok, datastore:ext_key()} | datastore:create_error().
   create_or_update(#model_config{name = ModelName} = ModelConfig, #document{key = Key} = NewDoc, Diff)
       when is_function(Diff) ->
  -    datastore:run_transaction(ModelName, synchronization_link_key(ModelConfig, Key),
  +    datastore:run_transaction(ModelName, synchronization_doc_key(ModelConfig, Key),
           fun() ->
               case get(ModelConfig, Key) of
                   {error, {not_found, ModelName}} ->
  
positive.code:         end);
  create_or_update(#model_config{name = ModelName} = ModelConfig, #document{key = Key} = NewDoc, Diff)
      when is_map(Diff) ->
      datastore:run_transaction(ModelName, synchronization_link_key(ModelConfig, Key),
          fun() ->
              case get(ModelConfig, Key) of
                  {error, {not_found, ModelName}} ->
  
negative.code: -spec save(model_behaviour:model_config(), datastore:document()) ->
      {ok, datastore:ext_key()} | datastore:generic_error().
  save(#model_config{name = ModelName} = ModelConfig, #document{rev = undefined, key = Key, value = Value} = Doc) ->
      datastore:run_transaction(ModelName, synchronization_doc_key(ModelConfig, Key),
          fun() ->
              case get(ModelConfig, Key) of
                  {error, {not_found, _}} ->
  