anchor.diff:  	ContentType = "application/json",
   	RestUser = ct:get_config(rest_user),
   	RestPass = ct:get_config(rest_pass),
  +	RestPort = ?config(port, Config),
   	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
   	AuthKey = "Basic " ++ Encodekey,
   	Authorization = {"authorization", AuthKey},
  
positive.code: 	Value = {"value", ProdID},
  	{struct, [Op, Path, Value]}.
  
  product_description(Description) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/description"},
  	Value = {"value", Description},
  	{struct, [Op, Path, Value]}.
  
  product_status(Status) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/lifecycleStatus"},
  	Value = {"value", Status},
  	{struct, [Op, Path, Value]}.
  
  prod_price_name(Index, Name) when is_integer(Index) ->
  	prod_price_name(integer_to_list(Index), Name);
  prod_price_name(Index, Name) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/name"},
  	Value = {"value", Name},
  	{struct, [Op, Path, Value]}.
  
  prod_price_description(Index, Description) when is_integer(Index) ->
  	prod_price_description(integer_to_list(Index), Description);
  prod_price_description(Index, Description) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/description"},
  	Value = {"value", Description},
  	{struct, [Op, Path, Value]}.
  
  prod_price_rc_period(Index, Period) when is_integer(Index) ->
  	prod_price_rc_period(integer_to_list(Index), Period);
  prod_price_rc_period(Index, Period) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/recurringChargePeriod"},
  	Value = {"value", Period},
  	{struct, [Op, Path, Value]}.
  
  prod_price_ufm(Index, UFM) when is_integer(Index) ->
  	prod_price_ufm(integer_to_list(Index), UFM);
  prod_price_ufm(Index, UFM) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/unitOfMeasure"},
  	Value = {"value", UFM},
  	{struct, [Op, Path, Value]}.
  
  prod_price_type(Index, PT) when is_integer(Index) ->
  	prod_price_type(integer_to_list(Index), PT);
  prod_price_type(Index, PT) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/priceType"},
  	Value = {"value", PT},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_name(Index, Name) when is_integer(Index) ->
  	pp_alter_name(integer_to_list(Index), Name);
  pp_alter_name(Index, Name) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/productOfferPriceAlteration/name"},
  	Value = {"value", Name},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_description(Index, Des) when is_integer(Index) ->
  	pp_alter_description(integer_to_list(Index), Des);
  pp_alter_description(Index, Des) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/productOfferPriceAlteration/description"},
  	Value = {"value", Des},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_type(Index, PT) when is_integer(Index) ->
  	pp_alter_type(integer_to_list(Index), PT);
  pp_alter_type(Index, PT) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/productOfferPriceAlteration/priceType"},
  	Value = {"value", PT},
  	{struct, [Op, Path, Value]}.
  
  pp_alter_ufm(Index, UFM) when is_integer(Index) ->
  	pp_alter_ufm(integer_to_list(Index), UFM);
  pp_alter_ufm(Index, UFM) when is_list(Index) ->
  	Op = {"op", "replace"},
  	Path = {"path", "/productOfferingPrice/" ++ Index ++ "/productOfferPriceAlteration/unitOfMeasure"},
  	Value = {"value", UFM},
  	{struct, [Op, Path, Value]}.
  
  
negative.code: 	{struct, Product1} = mochijson:decode(ResponseBody),
  	RestPort = ?config(port, Config),
  	{_, ProductName} = lists:keyfind("name", 1, Product1),
  	{ok, Product2} = ocs:find_product(ProductName),
  	SslSock = ssl_socket_open({127,0,0,1}, RestPort),
  	PatchContentType = "application/json-patch+json",
  	Json = {array, [product_description(), product_status(),
  			prod_price_name(), prod_price_description(),
  			prod_price_ufm(), prod_price_type(), pp_alter_description(),
  			pp_alter_type(), pp_alter_ufm(), prod_price_rc_period()]},
  	Body = lists:flatten(mochijson:encode(Json)),
  	{Headers2, Response2} = patch_request(SslSock,
  			RestPort, PatchContentType, Etag, AuthKey, ProductName, Body),
  	<<"HTTP/1.1 200", _/binary>> = Headers2,
  	ok = ssl_socket_close(SslSock).
  
  %%---------------------------------------------------------------------
  