Beispiel #1
0
        /// <summary>
        /// Defines the entry point of the application.
        /// </summary>
        /// <param name="args">The arguments.</param>
        static void Main(string[] args)
        {
            IAsyncLogger logger               = O365GroupsFactory.GetLogger(new string[] { Constants.AppSettings.LoggerInstanceKey }) as IAsyncLogger;
            var          siteMapFileName      = ConfigurationManager.AppSettings[Constants.AppSettings.SiteMapKey];
            var          siteMapSheetName     = ConfigurationManager.AppSettings[Constants.AppSettings.SiteMapSheetKey];
            var          userMappingFileName  = ConfigurationManager.AppSettings[Constants.AppSettings.UserMappingKey];
            var          userMappingSheetName = ConfigurationManager.AppSettings[Constants.AppSettings.UserMappingSheetKey];
            var          retryCount           = int.Parse(ConfigurationManager.AppSettings[Constants.AppSettings.RetryCountKey]);
            var          delay     = int.Parse(ConfigurationManager.AppSettings[Constants.AppSettings.DelayKey]);
            var          userAgent = ConfigurationManager.AppSettings[Constants.AppSettings.UserAgentKey];

            logger.Log("Reading Files...");
            var csvOperation   = new CSVOperations();
            var siteMapDetails = csvOperation.ReadFile(Constants.SiteMapSheet, siteMapFileName, siteMapSheetName).Cast <SiteMapReport>().ToList();

            SecurityPrincipal.UserMappingList = csvOperation.ReadFile(Constants.UserMappingSheet, userMappingFileName, userMappingSheetName).Cast <UserMappingReport>().ToList();

            if (siteMapDetails != null)
            {
                SecureString sourcePassword = GetSecureString(Constants.PasswordMessageSource);
                SecureString targetPassword = GetSecureString(Constants.PasswordMessageTarget);
                Object       lockObj        = new Object();

                //Stopwatch watch = new Stopwatch();
                //watch.Start();

                List <ModernWeb> websList = new List <ModernWeb>();
                logger.Log("Processing read sites from CSV");

                foreach (var siteMap in siteMapDetails)
                {
                    logger.Log("Reading " + siteMap.SourceSiteUrl);


                    var modernWeb = new ModernWeb
                    {
                        SourceSiteUrl  = siteMap.SourceSiteUrl,
                        TargetSiteUrl  = siteMap.TargetSiteUrl,
                        SourceUserName = siteMap.SourceUser,
                        TargetUserName = siteMap.TargetUser,
                        SourcePassword = sourcePassword,
                        TargetPassword = targetPassword
                    };

                    WebsOperation websOperation = new WebsOperation(logger, retryCount, delay, userAgent);
                    websOperation.ModernWeb = modernWeb;
                    websOperation.MigrateWebs();
                }

                //watch.Stop();
                logger.Log("Processing complete");
                Console.WriteLine("Processing Complete");
                //Console.WriteLine("Elapsed Time " + watch.Elapsed.ToString());
            }

            Console.ReadLine();
        }
Beispiel #2
0
        /// <summary>
        /// Connects the target.
        /// </summary>
        /// <param name="modernWeb">The modern web.</param>
        /// <param name="sourcePageItemsCollection">The source page items collection.</param>
        private ListItem ConnectTarget(ModernWeb modernWeb, ListItemCollection sourcePageItemsCollection)
        {
            Logger.Log("Entered ConnectTarget for " + modernWeb.TargetSiteUrl);
            ListItem targetItem = null;

            if (modernWeb != null)
            {
                try
                {
                    var sourceContext     = modernWeb.ClientContext;
                    var authManagerTarget = new AuthenticationManager();

                    using (var targetContext = authManagerTarget.GetSharePointOnlineAuthenticatedContextTenant(modernWeb.TargetSiteUrl, modernWeb.TargetUserName, modernWeb.TargetPassword))
                    {
                        sourceContext.ExecutingWebRequest += delegate(object sender, WebRequestEventArgs e)
                        {
                            e.WebRequestExecutor.WebRequest.UserAgent = UserAgent;
                        };

                        var targetSite = targetContext.Site;
                        var targetWeb  = targetContext.Web;

                        targetContext.Load(targetSite);
                        targetContext.Load(targetWeb,
                                           w => w.SiteGroups,
                                           w => w.SiteGroups.Include(sg => sg.LoginName),
                                           w => w.Title,
                                           w => w.RoleDefinitions,
                                           w => w.WebTemplate);
                        targetContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);

                        //var webTemplate = web.WebTemplate;
                        //if (webTemplate == Constants.WebTemplate)
                        //{
                        targetItem = CreatePage(sourcePageItemsCollection, sourceContext, targetContext, targetWeb);

                        //}
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogError("Error in Connecting to target site " + modernWeb.TargetSiteUrl + Environment.NewLine + ex.Message);
                    throw ex;
                }
            }

            return(targetItem);
        }
Beispiel #3
0
        /// <summary>
        /// Gets the page items collection.
        /// </summary>
        /// <param name="modernWeb">The modern web.</param>
        /// <returns>ListItemCollection.</returns>
        public ListItemCollection GetPageItemsCollection(ModernWeb modernWeb)
        {
            Logger.Log("Enterned GetPageItemsCollection for " + modernWeb.SourceSiteUrl);
            ListItemCollection items = null;

            if (modernWeb != null)
            {
                var sourceContext = modernWeb.ClientContext;
                var rootWeb       = modernWeb.Web;
                var webTemplate   = modernWeb.Web.WebTemplate;

                //if (webTemplate == Constants.WebTemplate)
                //{
                try
                {
                    var listTitle     = Constants.ModernPageLibrary;
                    var list          = rootWeb.Lists.GetByTitle(listTitle);
                    var migrationType = ConfigurationManager.AppSettings[Constants.AppSettings.MigrationTypeKey];

                    //Check if we only want Modern Page to work with
                    if (MigrationType.All == (MigrationType)Enum.Parse(typeof(MigrationType), migrationType))
                    {
                        items = list.GetItems(CamlQuery.CreateAllItemsQuery());
                    }
                    else
                    {
                        var query = new CamlQuery();
                        query.ViewXml = Constants.ModernPageQueryString;
                        items         = list.GetItems(query);
                    }
                    modernWeb.ClientContext.Load(items, icol => icol.Include(
                                                     i => i[Constants.FirstPublishedDate],
                                                     i => i[Constants.BannerImageUrl],
                                                     i => i[Constants.ContentTypeId],
                                                     i => i[Constants.Description],
                                                     i => i[Constants.OriginalSourceUrl],
                                                     i => i[Constants.PromotedState],
                                                     i => i[Constants.PageLayoutType],
                                                     i => i[Constants.Author],
                                                     i => i[Constants.Editor],
                                                     i => i[Constants.Created],
                                                     i => i[Constants.Modified],
                                                     i => i[Constants.FileLeafRef],
                                                     i => i[Constants.FileRef],
                                                     i => i[Constants.PageLayoutType],
                                                     i => i[Constants.ClientSideApplicationId],
                                                     i => i[Constants.LayoutWebpartsContent],
                                                     i => i[Constants.WikiPageContentControl],
                                                     i => i[Constants.ModernPageContentControl],
                                                     i => i.ContentType,
                                                     i => i.DisplayName,
                                                     i => i.ParentList,
                                                     i => i.Client_Title,
                                                     i => i.HasUniqueRoleAssignments,
                                                     i => i.RoleAssignments,
                                                     i => i.RoleAssignments.Include(
                                                         ra => ra.Member,
                                                         ra => ra.Member.LoginName,
                                                         ra => ra.Member.PrincipalType,
                                                         ra => ra.RoleDefinitionBindings,
                                                         ra => ra.RoleDefinitionBindings.Include(rd => rd.RoleTypeKind))));
                    sourceContext.ExecuteQueryWithIncrementalRetry(RetryCount, Delay);
                }
                catch (Exception ex)
                {
                    Logger.LogError("Error in GetPageItemsCollection" + Environment.NewLine + ex.Message);
                    throw ex;
                }
                //}
            }

            return(items);
        }