You can call
service.Update(entity);
but you need to use IExecutionContext.Depth to avoid getting into infinite loop.
if(IExecutionContext.Depth <= 2)
{
//Update your record
}
Every time a running plug-in or Workflow issues a message request to the Web services that triggers another plug-in or Workflow to execute, the Depth property of the execution context is increased. If the depth property increments to its maximum value within
the configured time limit, the platform considers this behavior an infinite loop and further plug-in or Workflow execution is aborted. The maximum depth (8) and time limit (one hour) are configurable by the Microsoft Dynamics CRM administrator.
Here is how to use IExecutionContext.Depth in detail:
Execution Context Depth
It applies to both CRM 4.0 and 2011 version.
If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"
Thanks,
Imran Abbasi