private void button1_Click(object sender, System.EventArgs e) { // OK, what are we supposed to retrieve System.Data.DataRow dtRow; int i = dgrdContainees.CurrentRowIndex; dtRow = g_dtblResults.Rows[i]; string strId = (string)dtRow["Id"]; string strContentSize = (string)dtRow["ContentSize"]; MessageBox.Show("Retrieving content for document [" + strId + "] size= " + strContentSize + " bytes."); // Retrieve the document CEWSI.ObjectRequestType objContentRequest = new CEWSI.ObjectRequestType(); CEWSI.ObjectSpecification objContentSpec = new CEWSI.ObjectSpecification(); objContentSpec.classId = "Document"; objContentSpec.objectId = strId; objContentSpec.objectStore = MainForm.Library; objContentRequest.SourceSpecification = objContentSpec; objContentRequest.id = "1"; // Ask for the content properties... CEWSI.FilterElementType[] incContentProps; if (UseGetContent) { incContentProps = new CEWSI.FilterElementType[1]; } else { incContentProps = new CEWSI.FilterElementType[2]; } incContentProps[0] = new CEWSI.FilterElementType(); incContentProps[0].Value = "ContentElements"; if (!UseGetContent) { incContentProps[1] = new CEWSI.FilterElementType(); incContentProps[1].Value = "Content"; incContentProps[1].maxSize = 1000000; incContentProps[1].maxSizeSpecified = true; } objContentRequest.PropertyFilter = new CEWSI.PropertyFilterType(); objContentRequest.PropertyFilter.IncludeProperties = incContentProps; objContentRequest.PropertyFilter.maxRecursion = 1; objContentRequest.PropertyFilter.maxRecursionSpecified = true; // Create the request array CEWSI.ObjectRequestType[] objRequestArray = new CEWSI.ObjectRequestType[1]; objRequestArray[0] = objContentRequest; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.ObjectResponseType[] objResponses = null; try { objResponses = objBinding.GetObjects(WSIUtil.GetLocalization(), objRequestArray); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while querying for containees: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } // Did we get some content? if (objResponses.Length < 1) { MessageBox.Show("No content found"); return; } if (objResponses[0].GetType() == typeof(CEWSI.ErrorStackResponse)) { CEWSI.ErrorStackResponse errStackResponse = (CEWSI.ErrorStackResponse)objResponses[0]; CEWSI.ErrorStackType objStack = errStackResponse.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return; } // Extract the document object from the response CEWSI.ObjectValue objDoc = null; if (objResponses[0].GetType() == typeof(CEWSI.SingleObjectResponse)) { CEWSI.SingleObjectResponse objResponse = (CEWSI.SingleObjectResponse)objResponses[0]; objDoc = objResponse.Object; } else if (objResponses[0].GetType() == typeof(CEWSI.ObjectSetResponse)) { CEWSI.ObjectSetResponse objSetResponse = (CEWSI.ObjectSetResponse)objResponses[0]; CEWSI.ObjectSetType objSet = objSetResponse.ObjectSet; objDoc = objSet.Object[0]; } else { MessageBox.Show("Unknown data type returned in ObjectReponse: [" + objResponses[0].GetType().ToString() + "]"); return; } // OK, we got some content. Get the bits from the response packet // First find the ContentElements property /* * if( objDoc.Property == null ) * { * MessageBox.Show("Received a document with no properties!"); * return; * } */ // Extract the content for each content element foreach (CEWSI.PropertyType objProp in objDoc.Property) { if (objProp.propertyId.ToLower().CompareTo("contentelements") == 0) { CEWSI.DependentObjectType[] contTrans = (CEWSI.DependentObjectType[])((CEWSI.ListOfObject)objProp).Value; if (contTrans == null) { MessageBox.Show("The selected document has no content"); break; } for (int nItem = 0; nItem < contTrans.Length; nItem++) { Byte[] byteContent = null; if (UseGetContent) { CEWSI.ContentRequestType crt = new CEWSI.ContentRequestType(); crt.cacheAllowed = true; crt.cacheAllowedSpecified = true; crt.id = "1"; crt.maxBytes = 100 * 1024; crt.maxBytesSpecified = true; crt.startOffset = 0; crt.startOffsetSpecified = true; crt.continueFrom = null; CEWSI.ElementSpecificationType est = new CEWSI.ElementSpecificationType(); est.itemIndex = nItem; est.itemIndexSpecified = true; est.elementSequenceNumber = 0; est.elementSequenceNumberSpecified = false; crt.ElementSpecification = est; CEWSI.ObjectSpecification objSpec = new CEWSI.ObjectSpecification(); objSpec.classId = "Document"; objSpec.objectId = strId; objSpec.objectStore = MainForm.Library; crt.SourceSpecification = objSpec; CEWSI.ContentRequestType[] contReqArray = new CEWSI.ContentRequestType[1]; contReqArray[0] = crt; CEWSI.FNCEWS40PortTypeClient binding2 = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.GetContentRequest gcr = new CEWSI.GetContentRequest(); gcr.ContentRequest = contReqArray; gcr.validateOnly = false; gcr.validateOnlySpecified = true; CEWSI.ContentResponseType[] contResponses = null; try { contResponses = binding2.GetContent(WSIUtil.GetLocalization(), gcr); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while fetching content for a content element: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } CEWSI.ContentResponseType crt2 = contResponses[0]; if (crt2 is CEWSI.ContentErrorResponse) { CEWSI.ContentErrorResponse cer = (CEWSI.ContentErrorResponse)crt2; CEWSI.ErrorStackType objStack = cer.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return; } else if (crt2 is CEWSI.ContentElementResponse) { CEWSI.ContentElementResponse elem = (CEWSI.ContentElementResponse)crt2; CEWSI.InlineContent ic = (CEWSI.InlineContent)elem.Content; byteContent = ic.Binary; } else { MessageBox.Show("Unknown data type returned in content response: [" + crt.GetType().ToString() + "]"); return; } } // end if (UseGetContent) else { CEWSI.DependentObjectType contTran = (CEWSI.DependentObjectType)contTrans[nItem]; CEWSI.PropertyType[] props = (CEWSI.PropertyType[])contTran.Property; if (props != null) { CEWSI.ContentData contData = (CEWSI.ContentData)props[0]; CEWSI.InlineContent ic = (CEWSI.InlineContent)contData.Value; byteContent = ic.Binary; } } // Write the retrieved content out to a file System.DateTime now = System.DateTime.Now; string strFileName = "C:\\Temp\\ContentElement0"; // + nItem.ToString(); strFileName = strFileName + "_" + now.Month.ToString(); strFileName = strFileName + "_" + now.Day.ToString(); strFileName = strFileName + "_" + now.Year.ToString(); strFileName = strFileName + "_" + now.Hour.ToString(); strFileName = strFileName + "_" + now.Minute.ToString(); strFileName = strFileName + "_" + now.Millisecond.ToString(); MessageBox.Show("Saving content of size " + byteContent.Length.ToString() + " to file: " + strFileName); saveContentToFile(strFileName, byteContent); } } } }
private void btnContainees_Click(object sender, System.EventArgs e) { FolderNode folder; // Reset the data grid dgrdContainees.DataSource = null; dgrdContainees.Show(); btnGetContent.Enabled = false; // Get the ID of the folder we are to search for containees if (treeFolders.SelectedNode == null) { MessageBox.Show("You must first select a folder node"); return; } folder = (FolderNode)treeFolders.SelectedNode.Tag; string strFolderId = folder.Id; // Properties to exclude in the query results string[] strExclude = new string[2]; strExclude[0] = "DateCreated"; strExclude[1] = "DateLastModified"; // Get the folder's Containees list object CEWSI.ObjectRequestType objContaineesRequest = new CEWSI.ObjectRequestType(); CEWSI.ObjectSpecification objContaineesSpec = new CEWSI.ObjectSpecification(); objContaineesSpec.classId = "Folder"; objContaineesSpec.objectId = strFolderId; objContaineesSpec.objectStore = MainForm.Library; objContaineesSpec.propertyId = "Containees"; objContaineesRequest.SourceSpecification = objContaineesSpec; objContaineesRequest.id = "1"; // Make sure to ask for the Head property of the RCR objContaineesRequest.PropertyFilter = new CEWSI.PropertyFilterType(); CEWSI.FilterElementType filterHead = new CEWSI.FilterElementType(); CEWSI.FilterElementType filterCName = new CEWSI.FilterElementType(); CEWSI.FilterElementType filterId = new CEWSI.FilterElementType(); CEWSI.FilterElementType filterCreator = new CEWSI.FilterElementType(); CEWSI.FilterElementType filterContentSize = new CEWSI.FilterElementType(); CEWSI.FilterElementType filterTitle = new CEWSI.FilterElementType(); filterHead.Value = "Head"; filterCName.Value = "ContainmentName"; filterId.Value = "Id"; filterCreator.Value = "Creator"; filterContentSize.Value = "ContentSize"; filterTitle.Value = "DocumentTitle"; objContaineesRequest.PropertyFilter.IncludeProperties = new CEWSI.FilterElementType[6]; objContaineesRequest.PropertyFilter.IncludeProperties[0] = filterHead; objContaineesRequest.PropertyFilter.IncludeProperties[1] = filterCName; objContaineesRequest.PropertyFilter.IncludeProperties[2] = filterId; objContaineesRequest.PropertyFilter.IncludeProperties[3] = filterCreator; objContaineesRequest.PropertyFilter.IncludeProperties[4] = filterContentSize; objContaineesRequest.PropertyFilter.IncludeProperties[5] = filterTitle; objContaineesRequest.PropertyFilter.ExcludeProperties = strExclude; objContaineesRequest.PropertyFilter.maxRecursion = 1; objContaineesRequest.PropertyFilter.maxRecursionSpecified = true; // Test continuation objContaineesRequest.maxElements = 2; // objContaineesRequest.maxElementsSpecified = true; // Create the request array CEWSI.ObjectRequestType[] objRequestArray = new CEWSI.ObjectRequestType[1]; objRequestArray[0] = objContaineesRequest; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.ObjectResponseType[] objResponses = null; try { objResponses = objBinding.GetObjects(WSIUtil.GetLocalization(), objRequestArray); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while querying for containees: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } // Get the containees if (objResponses.Length < 1) { MessageBox.Show("No containees found"); return; } if (objResponses[0].GetType() == typeof(CEWSI.ErrorStackResponse)) { CEWSI.ErrorStackResponse objErrResponse = (CEWSI.ErrorStackResponse)objResponses[0]; CEWSI.ErrorStackType objStack = objErrResponse.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return; } CEWSI.ObjectSetResponse objSetResponse = (CEWSI.ObjectSetResponse)objResponses[0]; CEWSI.ObjectSetType objResults = objSetResponse.ObjectSet; if (objResults.Object == null || objResults.Object.Length < 1) { MessageBox.Show("No containees found"); return; } // Query was successful; display a list of result rows // First create a data table that has our columns in it System.Data.DataColumn dtCol; System.Data.DataRow dtRow; System.Data.DataTable dtblResults = new System.Data.DataTable("Results"); dtCol = new System.Data.DataColumn("RCRId"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("ContainmentName"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("Id"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("ClassID"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("Title"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("Creator"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); dtCol = new System.Data.DataColumn("ContentSize"); dtCol.DataType = System.Type.GetType("System.String"); dtCol.DefaultValue = ""; dtblResults.Columns.Add(dtCol); // For each containee, make an entry in our data table CEWSI.ObjectValue objHead = null; foreach (CEWSI.ObjectValue objContainee in (CEWSI.ObjectValue[])objResults.Object) { dtRow = dtblResults.NewRow(); foreach (CEWSI.PropertyType objProp in objContainee.Property) { if (objProp.propertyId == "ContainmentName") { dtRow["ContainmentName"] = IdmObjectType.getPropertyValue(objProp); } if (objProp.propertyId == "Id") { dtRow["RCRId"] = IdmObjectType.getPropertyValue(objProp); } if (objProp.propertyId == "Head") { objHead = (CEWSI.ObjectValue)((CEWSI.SingletonObject)objProp).Value; dtRow["ClassId"] = objHead.classId.ToString(); foreach (CEWSI.PropertyType objHeadProp in objHead.Property) { if (objHeadProp.propertyId == "Id") { dtRow["Id"] = IdmObjectType.getPropertyValue(objHeadProp); } if (objHeadProp.propertyId == "Creator") { dtRow["Creator"] = IdmObjectType.getPropertyValue(objHeadProp); } if (objHeadProp.propertyId == "ContentSize") { dtRow["ContentSize"] = IdmObjectType.getPropertyValue(objHeadProp); } if (objHeadProp.propertyId == "DocumentTitle") { dtRow["Title"] = IdmObjectType.getPropertyValue(objHeadProp); } } } } dtblResults.Rows.Add(dtRow); btnGetContent.Enabled = true; } dgrdContainees.DataSource = dtblResults; dgrdContainees.Show(); g_dtblResults = dtblResults; }
public static EcmResult CreateFolder(DocumentModel doc, string folderName, string parentFolder, string folderClass) { EcmResult ret = new EcmResult(); if (doc.IsUseCert == 1) { Addcert(doc.EcmUrl); } CEWSI.ChangeRequestType objChange = new CEWSI.ChangeRequestType(); CEWSI.CreateAction createVerb = new CEWSI.CreateAction(); createVerb.classId = folderClass; objChange.Action = new CEWSI.ActionType[1]; objChange.Action[0] = (CEWSI.ActionType)createVerb; objChange.TargetSpecification = new CEWSI.ObjectReference(); objChange.TargetSpecification.classId = "ObjectStore"; objChange.TargetSpecification.objectId = doc.ObjectStore; objChange.id = "1"; CEWSI.ModifiablePropertyType[] objInputProps = new CEWSI.ModifiablePropertyType[2]; objChange.ActionProperties = objInputProps; // Build a list of properties to set in the new folder (just the folder name and parent for now) // -Folder name property CEWSI.SingletonString objString = new CEWSI.SingletonString(); objString.Value = folderName; objString.propertyId = "FolderName"; objInputProps[0] = objString; // -Parent property CEWSI.ObjectSpecification objSpec = new CEWSI.ObjectSpecification(); CEWSI.SingletonObject objObject = new CEWSI.SingletonObject(); objSpec.classId = "Folder"; objSpec.path = parentFolder; objSpec.objectStore = doc.ObjectStore; objObject.propertyId = "Parent"; objObject.Value = (CEWSI.ObjectEntryType)objSpec; objInputProps[1] = objObject; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(doc.EcmUser, doc.EcmDomain, doc.EcmPassword, doc.EcmUrl); // Send off the request CEWSI.ChangeResponseType[] objResponseArray = null; CEWSI.ExecuteChangesRequest objRequest = new CEWSI.ExecuteChangesRequest(); objRequest.refresh = true; objRequest.refreshSpecified = true; objRequest.ChangeRequest = new CEWSI.ChangeRequestType[1]; objRequest.ChangeRequest[0] = objChange; try { objResponseArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objRequest); } catch (System.Net.WebException ex) { ret.ErrorCode = -1; ret.ErrorMsg = ex.ToString(); return(ret); } catch (Exception allEx) { ret.ErrorCode = -1; ret.ErrorMsg = allEx.ToString(); return(ret); } // Created a folder! Sanity check the results string strObjectId = ""; bool bFound = false; if (objResponseArray == null || objResponseArray.Length < 1) { ret.ErrorCode = 0; ret.ErrorMsg = "The change request was executed, but a valid object was not returned"; return(ret); } CEWSI.ChangeResponseType objResponse = objResponseArray[0]; foreach (CEWSI.PropertyType objProp in objResponse.Property) { if (objProp.propertyId.CompareTo("Id") == 0) { strObjectId = IdmObjectType.getPropertyValue(objProp); bFound = true; break; } } if (!bFound) { ret.ErrorCode = 0; ret.ErrorMsg = "The folder was created, but the results do not contain a folder ID"; return(ret); } ret.ErrorCode = 1; ret.ErrorMsg = "Successfully created a folder"; ret.DocId = strObjectId; return(ret); }
private int ExpandNode(System.Windows.Forms.TreeNode objParent, FolderNode fNode) { int numSubfolders = 0; // Don't waste time expanding the same node twice... if (fNode.Expanded) { return(0); } // Properties to exclude in the query results string strFolderId = fNode.Id; string[] strExclude = new string[5]; strExclude[0] = "DateCreated"; strExclude[1] = "DateLastModified"; // Comment out stuff that gets us in trouble when recursion is enabled strExclude[2] = "ObjectStore"; strExclude[3] = "ClassDescription"; strExclude[4] = "Parent"; // Get the folder's Subfolders list object CEWSI.ObjectRequestType objSubFoldersRequest = new CEWSI.ObjectRequestType(); CEWSI.ObjectSpecification objSubFoldersSpec = new CEWSI.ObjectSpecification(); objSubFoldersSpec.classId = "Folder"; objSubFoldersSpec.objectId = strFolderId; objSubFoldersSpec.objectStore = MainForm.Library; objSubFoldersSpec.propertyId = "SubFolders"; objSubFoldersRequest.SourceSpecification = objSubFoldersSpec; objSubFoldersRequest.id = "1"; objSubFoldersRequest.PropertyFilter = new CEWSI.PropertyFilterType(); objSubFoldersRequest.PropertyFilter.ExcludeProperties = strExclude; //objSubFoldersRequest.PropertyFilter.maxRecursion = 3; //objSubFoldersRequest.PropertyFilter.maxRecursionSpecified = true; //objSubFoldersRequest.maxElements = 2; //objSubFoldersRequest.maxElementsSpecified = true; // Get the folder itself //CEWSI.ObjectRequestType objFolderRequest = new CEWSI.ObjectRequestType(); //CEWSI.ObjectSpecification objFolderSpec = new CEWSI.ObjectSpecification(); //objFolderSpec.classId = "Folder"; //objFolderSpec.objectId = strFolderId; //objFolderSpec.objectStore = MainForm.Library; //objFolderRequest.SourceSpecification = objFolderSpec; //objFolderRequest.id = "3"; //objFolderRequest.PropertyFilter = new CEWSI.PropertyFilterType(); //objFolderRequest.PropertyFilter.ExcludeProperties = strExclude; // Create the request array CEWSI.ObjectRequestType[] objRequestArray = new CEWSI.ObjectRequestType[1]; objRequestArray[0] = objSubFoldersRequest; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.ObjectResponseType[] objResponses = null; try { objResponses = objBinding.GetObjects(WSIUtil.GetLocalization(), objRequestArray); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while querying for a folder: [" + ex.Message + "]"); return(0); } // Get the nodes below the parent if (objResponses.Length > 0 && objResponses[0].id == "1") { if (objResponses[0].GetType() == typeof(CEWSI.ErrorStackResponse)) { CEWSI.ErrorStackResponse objErrResponse = (CEWSI.ErrorStackResponse)objResponses[0]; CEWSI.ErrorStackType objStack = objErrResponse.ErrorStack; CEWSI.ErrorRecordType objErr = objStack.ErrorRecord[0]; MessageBox.Show("Error [" + objErr.Description + "] occurred. " + " Err source is [" + objErr.Source + "]"); return(0); } CEWSI.ObjectSetResponse objSetResponse = (CEWSI.ObjectSetResponse)objResponses[0]; CEWSI.ObjectSetType objSet = objSetResponse.ObjectSet; if (objSet.Object != null && objSet.Object.Length > 0) { foreach (CEWSI.ObjectValue objValue in (CEWSI.ObjectValue[])objSet.Object) { numSubfolders += 1; System.Windows.Forms.TreeNode objNode = new System.Windows.Forms.TreeNode(); FolderNode newNode = new FolderNode(); foreach (CEWSI.PropertyType objProp in objValue.Property) { if (objProp.propertyId == "FolderName") { string strName = ((CEWSI.SingletonString)objProp).Value; objNode.Text = strName; newNode.Name = strName; } if (objProp.propertyId == "Id") { string strId = ((CEWSI.SingletonId)objProp).Value; newNode.Id = strId; } } objNode.Tag = (object)newNode; objParent.Nodes.Add(objNode); } } } objParent.Expand(); fNode.Expanded = true; return(numSubfolders); }
private void btnCreate_Click(object sender, System.EventArgs e) { // Create the ChangeRequest CEWSI.ChangeRequestType objChange = new CEWSI.ChangeRequestType(); CEWSI.CreateAction createVerb = new CEWSI.CreateAction(); createVerb.classId = txtFolderClass.Text; objChange.Action = new CEWSI.ActionType[1]; objChange.Action[0] = (CEWSI.ActionType)createVerb; objChange.TargetSpecification = new CEWSI.ObjectReference(); objChange.TargetSpecification.classId = "ObjectStore"; objChange.TargetSpecification.objectId = MainForm.Library; objChange.id = "1"; CEWSI.ModifiablePropertyType[] objInputProps = new CEWSI.ModifiablePropertyType[2]; objChange.ActionProperties = objInputProps; // Build a list of properties to set in the new folder (just the folder name and parent for now) // -Folder name property CEWSI.SingletonString objString = new CEWSI.SingletonString(); objString.Value = txtName.Text; objString.propertyId = "FolderName"; objInputProps[0] = objString; // -Parent property CEWSI.ObjectSpecification objSpec = new CEWSI.ObjectSpecification(); CEWSI.SingletonObject objObject = new CEWSI.SingletonObject(); objSpec.classId = "Folder"; objSpec.path = txtParent.Text; objSpec.objectStore = MainForm.Library; objObject.propertyId = "Parent"; objObject.Value = (CEWSI.ObjectEntryType)objSpec; objInputProps[1] = objObject; // Fill in the security headers... CEWSI.FNCEWS40PortTypeClient objBinding = WSIUtil.ConfigureBinding(MainForm.User, MainForm.Domain, MainForm.Password, MainForm.URL); // Send off the request CEWSI.ChangeResponseType[] objResponseArray = null; CEWSI.ExecuteChangesRequest objRequest = new CEWSI.ExecuteChangesRequest(); objRequest.refresh = true; objRequest.refreshSpecified = true; objRequest.ChangeRequest = new CEWSI.ChangeRequestType[1]; objRequest.ChangeRequest[0] = objChange; try { objResponseArray = objBinding.ExecuteChanges(WSIUtil.GetLocalization(), objRequest); } catch (System.Net.WebException ex) { MessageBox.Show("An exception occurred while creating a folder: [" + ex.Message + "]"); return; } catch (Exception allEx) { MessageBox.Show("An exception occurred: [" + allEx.Message + "]"); return; } // Created a folder! Sanity check the results string strObjectId = ""; bool bFound = false; if (objResponseArray == null || objResponseArray.Length < 1) { MessageBox.Show("The change request was executed, but a valid object was not returned"); return; } CEWSI.ChangeResponseType objResponse = objResponseArray[0]; foreach (CEWSI.PropertyType objProp in objResponse.Property) { if (objProp.propertyId.CompareTo("Id") == 0) { strObjectId = IdmObjectType.getPropertyValue(objProp); bFound = true; break; } } if (!bFound) { MessageBox.Show("The folder was created, but the results do not contain a folder ID!"); return; } MessageBox.Show("Successfully created a folder! ID = [" + strObjectId + "]"); return; }