private byte[] ExportEntityRibbonByteArray(string entityName, RibbonLocationFilters filter)
        {
            RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
            {
                RibbonLocationFilter = filter,
                EntityName           = entityName,
            };

            RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_service.Execute(entRibReq);

            return(entRibResp.CompressedEntityXml);
        }
예제 #2
0
        private byte[] ExportEntityRibbonByteArray(string entityName, RibbonLocationFilters filter)
        {
            RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
            {
                RibbonLocationFilter = filter,
                EntityName           = entityName,
            };

            RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_service.Execute(entRibReq);

            string fileName  = entityName.ToLower() + ".zip";
            string directory = FileOperations.GetConnectionIntellisenseDataFolderPathRibbons(this._service.ConnectionData.ConnectionId);

            string filePath = Path.Combine(directory, fileName);

            var arrayXml = FileOperations.UnzipRibbon(entRibResp.CompressedEntityXml);

            try
            {
                File.WriteAllBytes(filePath, entRibResp.CompressedEntityXml);

                using (var memStream = new MemoryStream())
                {
                    memStream.Write(arrayXml, 0, arrayXml.Length);

                    memStream.Position = 0;

                    XDocument doc = XDocument.Load(memStream);

                    if (!_service.ConnectionData.RibbonIntellisense.EntitiesRibbonData.ContainsKey(entityName))
                    {
                        _service.ConnectionData.RibbonIntellisense.EntitiesRibbonData.TryAdd(entityName, new Intellisense.Model.RibbonIntellisenseData(entityName));
                    }

                    _service.ConnectionData.RibbonIntellisense.EntitiesRibbonData[entityName].LoadDataFromRibbon(doc);
                }
            }
            catch (Exception ex)
            {
                DTEHelper.WriteExceptionToOutput(this._service.ConnectionData, ex);
            }

            return(arrayXml);
        }
        public void FetchRibbonItems(List <RibbonItem> ribbonItems, String exportFolder, BackgroundWorker bgWorker, Action <string> callback)
        {
            RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
            {
                RibbonLocationFilter = RibbonLocationFilters.All
            };

            int i        = 0;
            int numItems = ribbonItems.Count;

            foreach (RibbonItem item in ribbonItems)
            {
                callback(item.EntityName);
                entRibReq.EntityName = item.EntityName;
                RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + item.EntityName + "Ribbon.xml");
                File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));

                int p = Convert.ToInt32((Convert.ToDouble(++i) / Convert.ToDouble(numItems)) * 100);
                bgWorker.ReportProgress(p);
            }
        }
예제 #4
0
        public void GetRibbon()
        {
            //RetrieveApplicationRibbonRequest appribReq = new RetrieveApplicationRibbonRequest();

            //RetrieveApplicationRibbonResponse appribResp = (RetrieveApplicationRibbonResponse)_serviceProxy.Execute(appribReq);

            RetrieveEntityRibbonRequest req = new RetrieveEntityRibbonRequest();

            req.EntityName = "account";
            RetrieveEntityRibbonResponse resp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(req);


            var wb = resp.Results;



            //assign entity to solution
            RetrieveEntityRequest retrievepowertEntityRequest = new RetrieveEntityRequest
            {
                EntityFilters = EntityFilters.Entity,
                LogicalName   = SiteMap.EntityLogicalName,
            };
            RetrieveEntityResponse retrievepowerEntityResponse = (RetrieveEntityResponse)_serviceProxy.Execute(retrievepowertEntityRequest);
        }
예제 #5
0
        [STAThread] // Required to support the interactive login experience
        static void Main(string[] args)
        {
            CrmServiceClient service = null;

            try
            {
                service = SampleHelpers.Connect("Connect");
                if (service.IsReady)
                {
                    // Create any entity records that the demonstration code requires
                    SetUpSample(service);
                    #region Demonstrate
                    //Create export folder for ribbon xml files if not already exist.
                    if (!Directory.Exists(exportFolder))
                    {
                        Directory.CreateDirectory(exportFolder);
                    }

                    //Retrieve the Application Ribbon
                    var appribReq  = new RetrieveApplicationRibbonRequest();
                    var appribResp = (RetrieveApplicationRibbonResponse)service.Execute(appribReq);

                    System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
                    File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));
                    //Write the path where the file has been saved.
                    Console.WriteLine(applicationRibbonPath);
                    //Retrieve system Entity Ribbons
                    RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
                    {
                        RibbonLocationFilter = RibbonLocationFilters.All
                    };

                    foreach (System.String entityName in entitiesWithRibbons)
                    {
                        entRibReq.EntityName = entityName;
                        RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);

                        System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
                        File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                        //Write the path where the file has been saved.
                        Console.WriteLine(entityRibbonPath);
                    }

                    //Check for custom entities
                    var raer = new RetrieveAllEntitiesRequest()
                    {
                        EntityFilters = EntityFilters.Entity
                    };

                    var resp = (RetrieveAllEntitiesResponse)service.Execute(raer);

                    foreach (EntityMetadata em in resp.EntityMetadata)
                    {
                        if (em.IsCustomEntity == true && em.IsIntersect == false)
                        {
                            entRibReq.EntityName = em.LogicalName;
                            RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)service.Execute(entRibReq);

                            System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
                            File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                            //Write the path where the file has been saved.
                            Console.WriteLine(entityRibbonPath);
                        }
                    }

                    #endregion Demonstrate

                    #region Clean up
                    CleanUpSample(service);
                    #endregion Clean up
                }
                else
                {
                    const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service";
                    if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR))
                    {
                        Console.WriteLine("Check the connection string values in cds/App.config.");
                        throw new Exception(service.LastCrmError);
                    }
                    else
                    {
                        throw service.LastCrmException;
                    }
                }
            }
            catch (Exception ex)
            {
                SampleHelpers.HandleException(ex);
            }

            finally
            {
                if (service != null)
                {
                    service.Dispose();
                }

                Console.WriteLine("Press <Enter> to exit.");
                Console.ReadLine();
            }
        }
        /// <summary>
        /// This method first connects to the Organization service. Afterwards,
        /// basic create, retrieve, update, and delete entity operations are performed.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    //Create export folder for ribbon xml files if not already exist.
                    if (!Directory.Exists(exportFolder))
                    {
                        Directory.CreateDirectory(exportFolder);
                    }

                    //Retrieve the Appliation Ribbon
                    RetrieveApplicationRibbonRequest  appribReq  = new RetrieveApplicationRibbonRequest();
                    RetrieveApplicationRibbonResponse appribResp = (RetrieveApplicationRibbonResponse)_serviceProxy.Execute(appribReq);

                    System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
                    File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));
                    //Write the path where the file has been saved.
                    Console.WriteLine(applicationRibbonPath);
                    //Retrieve system Entity Ribbons
                    RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
                    {
                        RibbonLocationFilter = RibbonLocationFilters.All
                    };

                    foreach (System.String entityName in entitiesWithRibbons)
                    {
                        entRibReq.EntityName = entityName;
                        RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                        System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
                        File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                        //Write the path where the file has been saved.
                        Console.WriteLine(entityRibbonPath);
                    }

                    //Check for custom entities
                    RetrieveAllEntitiesRequest raer = new RetrieveAllEntitiesRequest()
                    {
                        EntityFilters = EntityFilters.Entity
                    };

                    RetrieveAllEntitiesResponse resp = (RetrieveAllEntitiesResponse)_serviceProxy.Execute(raer);

                    foreach (EntityMetadata em in resp.EntityMetadata)
                    {
                        if (em.IsCustomEntity == true && em.IsIntersect == false)
                        {
                            entRibReq.EntityName = em.LogicalName;
                            RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                            System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
                            File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                            //Write the path where the file has been saved.
                            Console.WriteLine(entityRibbonPath);
                        }
                    }
                }
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
        /// <summary>
        /// This method first connects to the Organization service. Afterwards,
        /// basic create, retrieve, update, and delete entity operations are performed.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                //<snippetExportRibbonXml1>
                // Connect to the Organization service.
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = ServerConnection.GetOrganizationProxy(serverConfig))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    //Create export folder for ribbon xml files if not already exist.
                    if (!Directory.Exists(exportFolder))
                    {
                        Directory.CreateDirectory(exportFolder);
                    }

                    //<snippetExportRibbonXml3>
                    //Retrieve the Appliation Ribbon
                    RetrieveApplicationRibbonRequest  appribReq  = new RetrieveApplicationRibbonRequest();
                    RetrieveApplicationRibbonResponse appribResp = (RetrieveApplicationRibbonResponse)_serviceProxy.Execute(appribReq);

                    System.String applicationRibbonPath = Path.GetFullPath(exportFolder + "\\applicationRibbon.xml");
                    File.WriteAllBytes(applicationRibbonPath, unzipRibbon(appribResp.CompressedApplicationRibbonXml));
                    //</snippetExportRibbonXml3>
                    //Write the path where the file has been saved.
                    Console.WriteLine(applicationRibbonPath);
                    //<snippetExportRibbonXml4>
                    //Retrieve system Entity Ribbons
                    RetrieveEntityRibbonRequest entRibReq = new RetrieveEntityRibbonRequest()
                    {
                        RibbonLocationFilter = RibbonLocationFilters.All
                    };

                    #region retrieval code

                    bool isDone = false;
                    while (!isDone)
                    {
                        Console.WriteLine("\nRetrieve all ribbons or specific ribbons? (a)ll/(s)pecific: ");
                        string input = Console.ReadLine();

                        if (input == "a")
                        {
                            foreach (System.String entityName in entitiesWithRibbons)
                            {
                                entRibReq.EntityName = entityName;
                                RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                                System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
                                File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                                //Write the path where the file has been saved.
                                Console.WriteLine(entityRibbonPath);
                            }

                            //</snippetExportRibbonXml4>

                            //<snippetExportRibbonXml5>
                            //Check for custom entities
                            RetrieveAllEntitiesRequest raer = new RetrieveAllEntitiesRequest()
                            {
                                EntityFilters = EntityFilters.Entity
                            };

                            RetrieveAllEntitiesResponse resp = (RetrieveAllEntitiesResponse)_serviceProxy.Execute(raer);

                            foreach (EntityMetadata em in resp.EntityMetadata)
                            {
                                if (em.IsCustomEntity == true && em.IsIntersect == false)
                                {
                                    entRibReq.EntityName = em.LogicalName;
                                    RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                                    System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
                                    File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                                    //Write the path where the file has been saved.
                                    Console.WriteLine(entityRibbonPath);
                                }
                            }

                            isDone = true;
                        }
                        else if (input == "s")
                        {
                            // first do system entities
                            int i = 0;
                            foreach (System.String entityName in entitiesWithRibbons)
                            {
                                Console.WriteLine("[{0}] {1}", i++, entityName);
                            }
                            Console.WriteLine("Enter the numbers of the entities to download, separated by commas: ");
                            string   entityNums    = Console.ReadLine();
                            string[] entityNumsArr = entityNums.Split(new char[] { ',' });

                            foreach (string numStr in entityNumsArr)
                            {
                                int num;
                                if (Int32.TryParse(numStr, out num))
                                {
                                    if (num >= 0 && num < entitiesWithRibbons.Length)
                                    {
                                        string entityName = entitiesWithRibbons[num];
                                        entRibReq.EntityName = entityName;
                                        RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                                        System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + entityName + "Ribbon.xml");
                                        File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                                        //Write the path where the file has been saved.
                                        Console.WriteLine(entityRibbonPath);
                                    }
                                    else
                                    {
                                        Console.WriteLine("No element index {0} in entitiesWithRibbons, skipping...", num);
                                    }
                                }
                            }

                            // next check for custom entities
                            RetrieveAllEntitiesRequest raer = new RetrieveAllEntitiesRequest()
                            {
                                EntityFilters = EntityFilters.Entity
                            };
                            RetrieveAllEntitiesResponse resp = (RetrieveAllEntitiesResponse)_serviceProxy.Execute(raer);

                            i = 0;
                            foreach (EntityMetadata em in resp.EntityMetadata)
                            {
                                if (em.IsCustomEntity == true && em.IsIntersect == false)
                                {
                                    Console.WriteLine("[{0}] {1}", i, em.LogicalName);
                                }
                                i++;
                            }
                            Console.WriteLine("Enter the numbers of the entities to download, separated by commas: ");
                            entityNums    = Console.ReadLine();
                            entityNumsArr = entityNums.Split(new char[] { ',' });

                            //foreach (EntityMetadata em in resp.EntityMetadata)
                            foreach (string numStr in entityNumsArr)
                            {
                                int index;
                                if (Int32.TryParse(numStr, out index))
                                {
                                    if (index >= 0 && index < resp.EntityMetadata.Length)
                                    {
                                        EntityMetadata em = resp.EntityMetadata[index];
                                        if (em.IsCustomEntity == true && em.IsIntersect == false)
                                        {
                                            entRibReq.EntityName = em.LogicalName;
                                            RetrieveEntityRibbonResponse entRibResp = (RetrieveEntityRibbonResponse)_serviceProxy.Execute(entRibReq);

                                            System.String entityRibbonPath = Path.GetFullPath(exportFolder + "\\" + em.LogicalName + "Ribbon.xml");
                                            File.WriteAllBytes(entityRibbonPath, unzipRibbon(entRibResp.CompressedEntityXml));
                                            //Write the path where the file has been saved.
                                            Console.WriteLine(entityRibbonPath);
                                        }
                                    }
                                }
                            }
                            Console.WriteLine("");


                            isDone = true;
                        }
                    }
                    #endregion
                }
                //</snippetExportRibbonXml5>
                //</snippetExportRibbonXml1>
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }