protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            if (_rockContext == null)
            {
                _rockContext = new RockContext();
            }

            if (_workflowService == null)
            {
                _workflowService = new WorkflowService(_rockContext);
            }
            var paramWorkflowId = PageParameter("WorkflowId");

            WorkflowId = paramWorkflowId.AsIntegerOrNull();
            if (!WorkflowId.HasValue)
            {
                Guid guid = PageParameter("WorkflowGuid").AsGuid();
                if (!guid.IsEmpty())
                {
                    _workflow = _workflowService.Queryable()
                                .Where(w => w.Guid.Equals(guid))
                                .FirstOrDefault();
                    if (_workflow != null)
                    {
                        WorkflowId = _workflow.Id;
                    }
                }
            }

            if (WorkflowId.HasValue)
            {
                if (_workflow == null)
                {
                    _workflow = _workflowService.Queryable()
                                .Where(w => w.Id == WorkflowId.Value)
                                .FirstOrDefault();
                }
                //-------------------------------
                if (_workflow != null)
                {
                    _workflow.LoadAttributes();
                }
            }

            if (_workflow != null)
            {
                if (_workflow.IsActive)
                {
                    int personId = CurrentPerson != null ? CurrentPerson.Id : 0;
                    foreach (var activity in _workflow.Activities
                             .Where(a =>
                                    a.IsActive &&
                                    (
                                        (!a.AssignedGroupId.HasValue && !a.AssignedPersonAliasId.HasValue) ||
                                        (a.AssignedPersonAlias != null && a.AssignedPersonAlias.PersonId == personId) ||
                                        (a.AssignedGroup != null && a.AssignedGroup.Members.Any(m => m.PersonId == personId))
                                    )
                                    )
                             .OrderBy(a => a.ActivityType.Order))
                    {
                        if ((activity.ActivityType.IsAuthorized(Authorization.VIEW, CurrentPerson)))
                        {
                            foreach (var action in activity.ActiveActions)
                            {
                                if (action.ActionType.WorkflowForm != null && action.IsCriteriaValid)
                                {
                                    _activity = activity;
                                    _activity.LoadAttributes(_rockContext);
                                }
                            }
                        }
                    }

                    if (_activity != null)
                    {
                        var entryPage = _workflow.GetAttributeValue("EntryFormPage");

                        if (!String.IsNullOrEmpty(entryPage))
                        {
                            var queryParams = new Dictionary <string, string>();
                            queryParams.Add("WorkflowTypeId", _activity.Workflow.WorkflowTypeId.ToString());
                            queryParams.Add("WorkflowId", _activity.WorkflowId.ToString());

                            var attrsToSend = GetAttributeValue("WorkflowAttributes");

                            if (!String.IsNullOrWhiteSpace(attrsToSend))
                            {
                                foreach (var attr in attrsToSend.Split(','))
                                {
                                    var attrName = attr.Trim();
                                    if (!String.IsNullOrEmpty(_activity.GetAttributeValue(attrName)))
                                    {
                                        queryParams.Add(attrName, _activity.GetAttributeValue(attrName));
                                    }
                                    else if (!String.IsNullOrEmpty(_activity.Workflow.GetAttributeValue(attrName)))
                                    {
                                        queryParams.Add(attrName, _activity.Workflow.GetAttributeValue(attrName));
                                    }
                                }
                            }

                            var pageReference = new Rock.Web.PageReference(entryPage, queryParams);

                            bool paramsDiffer = false;

                            foreach (var pair in queryParams)
                            {
                                if (pair.Value != PageParameter(pair.Key))
                                {
                                    paramsDiffer = true;
                                    break;
                                }
                            }

                            if (paramsDiffer || (pageReference.PageId != CurrentPageReference.PageId))
                            {
                                Response.Redirect(pageReference.BuildUrl(), true);
                            }
                        }
                    }
                }
            }
        }