This is very similar to what is in SearchOperation.  It might make sense to have a helper method in AbstractOperation for jsonToKv(jsonNode) and perhaps getValueFromJson(json) to do the value parsing part since KvFetchOperation and EventFetchOperation do that as well.