public override object this[string name] {
            set {
                SiteProperty prop;
                var          sitePropetiesCollection = GetSitePropertiesCollection();
                if (sitePropetiesCollection.TryGetValueByName(name, out prop))
                {
                    // Check if it is a system var
                    if (prop.Key == null)
                    {
                        throw (new ArgumentException("The site property '" + name + "' is a system property and cannot be changed."));
                    }
                    if (prop.Value != value)
                    {
                        string databaseValue = prop.ChangeValue(value);

                        HeContext heContext = AppInfo.GetAppInfo().OsContext;
                        GenericExtendedActions.UpdateSiteProperty(heContext, prop.DefId, prop.IsShared, databaseValue);
                        heContext.QueueEspaceToInvalidate(this.ESpaceId, prop.IsShared ? 0 : heContext.Session.TenantId);
                    }
                }
                else
                {
                    throw (new ArgumentException("The site property '" + name + "' does not exist."));
                }
            }
        }