anchor.diff:  	simultaneous_updates_on_subscriber_faliure,
   	simultaneous_updates_on_client_faliure, update_client_password_json_patch,
   	update_client_attributes_json_patch, update_subscriber_password_json_patch,
  -	update_subscriber_attributes_json_patch, update_user_characteristics_json_patch].
  +	update_subscriber_attributes_json_patch, update_user_characteristics_json_patch,
  +	add_product].
   
   %%---------------------------------------------------------------------
   %%  Test cases
  
positive.code: -define(SECOND, seconds).
  %-define(SECOND, second).
  
  %%---------------------------------------------------------------------
  %%  Test server callback functions
  %%---------------------------------------------------------------------
  
negative.code: 	<<"HTTP/1.1 204", _/binary>> = Headers1,
  	ok = ssl:close(SslSock).
  
  add_product() ->
  	[{userdata, [{doc,"Use HTTP POST to creates a productOffering"}]}].
  
  add_product(Config) ->
  	HostUrl = ?config(host_url, Config),
  	Accept = {"accept", "application/json"},
  	ContentType = {"accept", "application/json"},
  	RestUser = ct:get_config(rest_user),
  	RestPass = ct:get_config(rest_pass),
  	Encodekey = base64:encode_to_string(string:concat(RestUser ++ ":", RestPass)),
  	AuthKey = "Basic " ++ Encodekey,
  	Authentication = {"authorization", AuthKey},
  	ProdName = {"name", "Wi-Fi"},
  	ProdHref = {"href", "/product/product/cpe"},
  	IsBundle = {"isBundle", "false"},
  	IsCustomerVisible = {"isCustomerVisible", "true"},
  	OrderDate = {"orderDate", ocs_log:iso8601(erlang:system_time(?MILLISECOND))},
  	StartDate = {"startDate", ocs_log:iso8601(erlang:system_time(?MILLISECOND))},
  	Status = {"lifecycleStatus", "active"},
  	ProdSpecID = {"id", "cpe"},
  	ProdSpecHref = {"href", "/productCatalogManagement/productSpecification/cpe"},
  	ProdSpecName = {"name", "Monthly subscriber Family Pack"},
  	ProdSpec = {"productSpecification", {struct, [ProdSpecID, ProdSpecHref, ProdSpecName]}},
  	POPName1 = {"name", "Family-Pack"},
  	POPDescription = {"description", "Monthly package"},
  	POPStratDateTime = {"startDateTime", ocs_log:iso8601(erlang:system_time(?MILLISECOND))},
  	POPEndDateTime = {"endDateTime", ocs_log:iso8601(erlang:system_time(?MILLISECOND)  + 2678400000)},
  	POPValidFor = {struct, [POPStratDateTime, POPEndDateTime]},
  	POPPriceType = {"priceType", "recurring"},
  	POPUOMeasure = {"unitOfMeasure", ""},
  	POPPriceTaxInclude = {"taxIncludedAmount", 230},
  	POPPriceCurrency = {"currencyCode", "MXV"},
  	POPPrice = {"price", {struct, [POPPriceTaxInclude, POPPriceCurrency]}},
  	POPRecChargPeriod = {"recurringChargePeriod", "monthly"},
  	ProdAlterName = {"name", "usage"},
  	ProdAlterDescription = {"description", ""},
  	ProdAlterValidFor = {struct, [POPStratDateTime]},
  	ProdAlterPriceType = {"priceType", "usage"},
  	ProdAlterUOMeasure = {"unitOfMeasure", "100g"},
  	ProdAlterAmount = {"amount", 0},
  	ProdAlterPrice = {"price", [{struct, [ProdAlterAmount]}]},
  	POPAlteration = {"productOfferPriceAlteration", {struct, [ProdAlterName, ProdAlterDescription,
  			ProdAlterValidFor, ProdAlterPriceType, ProdAlterUOMeasure, ProdAlterPrice]}},
  	ProdOfferPrice = {"productOfferingPrice", {array, [POPName1, POPDescription, POPValidFor,
  			POPPriceType, POPUOMeasure, POPPrice, POPRecChargPeriod, POPAlteration]}},
  	ReqJson = {struct, [ProdName, ProdHref, IsBundle, IsCustomerVisible, OrderDate, StartDate,
  			Status, ProdSpec, ProdOfferPrice]},
  	ReqBody = mochijson:encode(ReqJson),
  	Authentication = {"authorization", AuthKey},
  	Request = {HostUrl ++ "/catalogManagement/v1/product",
  			[Accept, Authentication], ContentType, ReqBody},
  	{ok, Result} = httpc:request(post, Request, [], []),
  	{{"HTTP/1.1", 201, _Created}, Headers, _} = Result,
  	{_, "application/json"} = lists:keyfind("content-type", 1, Headers).
  
  %%---------------------------------------------------------------------
  %%  Internal functions
  %%---------------------------------------------------------------------
  