I have a asynchronous server event that calls out to a .Net Assembly in the GAC. Every single instance of the call is throwing the exception "4129 A database error occurred: 5225 Server Item Not Found with Serial <server>,xxxx,xxx". I have been unable to figure out what the issue is. Any help will be greatly appreciated. The complete code of the event is below.
Tom
public void Main(ServerEventContext K2)
{
K2.Synchronous = false;
InvokeMethod(K2);
}
public void InvokeMethod(ServerEventContext K2)
{
IdM.Workflow.AdamFlowbotProvider ADAMProvider = new IdM.Workflow.AdamFlowbotProvider();
string[] roleIds;
string roleID;
int i;
string[] stringSeparator = new string[] {"::"};
try
{
if ( (K2.ProcessInstance.DataFields["custodian_approved"].Value.ToString() == "1") ||
(K2.ProcessInstance.DataFields["eprovisioned"].Value.ToString() == "1"))
switch (K2.ProcessInstance.DataFields["request_type"].Value.ToString())
{
case "2": // Add request
roleIds = K2.ProcessInstance.DataFields["role_ids"].Value.ToString().Split(stringSeparator, StringSplitOptions.None);
i = Convert.ToInt32(K2.ProcessInstance.DataFields["current_role"].Value.ToString());
if (i < roleIds.Length)
{
ADAMProvider.K2AddUserApplicationRole(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["comments1"].Value.ToString(), roleIds[i], K2.SerialNumber);
K2.ProcessInstance.DataFields["role_id"].Value = roleIds[i];
i++;
K2.ProcessInstance.DataFields["current_role"].Value = i.ToString();
K2.ProcessInstance.DataFields["trans_msg"].Value = ADAMProvider.TransactionMessage.ToString();
K2.ProcessInstance.DataFields["error_msg"].Value = ADAMProvider.ErrorMessage.ToString();
}
else
{
ADAMProvider.K2AddUserApplicationRole(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["comments1"].Value.ToString(), K2.ProcessInstance.DataFields["app_id"].Value.ToString(), K2.SerialNumber);
K2.ProcessInstance.DataFields["role_id"].Value = "0";
K2.ProcessInstance.DataFields["trans_msg"].Value = ADAMProvider.TransactionMessage.ToString();
K2.ProcessInstance.DataFields["error_msg"].Value = ADAMProvider.ErrorMessage.ToString();
}
break;
case "3": // Change request
roleIds = K2.ProcessInstance.DataFields["role_ids"].Value.ToString().Split(stringSeparator, StringSplitOptions.None);
i = Convert.ToInt32(K2.ProcessInstance.DataFields["current_role"].Value.ToString());
if (i == 0)
ADAMProvider.K2RemoveUserApplication(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["app_id"].Value.ToString(), K2.ProcessInstance.DataFields["comments1"].Value.ToString(), K2.SerialNumber);
if (i < roleIds.Length)
{
ADAMProvider.K2AddUserApplicationRole(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["comments1"].Value.ToString(), roleIds[i], K2.SerialNumber);
K2.ProcessInstance.DataFields["role_id"].Value = roleIds[i];
i++;
K2.ProcessInstance.DataFields["current_role"].Value = i.ToString();
K2.ProcessInstance.DataFields["trans_msg"].Value = ADAMProvider.TransactionMessage.ToString();
K2.ProcessInstance.DataFields["error_msg"].Value = ADAMProvider.ErrorMessage.ToString();
}
else
{
ADAMProvider.K2AddUserApplicationRole(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["comments1"].Value.ToString(), K2.ProcessInstance.DataFields["app_id"].Value.ToString(), K2.SerialNumber);
K2.ProcessInstance.DataFields["role_id"].Value = "0";
K2.ProcessInstance.DataFields["trans_msg"].Value = ADAMProvider.TransactionMessage.ToString();
K2.ProcessInstance.DataFields["error_msg"].Value = ADAMProvider.ErrorMessage.ToString();
}
break;
case "4": // Delete request
case "6": // Terminate request
ADAMProvider.K2RemoveUserApplication(K2.ProcessInstance.DataFields["employee_id"].Value.ToString(), "", K2.ProcessInstance.DataFields["app_id"].Value.ToString(), K2.ProcessInstance.DataFields["comments1"].Value.ToString(), K2.SerialNumber);
K2.ProcessInstance.DataFields["role_id"].Value = "0";
K2.ProcessInstance.DataFields["trans_msg"].Value = ADAMProvider.TransactionMessage.ToString();
K2.ProcessInstance.DataFields["error_msg"].Value = ADAMProvider.ErrorMessage.ToString();
break;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
ADAMProvider = null;
}
}