There are plenty of scenarios in which the base built-in actions are not enough. For example, if creation of a specific entity record demands that other entity records be also created, or if certain restrictions apply that cannot be modeled with static "default values". Or simply because you want to audit operations over sensitive entities.
Currently the way to do this with the Agile Platform is clumsy: isolate entities in their own eSpace, make them available read-only, and create sets of actions to do the required tasks. This works, but:
It is ugly - when actually using those actions, you will not see them associated with entities; you need to remember that they need to be imported, look for them under "referenced actions", remember from which eSpace they come from - or go look in the entity list;
It can lead to errors - if a new developer in a project using the pattern, for some reason, is not properly informed, he might simply go into the eSpace and switch the read-only property off, anticipating that it being that way was an error.