finish device CRUD, handle errors and introduce observatory logging