private static ICrmSubscriptionMessage Create(string messageBody, BrokeredMessage message) { Dictionary <string, string> jsonDictionary = JsonConvert.DeserializeObject <Dictionary <string, string> >(messageBody); if (!jsonDictionary.ContainsKey("MessageName")) { ADXTrace.Instance.TraceWarning(TraceCategory.Application, string.Format("Unexpected message format. MessageId: {0} ", message.MessageId)); return(null); } switch (jsonDictionary["MessageName"]) { case "MetadataChange": NotificationUpdateManager.Instance.MetadataDirty = true; return(MetadataMessage.DeserializeMessage(messageBody, message)); case "Create": case "Update": case "Delete": return(EntityRecordMessage.DeserializeMessage(messageBody, message)); case "AssociateEntities": case "DisassociateEntities": return(AssociateDisassociateMessage.DeserializeMessage(messageBody, message)); default: ADXTrace.Instance.TraceWarning(TraceCategory.Application, string.Format("Unexpected message type: {0} ", jsonDictionary["MessageName"])); return(null); } }