Agents play one of the most important role in a Domino applications, as most of the backend and scheduling activities are done by agents. So, it is very crucial that the agents to run in the desired fashion, for proper functioning of the application.
But many times it happens that the agents that work perfectly in development environments just don't work once they are into production. The most common culprit behind this is the agent signer. The agent takes up the ID of the user/designer who last modified it. Once these agents are into production, they stop working, as the signer of the agent does not have the required agent execution rights on the server.
The solution for this is to open the agents in designer using the ID of a person who has proper agent execution rights on the server and save them. But this is not always feasible. I have found a workaround for this.
Create a new shared, Lotus Script agent on the server. In run when : select Manually from actions menu, Run once(@ command may be used). Write the following code in the initialise event of the agent and save it. You can then run the agent from the actions menu. The agent will run & sign all the other agents, except itself, with the current ID. In this way, all the agents will have their signer as the person who ran this agent.
Sub Initialize Dim s As New NotesSession Dim db As NotesDatabase Dim agt As NotesAgent Dim doc As NotesDocument Dim view As NotesView Dim x As Variant Dim y As Variant Set agt=s.currentagent x=agt.Name Set db=agt.parent Forall a In db.Agents y=a.name If x<>y Then Call a.Save End If End Forall End Sub