Data integration and middleware