CRUD objects are very useful and Apache Sling (by extension, Adobe Experience Manager) has an API to provide this functionality to allow direct manipulation of the the repository through Java value objects. CRUD is the acronym for Create Read Update Delete. The Sling CRUD objects can be obtained through our friend, adaptTo.
Dan Klco of 6D Labs has a blog post that presents an issue that can be found in the API, and a way to work around it. With the JCR, it is possible to be able to read a node but not write to it. That causes the adaptTo method to return null for ModifiableValueMap when the does not have write permission. 6D Labs | ModifiableValueMap Not Found: Considerations in Using ModifiableValueMaps in an API