anchor.diff:        C =:= <<"edit_term_or_view">>;
         C =:= <<"get_sql">>;
         C =:= <<"cache_data">> ->
  +    BodyJson = jsx:decode(ReqData),
  +    ?Info("parse int : ~p", [ReqData]),
       catch dderl:access(?CMD_WITHARGS, SrcIp, UserId, Id, binary_to_list(C), 
  -        maps:get(C, jsx:decode(ReqData, [return_maps]), #{}), "", "", "", "", ""),
  -    BodyJson = jsx:decode(ReqData),
  +        maps:from_list(proplists:get_value(C, BodyJson, [])), "", "", "", "", ""),
       Self = self(),
       spawn_link(fun() -> spawn_gen_process_call(Adapter, From, C, BodyJson, Sess, UserId, Self) end),
       State;
  
positive.code:                 end;
                  H -> {H, proplists:get_value(<<"tns">>, BodyJson, "")}
      end,
      catch dderl:access(?CMD_WITHARGS, SrcIp, UserId, Id, binary_to_list(hd(Cmd)), jsx:decode(ReqData, [return_maps]), 
          proplists:get_value(<<"user">>, BodyJson, ""), Host, 
          proplists:get_value(<<"adapter">>, BodyJson, ""), ConnStr, ""),
      ?NoDbLog(debug, [{user, UserId}], "~p processing ~p~n~s", [Adapter, Cmd, jsx:prettify(ReqData)]),
  
negative.code: 
  process_call({[<<"login_change_pswd">>], ReqData}, _Adapter, From, {SrcIp,_},
               #state{sess = ErlImemSess, id = Id, user_id = UserId} = State) ->
      #{<<"change_pswd">> := BodyMap} = jsx:decode(ReqData, [return_maps]),
      catch dderl:access(?CMD_WITHARGS, SrcIp, UserId, Id, "login_change_pswd", BodyMap, "", "", "", "", ""),
      User        = maps:get(<<"user">>, BodyMap, <<>>),
      OldPassword = list_to_binary(maps:get(<<"password">>, BodyMap, [])),
      NewPassword = list_to_binary(maps:get(<<"new_password">>, BodyMap, [])),
      case ErlImemSess:run_cmd(
             change_credentials,
             [{pwdmd5, OldPassword}, {pwdmd5, NewPassword}]
  