Error upon Assignment creation in Project Activity

When I add an Assignment in an Activity within a Project and attempt to save, I get a "Cannot get IIS pickup directory" error: -<SOAP-ENV:Envelope> -<SOAP-ENV:Body> -<SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Cannot get IIS pickup directory.</faultstring> -<detail> <af:legacy_detail>Cannot get IIS pickup directory.</af:legacy_detail> <af:exception message =" Cannot get IIS pickup directory. " type=" Aras.Server.Core.InnovatorServerException " /> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> I haven't been able to figure out where this error is coming from or why it's occurring. On a side note, when I try to add a User that doesn't have an email attached to it, I get an error: -<SOAP-ENV:Envelope> -<SOAP-ENV:Body> -<SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Email address for to_identity not found or invalid</faultstring> -<detail> <af:legacy_detail>Email address for to_identity not found or invalid</af:legacy_detail> <af:exception message =" Email address for to_identity not found or invalid " type ="Aras.Server.Core.InnovatorServerException " /> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Note that I don't have any email messages setup for Projects, so I can't figure out why it won't let me add a user without an email. I'm not sure whether these two errors are related, but does anyone have an idea as to why there is an issue? Am I missing some configuration step somewhere? Thanks,
Parents
  • Hi u2berggeist, The Project ItemType has an OnBeforeUpdate server event (Project_saveProjectTree) that calls another method - processProjectTree. The processProjectTree method has logic that sends an email when an assignee is added/changed on an activity. There are two options here if you do not want to send emails to the users.
    1. Comment out the following passage in the processProjectTree method. '+++++ Send Emails Dim mailInDom As XmlDocument = New XmlDocument() Dim activeAssignment As XmlElement Dim activity As XmlElement Dim elem As XmlElement Dim flagNm As String = "use_identities_from_xml_only" Dim act_asnees_dict As New Hashtable 'key is activity&assignee (indicates that assignee is emailed about the activity) Dim k As String For i = 0 To activities4email.Count - 1 activity = CType(activities4email.Item(i), XmlElement) mailInDom.LoadXml(activity.OuterXml) elem = CType(mailInDom.SelectSingleNode("Item/Relationships"), XmlElement) If Not elem Is Nothing Then elem.ParentNode.RemoveChild(elem) mailInDom.DocumentElement.SetAttribute(flagNm, "1") k = String.Format(CultureInfo.InvariantCulture, "{0};{1}", activity.GetAttribute("id"), CCO.XML.GetItemProperty(activity, "managed_by_id")) act_asnees_dict.Add(k, "") CCO.ApplyItem.ExecuteMethodByName(mailInDom, outDom, "sendEmailToA2Assignee", True) If (CCO.XML.HasFault(outDom, False)) Then Exit Sub End If NextFor i = 0 To asmnts4email.Count - 1 activeAssignment = CType(asmnts4email.Item(i), XmlElement) activity = CType(activeAssignment.ParentNode.ParentNode, XmlElement) elem = CType(activeAssignment.SelectSingleNode("related_id/Item"), XmlElement) If elem Is Nothing Then k = activeAssignment.SelectSingleNode("related_id").InnerText Else k = elem.GetAttribute("id") End If k = String.Format("{0};{1}", activity.GetAttribute("id"), k) If Not act_asnees_dict.Contains(k) Then mailInDom.LoadXml(activity.OuterXml) For Each elem In mailInDom.SelectNodes(String.Format("Item/Relationships/Item[@id!='{0}']", activeAssignment.GetAttribute("id"))) elem.ParentNode.RemoveChild(elem) Next elem mailInDom.DocumentElement.SetAttribute(flagNm, "1") CCO.ApplyItem.ExecuteMethodByName(mailInDom, outDom, "sendEmailToA2Assignee", True) If (CCO.XML.HasFault(outDom, False)) Then Exit Sub End If act_asnees_dict.Add(k, "") End If Next '----- Send Emails This should prevent the emails from being sent, but I have not tested this workaround to confirm. Be sure to thoroughly test to ensure that the behavior when assigning activities does not change.
    2. Enable email debugging for your instance. When email debugging is enabled for an Aras Innovator instance, any emails will be written to files on the server rather than sent via SMTP. This works for a dev/test environment, but I wouldn't recommend it for production. If activities are frequently assigned/reassigned, you could end up with a lot of files piling up on the server.
    Eli
    Eli Donahue Aras Labs Software Engineer
Reply
  • Hi u2berggeist, The Project ItemType has an OnBeforeUpdate server event (Project_saveProjectTree) that calls another method - processProjectTree. The processProjectTree method has logic that sends an email when an assignee is added/changed on an activity. There are two options here if you do not want to send emails to the users.
    1. Comment out the following passage in the processProjectTree method. '+++++ Send Emails Dim mailInDom As XmlDocument = New XmlDocument() Dim activeAssignment As XmlElement Dim activity As XmlElement Dim elem As XmlElement Dim flagNm As String = "use_identities_from_xml_only" Dim act_asnees_dict As New Hashtable 'key is activity&assignee (indicates that assignee is emailed about the activity) Dim k As String For i = 0 To activities4email.Count - 1 activity = CType(activities4email.Item(i), XmlElement) mailInDom.LoadXml(activity.OuterXml) elem = CType(mailInDom.SelectSingleNode("Item/Relationships"), XmlElement) If Not elem Is Nothing Then elem.ParentNode.RemoveChild(elem) mailInDom.DocumentElement.SetAttribute(flagNm, "1") k = String.Format(CultureInfo.InvariantCulture, "{0};{1}", activity.GetAttribute("id"), CCO.XML.GetItemProperty(activity, "managed_by_id")) act_asnees_dict.Add(k, "") CCO.ApplyItem.ExecuteMethodByName(mailInDom, outDom, "sendEmailToA2Assignee", True) If (CCO.XML.HasFault(outDom, False)) Then Exit Sub End If NextFor i = 0 To asmnts4email.Count - 1 activeAssignment = CType(asmnts4email.Item(i), XmlElement) activity = CType(activeAssignment.ParentNode.ParentNode, XmlElement) elem = CType(activeAssignment.SelectSingleNode("related_id/Item"), XmlElement) If elem Is Nothing Then k = activeAssignment.SelectSingleNode("related_id").InnerText Else k = elem.GetAttribute("id") End If k = String.Format("{0};{1}", activity.GetAttribute("id"), k) If Not act_asnees_dict.Contains(k) Then mailInDom.LoadXml(activity.OuterXml) For Each elem In mailInDom.SelectNodes(String.Format("Item/Relationships/Item[@id!='{0}']", activeAssignment.GetAttribute("id"))) elem.ParentNode.RemoveChild(elem) Next elem mailInDom.DocumentElement.SetAttribute(flagNm, "1") CCO.ApplyItem.ExecuteMethodByName(mailInDom, outDom, "sendEmailToA2Assignee", True) If (CCO.XML.HasFault(outDom, False)) Then Exit Sub End If act_asnees_dict.Add(k, "") End If Next '----- Send Emails This should prevent the emails from being sent, but I have not tested this workaround to confirm. Be sure to thoroughly test to ensure that the behavior when assigning activities does not change.
    2. Enable email debugging for your instance. When email debugging is enabled for an Aras Innovator instance, any emails will be written to files on the server rather than sent via SMTP. This works for a dev/test environment, but I wouldn't recommend it for production. If activities are frequently assigned/reassigned, you could end up with a lot of files piling up on the server.
    Eli
    Eli Donahue Aras Labs Software Engineer
Children
No Data