Our implementation delegates to a ContactManager class to do the actual processing. That returns a domain object which we wrap with a milton resource to represent the new object.

ContactManager is going to create our contact, then parse the iCal data and set individual fields, and 'persist' the original ical data:

To persist or to generate iCal data?

In this example we save the original iCal data and we also parse it into its component fields like first name, surname, etc.

Of course you don't need to do both. If you don't have any reason for parsing and storing individual fields you can simple persist the ical data. And if you are persisting fields you might think that you don't need to save the ical data, and just generate it on demand from the fields.

Experience has shown, however, that you will get the best result from storing the original ical data and returning it on a GET, and use any parsed data as auxilary data. If you integrate with a web page where individual fields are editable you should apply those changes to the iCal data when the changes are made.