SAP Netweaver 7.5 with MaxDB 7.9 on Azure using Azure NetApp Files (ANF)
Overview
This article describes the setup of SAP ERP 7.5 with MaxDB 7.9. In addition, we will show how to use azacsnap to create application consistent snapshots. This article is written for an audience which are familiar with Azure, Linux and SAP Basis. Since the login mechanism changed in version 7.7 we can only support the MaxDB 7.9 with all the automation scripts explained here iin the documentation.
This illustration is a short overview of the system setup.
Create the Environment
The VM
SubscriptionSAP your subscribtion Resource group (new) ralfMaxDB Virtual machine name ralfmaxdb01 Region East US Availability options Availability zone Availability zone 1 Security type Standard Image SUSE Enterprise Linux 15 SP3 +Patching - Gen2 VM architecture x64 Size Standard E16-8ads v5 (8 vcpus, 128 GiB memory) Authentication type Password Username admin01
Create the delegated network for ANF
Create the Volume Structure
Download the sources from the SAP Marketplace
The DB Export
The SWPM
The MaxDB
The SAPCAR
The Kernel
The IGS
Finally, the HOST Agent.
Volume design on ANF
Create the volume structure on ANF. The size of each volume depends on a proper capacity and performance sizing.
Mount the volumes and create the directories.
Modify the idmapd to align the NFSv4 domain.
vi /etc/idmapd.conf # Example [General] Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody
update the system
zypper up
Install the RPM’s regarding the installation manual
zypper in motif libXtst-devel libXp-devel libX11-devel libSM-devel libICE-devel
reboot the system to apply all the changes and reload the kernel after the update.
reboot
Check that sapconf is running and that it is enabled.
sapconf_check This is sapconf_check v1.0. It verifies if sapconf is set up correctly and will give advice to do so. Please keep in mind: - This tool does not check, if the tuning itself works correctly. - Follow the hints from top to down to minimize side effects. Checking sapconf ================ [ OK ] sapconf package has version 5.0.5 [ OK ] sapconf.service is active [ OK ] sapconf.service is enabled Sapconf is set up correctly.
create the group ID for your SAP systems (should be the same for all SAP systems)
groupadd sapsys -g 79
groupadd sdba -g 1001
creating the DB users to avoid issues during the DB installation
As usual, create one shared volume for the Application Server part , a MaxDB volume for the database specific directories, data and log volume and the backup volume ideally on a different storage endpoint.
In this PoC we have all storage endpoints on one IP, which is okay for small and medium installations.
set the root password on the VM (required for the SAP installation)
sudo su – passwd Changing password for user root. New password: ********* Retype new password: ******* passwd: all authentication tokens updated successfully.
After the ASCS is installed we now install the MaxDB and load the content into it.
ralfmaxdb01:/Software/SWPM # ./sapinst cd /Software/MaxDB mkdir DB Patch mv unzip 51052559_8.ZIP DB mv 51054410_2.ZIP Patch/ cd DB unzip 51052559_8.ZIP
dbmcli on C11> backup_template_create d1 to FILE /sapdb/C11/backup/data/DAT0001 CONTENT DATA
Create template l1 for log backup:
dbmcli on DB1> backup_template_create l1 to FILE /sapdb/C11/backup/log/LOG0001 CONTENT LOG
Starting a backup
db_connect backup_start d1
check the data backup location
ls -lh /sapdb/C11/backup/data/ -rw-rw---- 1 sdb sdba 24G Mar 7 19:39 DAT0001
Checking a backup after completion
medium_label d1 OK Returncode 0 Date 20230307 Time 00193608 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame Location /sapdb/C11/backup/data/DAT0001 Errortext Label DAT_000000001 Is Consistent true First LOG Page 6939 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00193608 Page Count 3044252 Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Converter Page Count 1681
As of SAP MaxDB Version 7.8 you can use external filer snapshot in combination with SAP MaxDB snapshot to create a consistent backup in online database mode.
As of version 7.7 you can freeze the data area of a SAP MaxDB using internal database snapshots.
A snapshot can be created in the ONLINE operational state.
As of SAP MaxDB version 7.8 you can perform a complete data backup with an external file system snapshot in the operational state ONLINE in combination with a SAP MaxDB Database Snapshot.
First a SAP MaxDB (internal) Snapshot is created followed by the external file snapshot.
While this backup procedure the database is in online mode and the users can work with the application. Moreover, this procedure guarantees that this external file system backup is included in the backup history.
The Log area is never part of this backup procedure.
In response to this command, the system displays the following output:
OK
Returncode -8020
...
Max Used Data Page 0
The return code -8020 together with the number of maximum used data pages (Max Used Data Page), in this case 0, displays in this case that the complete data backup was successfully started.
Create the Snapshot
backup_template_create External_Snapshot TO EXTERNAL SNAPSHOT db_connect backup_start External_Snapshot OK Returncode -8020 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count ---
take the snapshot with azacsnap on ANF than finish the backup
backup_finish External_Snapshot ExternalBackupID 202303071508 OK Returncode 0 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count
Crash the system by sending the sysrequest trigger b
echo b > /proc/sysrq-trigger
umount the data volume before we restore the snapshot
umount /sapdb/C11/sapdata
restore the SnapShot
Remount the volume and start the DB for the automated recovery
mount -a
go to Restore the database --> further down
Creating automated DB SnapShots
A MaxDB Snapshot must be created before taking a storage Snapshot. The database will be set into a consistent state by quiescing the database. The following steps show how to perform database backup by using a storage Snapshot copy.
Azacsnap is supporting only HANA, DB2 and Oracle at the moment. It is, however, possible to take a snapshot from the data volume and use the new feature in the version 6 with pre and post automation.
Create the service principal for your subscription and install azacsnap – in the Azure Portal
Store the output in a file I used /tmp/auth.json
az ad sp create-for-rbac --name "AzAcSnap" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
You will get an output which looks similar to this:
Create an auth.conf file and copy the content into this file
vi /tmp/auth.json
ls -l /Software/azacsnap* admin01 users 16478438 Mar 8 15:30 /Software/azacsnap_7a_(1AA8343)_installer.run
Install azacsnap
cd /Software/ ralfmaxdb01:/Software # chmod 755 azacsnap_7a_\(1AA8343\)_installer.run ./azacsnap_7a_\(1AA8343\)_installer.run -I
Configure azacsnap
su - azacsnap azacsnap -c configure --configuration=new Building new config file Add comment to config file (blank entry to exit adding comments): MaxDB Add comment to config file (blank entry to exit adding comments): Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): hana === Add SAP HANA Database details === HANA SID (e.g. H80): C11 HANA Instance Number (e.g. 00): 00 HANA HDB User Store Key (e.g. `hdbuserstore List`): ADMIN HANA Server's Address (hostname or IP address): 10.6.0.4 Do you need AzAcSnap to automatically disable/enable backint during snapshot? (y/n) [n]: === Azure NetApp Files Storage details === Are you using Azure NetApp Files for the database? (y/n) [n]: y Enter new value for 'ANF Backup (none, renameOnly)' (current = 'none'): renameOnly --- DATA Volumes have the Application put into a consistent state before they are snapshot --- Add Azure NetApp Files resource to DATA Volume section of Database configuration? (y/n) [n]: --- OTHER Volumes are snapshot immediately without preparing any application for snapshot --- Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: y Full Azure NetApp Files Storage Volume Resource ID (e.g. /subscriptions/.../resourceGroups/.../providers/Microsoft.NetApp/netAppAccounts/.../capacityPools/Premium/volumes/...): /subscriptions/da/resourceGroups/ralfMaxDB/providers/Microsoft.NetApp/netAppAccounts/ralfmaxdbanf/capacityPools/ralfMaxDB/volumes/C11data Service Principal Authentication filename or Azure Key Vault Resource ID (e.g. auth-file.json or https://...): auth.json Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: === Azure Managed Disk details === Are you using Azure Managed Disks for the database? (y/n) [n]: === Azure Large Instance (Bare Metal) Storage details === Are you using Azure Large Instance (Bare Metal) for the database? (y/n) [n]: Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): exit Editing configuration complete, writing output to 'azacsnap.json'.
Test the storage connection, at this point we “only” can test the storage connection. The ASE backup-mode will be scheduled as “runbefore” and “runafter”.
azacsnap -c test --test storage –preview PASSED: Storage test completed successfully for all 'other' Volumes END : Storage tests complete END : Test process complete for 'storage'
Create the .bashrc for the azacsnap user (compare the environment from the SIDadm user)
vi .bashrc test -s ~/.alias && . ~/.alias || true export PATH=$PATH:/sapdb/clients/C11/bin:/sapdb/programs/bin export LD_LIBRARY_PATH=/usr/sap/C11/SYS/exe/run:/usr/sap/C11/SYS/exe/uc/linuxx86_64:/sapdb/clients/C11/lib export LANG=C.UTF-8
create the user key
xuser set -U ADMIN -d C11 -u superdba,<pwd>
Test the dbmcli connection using the user-key
dbmcli -U ADMIN dbmcli on C11>quit
Create the two Quiece and Unquiece scripts. (no Microsoft support) this is only an example.
vi cat MaxDBQuiece.sh #!/bin/bash SID="$1" KEY="$2" DATE="`date +%m-%d-%Y`" LOGFILE="/tmp/MaxDM_Snapshot${SID}.log" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s "$LOGFILE") if [[ "$SID" == "" || "$KEY" == "" ]]; then echo "Usage: `basename $0` <SID> <USERSTOREKEY>" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_start myserver background_server_execute myserver db_connect background_server_get_reply myserver -wait background_server_execute myserver backup_start External_Snapshot DATA background_server_get_reply myserver -wait EOF echo "Size of $LOGFILE = $FILESIZE bytes." >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo "Moving the MaxDM Snapshot logfile to a backup" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo "Logfilesize OK" >>$LOGFILE fi echo "`date` Creating MaxDB SnapShot" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d "[:blank:]"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo "Returncode = $?" >>$LOGFILE rm $sqlFile
vi MaxDBunQuiece.sh #!/bin/bash SID="$1" KEY="$2" DATE="`date +%m-%d-%Y`" LOGFILE="/tmp/MaxDM_Snapshot${SID}.log" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s "$LOGFILE") if [[ "$SID" == "" || "$KEY" == "" ]]; then echo "Usage: `basename $0` <SID> <USERSTOREKEY>" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_execute myserver backup_finish External_Snapshot ExternalBackupID ANFSnapShot background_server_get_reply myserver -wait background_server_exit myserver EOF echo "Size of $LOGFILE = $FILESIZE bytes." >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo "Moving the MaxDM Snapshot logfile to a backup" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo "Logfilesize OK" >>$LOGFILE fi echo "`date` Creating MaxDB SnapShot" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d "[:blank:]"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo "Returncode = $?" >>$LOGFILE rm $sqlFile
chmod 755 MaxDB*
create the cron script to schedule the azacsnap call
NAME d1 CONTENT DATA CREATIONDATE 20230307193424 MODIFICATIONDATE 20230307193424 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/data/DAT0001 OVERWRITE NO COMPRESSED NO NAME l1 CONTENT AUTO CREATIONDATE 20230307193440 MODIFICATIONDATE 20230307193440 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/log/LOG0001 OVERWRITE NO COMPRESSED NO
NAME External_Snapshot CONTENT DATA CREATIONDATE 20230307201008 MODIFICATIONDATE 20230307201008 TOOL DBMC BLOCKSIZE 8 DATACARRIER TYPE EXTERNAL LOCATION OVERWRITE NO COMPRESSED NO
List the taken SnapShots
azacsnap -c details --preview >>> Preview Feature 'ANF Backup' enabled in config file 'azacsnap.json'. ================================================================================ PREVIEWS ARE PROVIDED "AS-IS," "WITH ALL FAULTS," AND "AS AVAILABLE," AND ARE EXCLUDED FROM THE SERVICE LEVEL AGREEMENTS AND LIMITED WARRANTY https://azure.microsoft.com/support/legal/preview-supplemental-terms/ ================================================================================ User has enabled execution of PREVIEW features with '--preview'. -------------------------------------------------------------------------------- List snapshot details called with snapshotFilter '' #, Volume, SnapshotName, Created #1, C11data, Backup_202303141218, 14-Mar-2023 11:18:44am (UTC+0) #2, C11data, Backup_202303141215, 14-Mar-2023 11:15:20am (UTC+0) #3, C11data, Backup_202303131057, 13-Mar-2023 9:57:42am (UTC+0)
Restore using azacsnap
Shutdown SAP and ASE (if possible – if not simply “kill” the DB. We are restoring anyway.
stopsap all
umount the data volume
umount /sapdb/C11/sapdata
At the moment azacsnap does not support “Revert Volume” for ANF. If you would like to keep the volume names you have the option to “revert a volume using the Azure Portal.
Azure NetApp Files volumes not supported for revertvolume, will not revert volume.
With ANF you do have the option to clone a volume. This is probably the better option anyway. How to clone a volume for a recovery is demonstrated here:
AzAcSnap is designed to restore a collection of dataVolumes and otherVolumes. AzAcSnap makes sure all the dataVolumes share the same snapshot to be restored and the otherVolumes the latest snapshot to be restored. In a deployment with multiple data volumes (e.g., SAP HANA Scale-Out) this can save a lot of time trying to ensure all the snapshots match in the Azure Portal before cloning or reverting the volumes. This means when using a setup with custom scripts to quiesce/unquiesce the database it's necessary to create a copy of the backup configfile and change "otherVolume" to "dataVolume" and change "dataVolume" to "otherVolume" effectively switching them.
pwd /home/azacsnap/bin grep rwclone ./logs/*.log … Creating new volume 'ralfc11data-rwclone-20221111-0732' … Volume 'ralfc11data-rwclone-20221111-0732' successfully created from snapshot. … … Creating new volume 'ralfc11sybase-rwclone-20221111-0732' … Volume 'ralfc11sybase-rwclone-20221111-0732' successfully created from snapshot.
Mount the cloned volume to the sapdata directory
mount -a
Recover the database
dbmcli -U ADMIN dbmcli on C11>backup_history_list -c label,action,pages,stop,media OK ... .. | DAT_000000030|SAVE WARM|0|2023-03-14 11:18:04|External_Snapshot | DAT_000000031|SAVE WARM|0|2023-03-14 11:18:57|External_Snapshot | --- dbmcli on C11>quit
Restore the latest SnapShot
dbmcli -U ADMIN db_admin OK db_connect OK recover_start External_Snapshot DATA ExternalBackupID DAT_000000031 OK
Start the DB and SAP
The Database will automatically apply the latest logfiles to the database.
su – c11adm startsap
Upgrade MaxDB
su - c11adm stopsap
as root
cd /Software/MaxDB/Patch/MaxDB_7.9___SP10_Build_05_/DATA_UNITS/MAXDB_LINUX_X86_64 ./SDBUPD –d C11 -u control,<pwd>
ANF Cross Region Replication
Azure NetApp Files volume replication is supported between various Azure regional pairs and non-standard pairs. Azure NetApp Files volume replication is currently available between the following regions. You can replicate Azure NetApp Files volumes from Regional Pair A to Regional Pair B, and vice versa.
Create an storage account in the destination region (must be the paired region (see table).
Create a VNET (if not already existing in the DR region)
Create a Capacity Pool for the DR volume (can be a different QoS level)
Create the target DR volume.
On the destination storage account overview select Add data Protection
obviously the new volume should have the same size as the destination volume.
Schedule an hourly replication for the data volume
Now authorize the source volume for the replication.
Specify the volume resource ID of the DR volume to the Source volume
Finished
Now repeat the same for the log backup volume but schedule the transfer every 10 Minutes
Crontab for snapshots and logbackup
crontab -l # create daily backups twice a day and replicate them via ANF backup 0 2,14 * * * /home/azacsnap/bin/cron_backup_daily.sh */10 * * * * /home/azacsnap/bin/cron_logbackup.sh
The second part with the log volume is optional if you set the autolog_on to 300 second (5 minutes)
Create the logbackup script
vi cron_logbackup.sh #!/bin/bash SID="$1" DATE="`date +%m-%d-%Y`" LOGFILE="/tmp/MaxDM_Logbackup${SID}.log" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s "$LOGFILE") if [[ "$SID" == "" ]]; then echo "Usage: `basename $0` <SID> " exit 1 fi echo "Size of $LOGFILE = $FILESIZE bytes." >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo "Moving the MaxDM logbackup logfile to a backup" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo "Logfilesize OK" >>$LOGFILE fi echo "`date` Creating MaxDB Logbackup" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d "[:blank:]"` dbmcli -U ADMIN -uUTL -c backup_start l1 >>$LOGFILE echo "Returncode = $?" >>$LOGFILE
as an alternative you can enable autolog backup to 300 seconds
dbmcli -U ADMIN dbmcli on C11>db_connect dbmcli on C11>autolog_off dbmcli on C11>autolog_on l1 INTERVAL 300 dbmcli on C11>db_stop dbmcli on C11>db_start dbmcli on C11>exit
"}},"componentScriptGroups({\"componentId\":\"custom.widget.MicrosoftFooter\"})":{"__typename":"ComponentScriptGroups","scriptGroups":{"__typename":"ComponentScriptGroupsDefinition","afterInteractive":{"__typename":"PageScriptGroupDefinition","group":"AFTER_INTERACTIVE","scriptIds":[]},"lazyOnLoad":{"__typename":"PageScriptGroupDefinition","group":"LAZY_ON_LOAD","scriptIds":[]}},"componentScripts":[]},"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/QueryHandler\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageCoverImage\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageCoverImage-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeTitle\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTimeToRead\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserRank\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserRank-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageBody\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageBody-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageCustomFields\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageCustomFields-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRevision\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRevision-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageReplyButton\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageReplyButton-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageAuthorBio\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/ranks/UserRankLabel\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/attachments/AttachmentView/AttachmentViewChip\"]})":[{"__ref":"CachedAsset:text:en_US-components/attachments/AttachmentView/AttachmentViewChip-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserRegistrationDate\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserRegistrationDate-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeDescription\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"components/tags/TagView/TagViewChip\"]})":[{"__ref":"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1745505309835"}],"cachedText({\"lastModified\":\"1745505309835\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505309835"}]},"CachedAsset:pages-1745487429264":{"__typename":"CachedAsset","id":"pages-1745487429264","value":[{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"AllEvents","type":"CUSTOM","urlPath":"/Events","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"CommunityHub.Page","type":"CUSTOM","urlPath":"/Directory","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730142000000,"localOverride":null,"page":{"id":"AllBlogs.Page","type":"CUSTOM","urlPath":"/blogs","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487429264,"localOverride":null,"page":{"id":"GroupHubPostPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"}],"localOverride":false},"CachedAsset:text:en_US-components/context/AppContext/AppContextProvider-0":{"__typename":"CachedAsset","id":"text:en_US-components/context/AppContext/AppContextProvider-0","value":{"noCommunity":"Cannot find community","noUser":"Cannot find current user","noNode":"Cannot find node with id {nodeId}","noMessage":"Cannot find message with id {messageId}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-0":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-0","value":{"title":"Loading..."},"localOverride":false},"User:user:-1":{"__typename":"User","id":"user:-1","uid":-1,"login":"Deleted","email":"","avatar":null,"rank":null,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":"ANONYMOUS","registrationTime":null,"confirmEmailStatus":false,"registrationAccessLevel":"VIEW","ssoRegistrationFields":[]},"ssoId":null,"profileSettings":{"__typename":"ProfileSettings","dateDisplayStyle":{"__typename":"InheritableStringSettingWithPossibleValues","key":"layout.friendly_dates_enabled","value":"false","localValue":"true","possibleValues":["true","false"]},"dateDisplayFormat":{"__typename":"InheritableStringSetting","key":"layout.format_pattern_date","value":"MMM dd yyyy","localValue":"MM-dd-yyyy"},"language":{"__typename":"InheritableStringSettingWithPossibleValues","key":"profile.language","value":"en-US","localValue":"en","possibleValues":["en-US"]}},"deleted":false},"Theme:customTheme1":{"__typename":"Theme","id":"customTheme1"},"Category:category:SAPonMicrosoft":{"__typename":"Category","id":"category:SAPonMicrosoft","entityType":"CATEGORY","displayId":"SAPonMicrosoft","nodeType":"category","depth":3,"title":"SAP on Microsoft","shortTitle":"SAP on Microsoft","parent":{"__ref":"Category:category:products-services"}},"Category:category:top":{"__typename":"Category","id":"category:top","displayId":"top","nodeType":"category","depth":0,"title":"Top","entityType":"CATEGORY","shortTitle":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","displayId":"communities","nodeType":"category","depth":1,"parent":{"__ref":"Category:category:top"},"title":"Communities","entityType":"CATEGORY","shortTitle":"Communities"},"Category:category:products-services":{"__typename":"Category","id":"category:products-services","displayId":"products-services","nodeType":"category","depth":2,"parent":{"__ref":"Category:category:communities"},"title":"Products","entityType":"CATEGORY","shortTitle":"Products"},"Blog:board:SAPApplications":{"__typename":"Blog","id":"board:SAPApplications","entityType":"BLOG","displayId":"SAPApplications","nodeType":"board","depth":4,"conversationStyle":"BLOG","title":"Running SAP Applications on the Microsoft Platform","description":"","avatar":null,"profileSettings":{"__typename":"ProfileSettings","language":null},"parent":{"__ref":"Category:category:SAPonMicrosoft"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:communities"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:products-services"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:SAPonMicrosoft"}}]},"userContext":{"__typename":"NodeUserContext","canAddAttachments":false,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"boardPolicies":{"__typename":"BoardPolicies","canPublishArticleOnCreate":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_create_workflow_action.accessDenied","args":[]}}},"shortTitle":"Running SAP Applications on the Microsoft Platform","repliesProperties":{"__typename":"RepliesProperties","sortOrder":"REVERSE_PUBLISH_TIME","repliesFormat":"threaded"},"tagProperties":{"__typename":"TagNodeProperties","tagsEnabled":{"__typename":"PolicyResult","failureReason":null}},"requireTags":false,"tagType":"FREEFORM_ONLY"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc","height":512,"width":512,"mimeType":"image/png"},"Rank:rank:4":{"__typename":"Rank","id":"rank:4","position":6,"name":"Microsoft","color":"333333","icon":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/cmstNC05WEo0blc\"}"},"rankStyle":"OUTLINE"},"User:user:303327":{"__typename":"User","id":"user:303327","uid":303327,"login":"RalfKlahr","deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0zMDMzMjctMjUyMjcwaUMxOEY4NTNBNkU0QzI2M0E"},"rank":{"__ref":"Rank:rank:4"},"email":"","messagesCount":14,"biography":null,"topicsCount":12,"kudosReceivedCount":17,"kudosGivenCount":0,"kudosWeight":1,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2019-03-19T05:19:58.490-07:00","confirmEmailStatus":null},"followersCount":null,"solutionsCount":0},"BlogTopicMessage:message:3905041":{"__typename":"BlogTopicMessage","uid":3905041,"subject":"SAP Netweaver 7.5 with MaxDB 7.9 on Azure using Azure NetApp Files (ANF)","id":"message:3905041","revisionNum":5,"repliesCount":0,"author":{"__ref":"User:user:303327"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Blog:board:SAPApplications"},"conversation":{"__ref":"Conversation:conversation:3905041"},"messagePolicies":{"__typename":"MessagePolicies","canPublishArticleOnEdit":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","key":"error.lithium.policies.forums.policy_can_publish_on_edit_workflow_action.accessDenied","args":[]}},"canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"contentWorkflow":{"__typename":"ContentWorkflow","state":"PUBLISH","scheduledPublishTime":null,"scheduledTimezone":null,"userContext":{"__typename":"MessageWorkflowContext","canSubmitForReview":null,"canEdit":false,"canRecall":null,"canSubmitForPublication":null,"canReturnToAuthor":null,"canPublish":null,"canReturnToReview":null,"canSchedule":false},"shortScheduledTimezone":null},"readOnly":false,"editFrozen":false,"moderationData":{"__ref":"ModerationData:moderation_data:3905041"},"teaser":"
This article describes the setup of SAP ERP 7.5 with MaxDB 7.9. In addition, we will show how to use azacsnap to create application consistent snapshots. This article is written for an audience which are familiar with Azure, Linux and SAP Basis. Since the login mechanism changed in version 7.7 we can only support the MaxDB 7.9 with all the automation scripts explained here iin the documentation.
","body":"
SAP Netweaver 7.5 with MaxDB 7.9 on Azure using Azure NetApp Files (ANF)
\n
Overview
\n
\n
This article describes the setup of SAP ERP 7.5 with MaxDB 7.9. In addition, we will show how to use azacsnap to create application consistent snapshots. This article is written for an audience which are familiar with Azure, Linux and SAP Basis. Since the login mechanism changed in version 7.7 we can only support the MaxDB 7.9 with all the automation scripts explained here iin the documentation.
This illustration is a short overview of the system setup.
\n
\n
\n
\n
Create the Environment
\n
The VM
\n
SubscriptionSAP your subscribtion Resource group (new) ralfMaxDB Virtual machine name ralfmaxdb01 Region East US Availability options Availability zone Availability zone 1 Security type Standard Image SUSE Enterprise Linux 15 SP3 +Patching - Gen2 VM architecture x64 Size Standard E16-8ads v5 (8 vcpus, 128 GiB memory) Authentication type Password Username admin01
\n
Create the delegated network for ANF
\n
\n
\n
Create the Volume Structure
\n
Download the sources from the SAP Marketplace
\n
The DB Export
\n
\n
\n
The SWPM
\n
\n
\n
The MaxDB
\n
\n
\n
The SAPCAR
\n
\n
\n
The Kernel
\n
\n
\n
\n
\n
The IGS
\n
\n
\n
\n
Finally, the HOST Agent.
\n
\n
\n
Volume design on ANF
\n
Create the volume structure on ANF. The size of each volume depends on a proper capacity and performance sizing.
\n
\n
Mount the volumes and create the directories.
\n
\n
Modify the idmapd to align the NFSv4 domain.
\n
vi /etc/idmapd.conf # Example [General] Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody
\n
\n
update the system
\n
zypper up
\n
Install the RPM’s regarding the installation manual
\n
zypper in motif libXtst-devel libXp-devel libX11-devel libSM-devel libICE-devel
reboot the system to apply all the changes and reload the kernel after the update.
\n
reboot
\n
Check that sapconf is running and that it is enabled.
\n
\n
sapconf_check This is sapconf_check v1.0. It verifies if sapconf is set up correctly and will give advice to do so. Please keep in mind: - This tool does not check, if the tuning itself works correctly. - Follow the hints from top to down to minimize side effects. Checking sapconf ================ [ OK ] sapconf package has version 5.0.5 [ OK ] sapconf.service is active [ OK ] sapconf.service is enabled Sapconf is set up correctly.
\n
create the group ID for your SAP systems (should be the same for all SAP systems)
\n
groupadd sapsys -g 79
\n
groupadd sdba -g 1001
\n
\n
creating the DB users to avoid issues during the DB installation
As usual, create one shared volume for the Application Server part , a MaxDB volume for the database specific directories, data and log volume and the backup volume ideally on a different storage endpoint.
\n
In this PoC we have all storage endpoints on one IP, which is okay for small and medium installations.
set the root password on the VM (required for the SAP installation)
\n
sudo su – passwd Changing password for user root. New password: ********* Retype new password: ******* passwd: all authentication tokens updated successfully.
After the ASCS is installed we now install the MaxDB and load the content into it.
\n
\n
ralfmaxdb01:/Software/SWPM # ./sapinst cd /Software/MaxDB mkdir DB Patch mv unzip 51052559_8.ZIP DB mv 51054410_2.ZIP Patch/ cd DB unzip 51052559_8.ZIP
dbmcli on C11> backup_template_create d1 to FILE /sapdb/C11/backup/data/DAT0001 CONTENT DATA
\n
\n
Create template l1 for log backup:
\n
dbmcli on DB1> backup_template_create l1 to FILE /sapdb/C11/backup/log/LOG0001 CONTENT LOG
\n
\n
Starting a backup
\n
db_connect backup_start d1
\n
check the data backup location
\n
ls -lh /sapdb/C11/backup/data/ -rw-rw---- 1 sdb sdba 24G Mar 7 19:39 DAT0001
\n
\n
Checking a backup after completion
\n
medium_label d1 OK Returncode 0 Date 20230307 Time 00193608 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame Location /sapdb/C11/backup/data/DAT0001 Errortext Label DAT_000000001 Is Consistent true First LOG Page 6939 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00193608 Page Count 3044252 Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Converter Page Count 1681
As of SAP MaxDB Version 7.8 you can use external filer snapshot in combination with SAP MaxDB snapshot to create a consistent backup in online database mode.
\n
\n
As of version 7.7 you can freeze the data area of a SAP MaxDB using internal database snapshots.
\n
A snapshot can be created in the ONLINE operational state.
\n
As of SAP MaxDB version 7.8 you can perform a complete data backup with an external file system snapshot in the operational state ONLINE in combination with a SAP MaxDB Database Snapshot.
\n
First a SAP MaxDB (internal) Snapshot is created followed by the external file snapshot.
\n
While this backup procedure the database is in online mode and the users can work with the application. Moreover, this procedure guarantees that this external file system backup is included in the backup history.
\n
The Log area is never part of this backup procedure.
\n
\n
In response to this command, the system displays the following output:
\n
OK
\n
Returncode -8020
\n
...
\n
Max Used Data Page 0
\n
\n
The return code -8020 together with the number of maximum used data pages (Max Used Data Page), in this case 0, displays in this case that the complete data backup was successfully started.
\n
\n
Create the Snapshot
\n
backup_template_create External_Snapshot TO EXTERNAL SNAPSHOT db_connect backup_start External_Snapshot OK Returncode -8020 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count ---
\n
\n
take the snapshot with azacsnap on ANF than finish the backup
backup_finish External_Snapshot ExternalBackupID 202303071508 OK Returncode 0 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count
Crash the system by sending the sysrequest trigger b
\n
echo b > /proc/sysrq-trigger
\n
umount the data volume before we restore the snapshot
\n
umount /sapdb/C11/sapdata
\n
restore the SnapShot
\n
\n
Remount the volume and start the DB for the automated recovery
\n
mount -a
\n
\n
go to Restore the database --> further down
\n
\n
Creating automated DB SnapShots
\n
A MaxDB Snapshot must be created before taking a storage Snapshot. The database will be set into a consistent state by quiescing the database. The following steps show how to perform database backup by using a storage Snapshot copy.
Azacsnap is supporting only HANA, DB2 and Oracle at the moment. It is, however, possible to take a snapshot from the data volume and use the new feature in the version 6 with pre and post automation.
\n
Create the service principal for your subscription and install azacsnap – in the Azure Portal
\n
Store the output in a file I used /tmp/auth.json
\n
\n
az ad sp create-for-rbac --name \"AzAcSnap\" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
\n
\n
You will get an output which looks similar to this:
Create an auth.conf file and copy the content into this file
\n
vi /tmp/auth.json
\n
\n
ls -l /Software/azacsnap* admin01 users 16478438 Mar 8 15:30 /Software/azacsnap_7a_(1AA8343)_installer.run
\n
\n
Install azacsnap
\n
cd /Software/ ralfmaxdb01:/Software # chmod 755 azacsnap_7a_\\(1AA8343\\)_installer.run ./azacsnap_7a_\\(1AA8343\\)_installer.run -I
\n
\n
Configure azacsnap
\n
su - azacsnap azacsnap -c configure --configuration=new Building new config file Add comment to config file (blank entry to exit adding comments): MaxDB Add comment to config file (blank entry to exit adding comments): Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): hana === Add SAP HANA Database details === HANA SID (e.g. H80): C11 HANA Instance Number (e.g. 00): 00 HANA HDB User Store Key (e.g. `hdbuserstore List`): ADMIN HANA Server's Address (hostname or IP address): 10.6.0.4 Do you need AzAcSnap to automatically disable/enable backint during snapshot? (y/n) [n]: === Azure NetApp Files Storage details === Are you using Azure NetApp Files for the database? (y/n) [n]: y Enter new value for 'ANF Backup (none, renameOnly)' (current = 'none'): renameOnly --- DATA Volumes have the Application put into a consistent state before they are snapshot --- Add Azure NetApp Files resource to DATA Volume section of Database configuration? (y/n) [n]: --- OTHER Volumes are snapshot immediately without preparing any application for snapshot --- Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: y Full Azure NetApp Files Storage Volume Resource ID (e.g. /subscriptions/.../resourceGroups/.../providers/Microsoft.NetApp/netAppAccounts/.../capacityPools/Premium/volumes/...): /subscriptions/da/resourceGroups/ralfMaxDB/providers/Microsoft.NetApp/netAppAccounts/ralfmaxdbanf/capacityPools/ralfMaxDB/volumes/C11data Service Principal Authentication filename or Azure Key Vault Resource ID (e.g. auth-file.json or https://...): auth.json Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: === Azure Managed Disk details === Are you using Azure Managed Disks for the database? (y/n) [n]: === Azure Large Instance (Bare Metal) Storage details === Are you using Azure Large Instance (Bare Metal) for the database? (y/n) [n]: Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): exit Editing configuration complete, writing output to 'azacsnap.json'.
\n
\n
Test the storage connection, at this point we “only” can test the storage connection. The ASE backup-mode will be scheduled as “runbefore” and “runafter”.
\n
azacsnap -c test --test storage –preview PASSED: Storage test completed successfully for all 'other' Volumes END : Storage tests complete END : Test process complete for 'storage'
\n
\n
Create the .bashrc for the azacsnap user (compare the environment from the SIDadm user)
\n
vi .bashrc test -s ~/.alias && . ~/.alias || true export PATH=$PATH:/sapdb/clients/C11/bin:/sapdb/programs/bin export LD_LIBRARY_PATH=/usr/sap/C11/SYS/exe/run:/usr/sap/C11/SYS/exe/uc/linuxx86_64:/sapdb/clients/C11/lib export LANG=C.UTF-8
\n
\n
create the user key
\n
xuser set -U ADMIN -d C11 -u superdba,<pwd>
\n
\n
Test the dbmcli connection using the user-key
\n
dbmcli -U ADMIN dbmcli on C11>quit
\n
Create the two Quiece and Unquiece scripts. (no Microsoft support) this is only an example.
\n
vi cat MaxDBQuiece.sh #!/bin/bash SID=\"$1\" KEY=\"$2\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Snapshot${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" || \"$KEY\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> <USERSTOREKEY>\" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_start myserver background_server_execute myserver db_connect background_server_get_reply myserver -wait background_server_execute myserver backup_start External_Snapshot DATA background_server_get_reply myserver -wait EOF echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM Snapshot logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB SnapShot\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE rm $sqlFile
\n
\n
vi MaxDBunQuiece.sh #!/bin/bash SID=\"$1\" KEY=\"$2\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Snapshot${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" || \"$KEY\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> <USERSTOREKEY>\" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_execute myserver backup_finish External_Snapshot ExternalBackupID ANFSnapShot background_server_get_reply myserver -wait background_server_exit myserver EOF echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM Snapshot logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB SnapShot\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE rm $sqlFile
\n
\n
chmod 755 MaxDB*
\n
create the cron script to schedule the azacsnap call
NAME d1 CONTENT DATA CREATIONDATE 20230307193424 MODIFICATIONDATE 20230307193424 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/data/DAT0001 OVERWRITE NO COMPRESSED NO NAME l1 CONTENT AUTO CREATIONDATE 20230307193440 MODIFICATIONDATE 20230307193440 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/log/LOG0001 OVERWRITE NO COMPRESSED NO
NAME External_Snapshot CONTENT DATA CREATIONDATE 20230307201008 MODIFICATIONDATE 20230307201008 TOOL DBMC BLOCKSIZE 8 DATACARRIER TYPE EXTERNAL LOCATION OVERWRITE NO COMPRESSED NO
\n
List the taken SnapShots
\n
azacsnap -c details --preview >>> Preview Feature 'ANF Backup' enabled in config file 'azacsnap.json'. ================================================================================ PREVIEWS ARE PROVIDED \"AS-IS,\" \"WITH ALL FAULTS,\" AND \"AS AVAILABLE,\" AND ARE EXCLUDED FROM THE SERVICE LEVEL AGREEMENTS AND LIMITED WARRANTY https://azure.microsoft.com/support/legal/preview-supplemental-terms/ ================================================================================ User has enabled execution of PREVIEW features with '--preview'. -------------------------------------------------------------------------------- List snapshot details called with snapshotFilter '' #, Volume, SnapshotName, Created #1, C11data, Backup_202303141218, 14-Mar-2023 11:18:44am (UTC+0) #2, C11data, Backup_202303141215, 14-Mar-2023 11:15:20am (UTC+0) #3, C11data, Backup_202303131057, 13-Mar-2023 9:57:42am (UTC+0)
\n
\n
Restore using azacsnap
\n
Shutdown SAP and ASE (if possible – if not simply “kill” the DB. We are restoring anyway.
\n
stopsap all
\n
\n
umount the data volume
\n
umount /sapdb/C11/sapdata
\n
\n
At the moment azacsnap does not support “Revert Volume” for ANF. If you would like to keep the volume names you have the option to “revert a volume using the Azure Portal.
Azure NetApp Files volumes not supported for revertvolume, will not revert volume.
\n
\n
With ANF you do have the option to clone a volume. This is probably the better option anyway. How to clone a volume for a recovery is demonstrated here:
\n
\n
AzAcSnap is designed to restore a collection of dataVolumes and otherVolumes. AzAcSnap makes sure all the dataVolumes share the same snapshot to be restored and the otherVolumes the latest snapshot to be restored. In a deployment with multiple data volumes (e.g., SAP HANA Scale-Out) this can save a lot of time trying to ensure all the snapshots match in the Azure Portal before cloning or reverting the volumes. This means when using a setup with custom scripts to quiesce/unquiesce the database it's necessary to create a copy of the backup configfile and change \"otherVolume\" to \"dataVolume\" and change \"dataVolume\" to \"otherVolume\" effectively switching them.
pwd /home/azacsnap/bin grep rwclone ./logs/*.log … Creating new volume 'ralfc11data-rwclone-20221111-0732' … Volume 'ralfc11data-rwclone-20221111-0732' successfully created from snapshot. … … Creating new volume 'ralfc11sybase-rwclone-20221111-0732' … Volume 'ralfc11sybase-rwclone-20221111-0732' successfully created from snapshot.
\n
\n
Mount the cloned volume to the sapdata directory
\n
mount -a
\n
\n
Recover the database
\n
dbmcli -U ADMIN dbmcli on C11>backup_history_list -c label,action,pages,stop,media OK ... .. | DAT_000000030|SAVE WARM|0|2023-03-14 11:18:04|External_Snapshot | DAT_000000031|SAVE WARM|0|2023-03-14 11:18:57|External_Snapshot | --- dbmcli on C11>quit
\n
Restore the latest SnapShot
\n
dbmcli -U ADMIN db_admin OK db_connect OK recover_start External_Snapshot DATA ExternalBackupID DAT_000000031 OK
\n
\n
Start the DB and SAP
\n
The Database will automatically apply the latest logfiles to the database.
\n
su – c11adm startsap
\n
\n
Upgrade MaxDB
\n
su - c11adm stopsap
\n
as root
\n
cd /Software/MaxDB/Patch/MaxDB_7.9___SP10_Build_05_/DATA_UNITS/MAXDB_LINUX_X86_64 ./SDBUPD –d C11 -u control,<pwd>
\n
\n
ANF Cross Region Replication
\n
Azure NetApp Files volume replication is supported between various Azure regional pairs and non-standard pairs. Azure NetApp Files volume replication is currently available between the following regions. You can replicate Azure NetApp Files volumes from Regional Pair A to Regional Pair B, and vice versa.
Create an storage account in the destination region (must be the paired region (see table).
\n
\n
\n
Create a VNET (if not already existing in the DR region)
\n
\n
\n
Create a Capacity Pool for the DR volume (can be a different QoS level)
\n
\n
Create the target DR volume.
\n
On the destination storage account overview select Add data Protection
\n
\n
obviously the new volume should have the same size as the destination volume.
\n
\n
\n
Schedule an hourly replication for the data volume
\n
\n
\n
Now authorize the source volume for the replication.
\n
\n
Specify the volume resource ID of the DR volume to the Source volume
\n
\n
\n
Finished
\n
\n
Now repeat the same for the log backup volume but schedule the transfer every 10 Minutes
\n
\n
\n
Crontab for snapshots and logbackup
\n
crontab -l # create daily backups twice a day and replicate them via ANF backup 0 2,14 * * * /home/azacsnap/bin/cron_backup_daily.sh */10 * * * * /home/azacsnap/bin/cron_logbackup.sh
\n
The second part with the log volume is optional if you set the autolog_on to 300 second (5 minutes)
\n
Create the logbackup script
\n
vi cron_logbackup.sh #!/bin/bash SID=\"$1\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Logbackup${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> \" exit 1 fi echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM logbackup logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB Logbackup\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U ADMIN -uUTL -c backup_start l1 >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE
\n
\n
as an alternative you can enable autolog backup to 300 seconds
\n
dbmcli -U ADMIN dbmcli on C11>db_connect dbmcli on C11>autolog_off dbmcli on C11>autolog_on l1 INTERVAL 300 dbmcli on C11>db_stop dbmcli on C11>db_start dbmcli on C11>exit
\n
\n
END
","body@stringLength":"92791","rawBody":"
SAP Netweaver 7.5 with MaxDB 7.9 on Azure using Azure NetApp Files (ANF)
\n
Overview
\n
\n
This article describes the setup of SAP ERP 7.5 with MaxDB 7.9. In addition, we will show how to use azacsnap to create application consistent snapshots. This article is written for an audience which are familiar with Azure, Linux and SAP Basis. Since the login mechanism changed in version 7.7 we can only support the MaxDB 7.9 with all the automation scripts explained here iin the documentation.
This illustration is a short overview of the system setup.
\n
\n
\n
\n
Create the Environment
\n
The VM
\n
SubscriptionSAP your subscribtion Resource group (new) ralfMaxDB Virtual machine name ralfmaxdb01 Region East US Availability options Availability zone Availability zone 1 Security type Standard Image SUSE Enterprise Linux 15 SP3 +Patching - Gen2 VM architecture x64 Size Standard E16-8ads v5 (8 vcpus, 128 GiB memory) Authentication type Password Username admin01
\n
Create the delegated network for ANF
\n
\n
\n
Create the Volume Structure
\n
Download the sources from the SAP Marketplace
\n
The DB Export
\n
\n
\n
The SWPM
\n
\n
\n
The MaxDB
\n
\n
\n
The SAPCAR
\n
\n
\n
The Kernel
\n
\n
\n
\n
\n
The IGS
\n
\n
\n
\n
Finally, the HOST Agent.
\n
\n
\n
Volume design on ANF
\n
Create the volume structure on ANF. The size of each volume depends on a proper capacity and performance sizing.
\n
\n
Mount the volumes and create the directories.
\n
\n
Modify the idmapd to align the NFSv4 domain.
\n
vi /etc/idmapd.conf # Example [General] Domain = defaultv4iddomain.com [Mapping] Nobody-User = nobody Nobody-Group = nobody
\n
\n
update the system
\n
zypper up
\n
Install the RPM’s regarding the installation manual
\n
zypper in motif libXtst-devel libXp-devel libX11-devel libSM-devel libICE-devel
reboot the system to apply all the changes and reload the kernel after the update.
\n
reboot
\n
Check that sapconf is running and that it is enabled.
\n
\n
sapconf_check This is sapconf_check v1.0. It verifies if sapconf is set up correctly and will give advice to do so. Please keep in mind: - This tool does not check, if the tuning itself works correctly. - Follow the hints from top to down to minimize side effects. Checking sapconf ================ [ OK ] sapconf package has version 5.0.5 [ OK ] sapconf.service is active [ OK ] sapconf.service is enabled Sapconf is set up correctly.
\n
create the group ID for your SAP systems (should be the same for all SAP systems)
\n
groupadd sapsys -g 79
\n
groupadd sdba -g 1001
\n
\n
creating the DB users to avoid issues during the DB installation
As usual, create one shared volume for the Application Server part , a MaxDB volume for the database specific directories, data and log volume and the backup volume ideally on a different storage endpoint.
\n
In this PoC we have all storage endpoints on one IP, which is okay for small and medium installations.
set the root password on the VM (required for the SAP installation)
\n
sudo su – passwd Changing password for user root. New password: ********* Retype new password: ******* passwd: all authentication tokens updated successfully.
After the ASCS is installed we now install the MaxDB and load the content into it.
\n
\n
ralfmaxdb01:/Software/SWPM # ./sapinst cd /Software/MaxDB mkdir DB Patch mv unzip 51052559_8.ZIP DB mv 51054410_2.ZIP Patch/ cd DB unzip 51052559_8.ZIP
dbmcli on C11> backup_template_create d1 to FILE /sapdb/C11/backup/data/DAT0001 CONTENT DATA
\n
\n
Create template l1 for log backup:
\n
dbmcli on DB1> backup_template_create l1 to FILE /sapdb/C11/backup/log/LOG0001 CONTENT LOG
\n
\n
Starting a backup
\n
db_connect backup_start d1
\n
check the data backup location
\n
ls -lh /sapdb/C11/backup/data/ -rw-rw---- 1 sdb sdba 24G Mar 7 19:39 DAT0001
\n
\n
Checking a backup after completion
\n
medium_label d1 OK Returncode 0 Date 20230307 Time 00193608 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame Location /sapdb/C11/backup/data/DAT0001 Errortext Label DAT_000000001 Is Consistent true First LOG Page 6939 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00193608 Page Count 3044252 Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Converter Page Count 1681
As of SAP MaxDB Version 7.8 you can use external filer snapshot in combination with SAP MaxDB snapshot to create a consistent backup in online database mode.
\n
\n
As of version 7.7 you can freeze the data area of a SAP MaxDB using internal database snapshots.
\n
A snapshot can be created in the ONLINE operational state.
\n
As of SAP MaxDB version 7.8 you can perform a complete data backup with an external file system snapshot in the operational state ONLINE in combination with a SAP MaxDB Database Snapshot.
\n
First a SAP MaxDB (internal) Snapshot is created followed by the external file snapshot.
\n
While this backup procedure the database is in online mode and the users can work with the application. Moreover, this procedure guarantees that this external file system backup is included in the backup history.
\n
The Log area is never part of this backup procedure.
\n
\n
In response to this command, the system displays the following output:
\n
OK
\n
Returncode -8020
\n
...
\n
Max Used Data Page 0
\n
\n
The return code -8020 together with the number of maximum used data pages (Max Used Data Page), in this case 0, displays in this case that the complete data backup was successfully started.
\n
\n
Create the Snapshot
\n
backup_template_create External_Snapshot TO EXTERNAL SNAPSHOT db_connect backup_start External_Snapshot OK Returncode -8020 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count ---
\n
\n
take the snapshot with azacsnap on ANF than finish the backup
backup_finish External_Snapshot ExternalBackupID 202303071508 OK Returncode 0 Date 20230307 Time 00201047 Server ralfmaxdb01 Database C11 Kernel Version Kernel 7.9.09 Build 005-123-259-005 Pages Transferred 0 Pages Left 0 Volumes Medianame External_Snapshot Location Errortext Label DAT_000000002 Is Consistent true First LOG Page 6940 Last LOG Page DB Stamp 1 Date 20230307 DB Stamp 1 Time 00201047 DB Stamp 2 Date DB Stamp 2 Time Page Count Devices Used 1 Database ID ralfmaxdb01:C11_20230307_193608 Max Used Data Page 0 Converter Page Count
Crash the system by sending the sysrequest trigger b
\n
echo b > /proc/sysrq-trigger
\n
umount the data volume before we restore the snapshot
\n
umount /sapdb/C11/sapdata
\n
restore the SnapShot
\n
\n
Remount the volume and start the DB for the automated recovery
\n
mount -a
\n
\n
go to Restore the database --> further down
\n
\n
Creating automated DB SnapShots
\n
A MaxDB Snapshot must be created before taking a storage Snapshot. The database will be set into a consistent state by quiescing the database. The following steps show how to perform database backup by using a storage Snapshot copy.
Azacsnap is supporting only HANA, DB2 and Oracle at the moment. It is, however, possible to take a snapshot from the data volume and use the new feature in the version 6 with pre and post automation.
\n
Create the service principal for your subscription and install azacsnap – in the Azure Portal
\n
Store the output in a file I used /tmp/auth.json
\n
\n
az ad sp create-for-rbac --name \"AzAcSnap\" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
\n
\n
You will get an output which looks similar to this:
Create an auth.conf file and copy the content into this file
\n
vi /tmp/auth.json
\n
\n
ls -l /Software/azacsnap* admin01 users 16478438 Mar 8 15:30 /Software/azacsnap_7a_(1AA8343)_installer.run
\n
\n
Install azacsnap
\n
cd /Software/ ralfmaxdb01:/Software # chmod 755 azacsnap_7a_\\(1AA8343\\)_installer.run ./azacsnap_7a_\\(1AA8343\\)_installer.run -I
\n
\n
Configure azacsnap
\n
su - azacsnap azacsnap -c configure --configuration=new Building new config file Add comment to config file (blank entry to exit adding comments): MaxDB Add comment to config file (blank entry to exit adding comments): Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): hana === Add SAP HANA Database details === HANA SID (e.g. H80): C11 HANA Instance Number (e.g. 00): 00 HANA HDB User Store Key (e.g. `hdbuserstore List`): ADMIN HANA Server's Address (hostname or IP address): 10.6.0.4 Do you need AzAcSnap to automatically disable/enable backint during snapshot? (y/n) [n]: === Azure NetApp Files Storage details === Are you using Azure NetApp Files for the database? (y/n) [n]: y Enter new value for 'ANF Backup (none, renameOnly)' (current = 'none'): renameOnly --- DATA Volumes have the Application put into a consistent state before they are snapshot --- Add Azure NetApp Files resource to DATA Volume section of Database configuration? (y/n) [n]: --- OTHER Volumes are snapshot immediately without preparing any application for snapshot --- Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: y Full Azure NetApp Files Storage Volume Resource ID (e.g. /subscriptions/.../resourceGroups/.../providers/Microsoft.NetApp/netAppAccounts/.../capacityPools/Premium/volumes/...): /subscriptions/da/resourceGroups/ralfMaxDB/providers/Microsoft.NetApp/netAppAccounts/ralfmaxdbanf/capacityPools/ralfMaxDB/volumes/C11data Service Principal Authentication filename or Azure Key Vault Resource ID (e.g. auth-file.json or https://...): auth.json Add Azure NetApp Files resource to OTHER Volume section of Database configuration? (y/n) [n]: === Azure Managed Disk details === Are you using Azure Managed Disks for the database? (y/n) [n]: === Azure Large Instance (Bare Metal) Storage details === Are you using Azure Large Instance (Bare Metal) for the database? (y/n) [n]: Enter the database type to add, 'hana', 'oracle', 'db2', or 'exit' (to save and exit): exit Editing configuration complete, writing output to 'azacsnap.json'.
\n
\n
Test the storage connection, at this point we “only” can test the storage connection. The ASE backup-mode will be scheduled as “runbefore” and “runafter”.
\n
azacsnap -c test --test storage –preview PASSED: Storage test completed successfully for all 'other' Volumes END : Storage tests complete END : Test process complete for 'storage'
\n
\n
Create the .bashrc for the azacsnap user (compare the environment from the SIDadm user)
\n
vi .bashrc test -s ~/.alias && . ~/.alias || true export PATH=$PATH:/sapdb/clients/C11/bin:/sapdb/programs/bin export LD_LIBRARY_PATH=/usr/sap/C11/SYS/exe/run:/usr/sap/C11/SYS/exe/uc/linuxx86_64:/sapdb/clients/C11/lib export LANG=C.UTF-8
\n
\n
create the user key
\n
xuser set -U ADMIN -d C11 -u superdba,<pwd>
\n
\n
Test the dbmcli connection using the user-key
\n
dbmcli -U ADMIN dbmcli on C11>quit
\n
Create the two Quiece and Unquiece scripts. (no Microsoft support) this is only an example.
\n
vi cat MaxDBQuiece.sh #!/bin/bash SID=\"$1\" KEY=\"$2\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Snapshot${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" || \"$KEY\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> <USERSTOREKEY>\" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_start myserver background_server_execute myserver db_connect background_server_get_reply myserver -wait background_server_execute myserver backup_start External_Snapshot DATA background_server_get_reply myserver -wait EOF echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM Snapshot logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB SnapShot\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE rm $sqlFile
\n
\n
vi MaxDBunQuiece.sh #!/bin/bash SID=\"$1\" KEY=\"$2\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Snapshot${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" || \"$KEY\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> <USERSTOREKEY>\" exit 1 fi sqlFile=$(mktemp) cat > $sqlFile << EOF background_server_execute myserver backup_finish External_Snapshot ExternalBackupID ANFSnapShot background_server_get_reply myserver -wait background_server_exit myserver EOF echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM Snapshot logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB SnapShot\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U $KEY -uUTL -i $sqlFile >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE rm $sqlFile
\n
\n
chmod 755 MaxDB*
\n
create the cron script to schedule the azacsnap call
NAME d1 CONTENT DATA CREATIONDATE 20230307193424 MODIFICATIONDATE 20230307193424 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/data/DAT0001 OVERWRITE NO COMPRESSED NO NAME l1 CONTENT AUTO CREATIONDATE 20230307193440 MODIFICATIONDATE 20230307193440 TOOL NONE BLOCKSIZE 8 DATACARRIER TYPE FILE LOCATION /sapdb/C11/backup/log/LOG0001 OVERWRITE NO COMPRESSED NO
NAME External_Snapshot CONTENT DATA CREATIONDATE 20230307201008 MODIFICATIONDATE 20230307201008 TOOL DBMC BLOCKSIZE 8 DATACARRIER TYPE EXTERNAL LOCATION OVERWRITE NO COMPRESSED NO
\n
List the taken SnapShots
\n
azacsnap -c details --preview >>> Preview Feature 'ANF Backup' enabled in config file 'azacsnap.json'. ================================================================================ PREVIEWS ARE PROVIDED \"AS-IS,\" \"WITH ALL FAULTS,\" AND \"AS AVAILABLE,\" AND ARE EXCLUDED FROM THE SERVICE LEVEL AGREEMENTS AND LIMITED WARRANTY https://azure.microsoft.com/support/legal/preview-supplemental-terms/ ================================================================================ User has enabled execution of PREVIEW features with '--preview'. -------------------------------------------------------------------------------- List snapshot details called with snapshotFilter '' #, Volume, SnapshotName, Created #1, C11data, Backup_202303141218, 14-Mar-2023 11:18:44am (UTC+0) #2, C11data, Backup_202303141215, 14-Mar-2023 11:15:20am (UTC+0) #3, C11data, Backup_202303131057, 13-Mar-2023 9:57:42am (UTC+0)
\n
\n
Restore using azacsnap
\n
Shutdown SAP and ASE (if possible – if not simply “kill” the DB. We are restoring anyway.
\n
stopsap all
\n
\n
umount the data volume
\n
umount /sapdb/C11/sapdata
\n
\n
At the moment azacsnap does not support “Revert Volume” for ANF. If you would like to keep the volume names you have the option to “revert a volume using the Azure Portal.
Azure NetApp Files volumes not supported for revertvolume, will not revert volume.
\n
\n
With ANF you do have the option to clone a volume. This is probably the better option anyway. How to clone a volume for a recovery is demonstrated here:
\n
\n
AzAcSnap is designed to restore a collection of dataVolumes and otherVolumes. AzAcSnap makes sure all the dataVolumes share the same snapshot to be restored and the otherVolumes the latest snapshot to be restored. In a deployment with multiple data volumes (e.g., SAP HANA Scale-Out) this can save a lot of time trying to ensure all the snapshots match in the Azure Portal before cloning or reverting the volumes. This means when using a setup with custom scripts to quiesce/unquiesce the database it's necessary to create a copy of the backup configfile and change \"otherVolume\" to \"dataVolume\" and change \"dataVolume\" to \"otherVolume\" effectively switching them.
pwd /home/azacsnap/bin grep rwclone ./logs/*.log … Creating new volume 'ralfc11data-rwclone-20221111-0732' … Volume 'ralfc11data-rwclone-20221111-0732' successfully created from snapshot. … … Creating new volume 'ralfc11sybase-rwclone-20221111-0732' … Volume 'ralfc11sybase-rwclone-20221111-0732' successfully created from snapshot.
\n
\n
Mount the cloned volume to the sapdata directory
\n
mount -a
\n
\n
Recover the database
\n
dbmcli -U ADMIN dbmcli on C11>backup_history_list -c label,action,pages,stop,media OK ... .. | DAT_000000030|SAVE WARM|0|2023-03-14 11:18:04|External_Snapshot | DAT_000000031|SAVE WARM|0|2023-03-14 11:18:57|External_Snapshot | --- dbmcli on C11>quit
\n
Restore the latest SnapShot
\n
dbmcli -U ADMIN db_admin OK db_connect OK recover_start External_Snapshot DATA ExternalBackupID DAT_000000031 OK
\n
\n
Start the DB and SAP
\n
The Database will automatically apply the latest logfiles to the database.
\n
su – c11adm startsap
\n
\n
Upgrade MaxDB
\n
su - c11adm stopsap
\n
as root
\n
cd /Software/MaxDB/Patch/MaxDB_7.9___SP10_Build_05_/DATA_UNITS/MAXDB_LINUX_X86_64 ./SDBUPD –d C11 -u control,<pwd>
\n
\n
ANF Cross Region Replication
\n
Azure NetApp Files volume replication is supported between various Azure regional pairs and non-standard pairs. Azure NetApp Files volume replication is currently available between the following regions. You can replicate Azure NetApp Files volumes from Regional Pair A to Regional Pair B, and vice versa.
Create an storage account in the destination region (must be the paired region (see table).
\n
\n
\n
Create a VNET (if not already existing in the DR region)
\n
\n
\n
Create a Capacity Pool for the DR volume (can be a different QoS level)
\n
\n
Create the target DR volume.
\n
On the destination storage account overview select Add data Protection
\n
\n
obviously the new volume should have the same size as the destination volume.
\n
\n
\n
Schedule an hourly replication for the data volume
\n
\n
\n
Now authorize the source volume for the replication.
\n
\n
Specify the volume resource ID of the DR volume to the Source volume
\n
\n
\n
Finished
\n
\n
Now repeat the same for the log backup volume but schedule the transfer every 10 Minutes
\n
\n
\n
Crontab for snapshots and logbackup
\n
crontab -l # create daily backups twice a day and replicate them via ANF backup 0 2,14 * * * /home/azacsnap/bin/cron_backup_daily.sh */10 * * * * /home/azacsnap/bin/cron_logbackup.sh
\n
The second part with the log volume is optional if you set the autolog_on to 300 second (5 minutes)
\n
Create the logbackup script
\n
vi cron_logbackup.sh #!/bin/bash SID=\"$1\" DATE=\"`date +%m-%d-%Y`\" LOGFILE=\"/tmp/MaxDM_Logbackup${SID}.log\" # MAX LOGFILE SIZE is 2 MB MAXSIZE=2000000 # Get file size FILESIZE=$(stat -c%s \"$LOGFILE\") if [[ \"$SID\" == \"\" ]]; then echo \"Usage: `basename $0` <SID> \" exit 1 fi echo \"Size of $LOGFILE = $FILESIZE bytes.\" >>$LOGFILE if (( $FILESIZE > $MAXSIZE)); then echo \"Moving the MaxDM logbackup logfile to a backup\" >>$LOGFILE mv $LOGFILE ${LOGFILE}-${DATE} else echo \"Logfilesize OK\" >>$LOGFILE fi echo \"`date` Creating MaxDB Logbackup\" >>$LOGFILE #rc=`dbmcli -U $KEY -i $sqlFile -b | head -1 | tr -d \"[:blank:]\"` dbmcli -U ADMIN -uUTL -c backup_start l1 >>$LOGFILE echo \"Returncode = $?\" >>$LOGFILE
\n
\n
as an alternative you can enable autolog backup to 300 seconds
\n
dbmcli -U ADMIN dbmcli on C11>db_connect dbmcli on C11>autolog_off dbmcli on C11>autolog_on l1 INTERVAL 300 dbmcli on C11>db_stop dbmcli on C11>db_start dbmcli on C11>exit
This article describes the setup of SAP ERP 7.5 with MaxDB 7.9. In addition, we will show how to use azacsnap to create application consistent snapshots. This article is written for an audience which are familiar with Azure, Linux and SAP Basis. Since the login mechanism changed in version 7.7 we can only support the MaxDB 7.9 with all the automation scripts explained here iin the documentation.
","introduction":"","coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""},"currentRevision":{"__ref":"Revision:revision:3905041_5"},"latestVersion":{"__typename":"FriendlyVersion","major":"1","minor":"0"},"metrics":{"__typename":"MessageMetrics","views":16726},"visibilityScope":"PUBLIC","canonicalUrl":null,"seoTitle":"SAP Netweaver 7.5 with MaxDB 7.9","seoDescription":null,"placeholder":false,"originalMessageForPlaceholder":null,"contributors":{"__typename":"UserConnection","edges":[]},"nonCoAuthorContributors":{"__typename":"UserConnection","edges":[]},"coAuthors":{"__typename":"UserConnection","edges":[]},"blogMessagePolicies":{"__typename":"BlogMessagePolicies","canDoAuthoringActionsOnBlog":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","key":"error.lithium.policies.blog.action_can_do_authoring_action.accessDenied","args":[]}}},"archivalData":null,"replies":{"__typename":"MessageConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"customFields":[],"revisions({\"constraints\":{\"isPublished\":{\"eq\":true}},\"first\":1})":{"__typename":"RevisionConnection","totalCount":5}},"Conversation:conversation:3905041":{"__typename":"Conversation","id":"conversation:3905041","solved":false,"topic":{"__ref":"BlogTopicMessage:message:3905041"},"lastPostingActivityTime":"2023-09-06T14:47:44.097-07:00","lastPostTime":"2023-09-06T14:47:44.097-07:00","unreadReplyCount":0,"isSubscribed":false},"ModerationData:moderation_data:3905041":{"__typename":"ModerationData","id":"moderation_data:3905041","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk2N2kzMEM1MEVFOUM4MUI4M0VD?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk2N2kzMEM1MEVFOUM4MUI4M0VD?revision=5","title":"RalfKlahr_0-1692629850450.png","associationType":"BODY","width":789,"height":683,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3Mmk1RDMwNkI1QThCMDg2OTcy?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3Mmk1RDMwNkI1QThCMDg2OTcy?revision=5","title":"RalfKlahr_1-1692630737792.png","associationType":"BODY","width":1010,"height":494,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3NWkwMUUyNjUyNTc5NjFCMTU5?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3NWkwMUUyNjUyNTc5NjFCMTU5?revision=5","title":"RalfKlahr_2-1692630779473.png","associationType":"BODY","width":1010,"height":60,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3N2lGRjhBMzE3NjAyQjhDMDg5?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3N2lGRjhBMzE3NjAyQjhDMDg5?revision=5","title":"RalfKlahr_3-1692630802427.png","associationType":"BODY","width":1010,"height":56,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3OGk0RTYwNEJCRDczM0NDRDk3?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3OGk0RTYwNEJCRDczM0NDRDk3?revision=5","title":"RalfKlahr_4-1692630827578.png","associationType":"BODY","width":1010,"height":168,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3OWk5QjUxMERDQjEzRDREMzE0?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk3OWk5QjUxMERDQjEzRDREMzE0?revision=5","title":"RalfKlahr_5-1692630849794.png","associationType":"BODY","width":1010,"height":54,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4MWk1Q0U5ODU1QTQ4MDBBNTJF?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4MWk1Q0U5ODU1QTQ4MDBBNTJF?revision=5","title":"RalfKlahr_6-1692630882897.png","associationType":"BODY","width":1010,"height":304,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4MmkyNkMyQTNGNDE2QjREODE2?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4MmkyNkMyQTNGNDE2QjREODE2?revision=5","title":"RalfKlahr_7-1692630924917.png","associationType":"BODY","width":1010,"height":193,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4M2k4NTk2QkIwMDM1NDZDNUQx?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4M2k4NTk2QkIwMDM1NDZDNUQx?revision=5","title":"RalfKlahr_8-1692630947955.png","associationType":"BODY","width":1010,"height":53,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4NGk5RTNDNjlGRjFBNkE1MzQ5?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4NGk5RTNDNjlGRjFBNkE1MzQ5?revision=5","title":"RalfKlahr_9-1692630972464.png","associationType":"BODY","width":1010,"height":230,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4NWlDNDlFNEZDNTlCMkVCOUM3?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4NWlDNDlFNEZDNTlCMkVCOUM3?revision=5","title":"RalfKlahr_10-1692630995609.png","associationType":"BODY","width":1010,"height":54,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4OGlGOUNCNTkwRUZFNjQ0QjBB?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk4OGlGOUNCNTkwRUZFNjQ0QjBB?revision=5","title":"RalfKlahr_11-1692631035879.png","associationType":"BODY","width":1010,"height":304,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk5NGkyQTQxRjAyRDcyNEJERDM1?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk5NGkyQTQxRjAyRDcyNEJERDM1?revision=5","title":"RalfKlahr_12-1692631059181.png","associationType":"BODY","width":1010,"height":297,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk5NWkzMUQ2OEFEQzI3QTk5RUNB?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTQ5OTk5NWkzMUQ2OEFEQzI3QTk5RUNB?revision=5","title":"RalfKlahr_13-1692631089336.png","associationType":"BODY","width":1010,"height":301,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAxMWlFRDNGRjNGQ0E2RTk3RTI2?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAxMWlFRDNGRjNGQ0E2RTk3RTI2?revision=5","title":"RalfKlahr_14-1692631649945.png","associationType":"BODY","width":1010,"height":198,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyMmkxNkQ0NDNENERDQTlDQzVE?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyMmkxNkQ0NDNENERDQTlDQzVE?revision=5","title":"RalfKlahr_15-1692632188553.png","associationType":"BODY","width":660,"height":491,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyM2k1RkJGQjk5NDFGNjFFOEQ5?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyM2k1RkJGQjk5NDFGNjFFOEQ5?revision=5","title":"RalfKlahr_16-1692632202036.png","associationType":"BODY","width":434,"height":271,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyNGk2OTMzNTY3M0ZCNTk0RDJE?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyNGk2OTMzNTY3M0ZCNTk0RDJE?revision=5","title":"RalfKlahr_17-1692632229251.png","associationType":"BODY","width":641,"height":568,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyNWlCNDk0NEU0Nzg3NDYwMTEx?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAyNWlCNDk0NEU0Nzg3NDYwMTEx?revision=5","title":"RalfKlahr_18-1692632249652.png","associationType":"BODY","width":863,"height":456,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNGk0NzMwQzVGMDUxOEM0MjRB?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNGk0NzMwQzVGMDUxOEM0MjRB?revision=5","title":"RalfKlahr_0-1692632584283.png","associationType":"BODY","width":880,"height":441,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNWlCNEVBOUZDM0U2QkQ0MDM2?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNWlCNEVBOUZDM0U2QkQ0MDM2?revision=5","title":"RalfKlahr_1-1692632603205.png","associationType":"BODY","width":869,"height":223,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNmlEMTkxMzlEMzkwREUyMTk1?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzNmlEMTkxMzlEMzkwREUyMTk1?revision=5","title":"RalfKlahr_2-1692632626118.png","associationType":"BODY","width":809,"height":469,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzN2lBNzk4NTU0MTE2OEZEODQw?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDAzN2lBNzk4NTU0MTE2OEZEODQw?revision=5","title":"RalfKlahr_3-1692632646546.png","associationType":"BODY","width":829,"height":380,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDA0MGkxNkU5MUI1NTlBRUNFODc4?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDA0MGkxNkU5MUI1NTlBRUNFODc4?revision=5","title":"RalfKlahr_4-1692632712823.png","associationType":"BODY","width":1010,"height":488,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDA0MWlEMDdDODI3QzY5OENEOTkw?revision=5\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS0zOTA1MDQxLTUwMDA0MWlEMDdDODI3QzY5OENEOTkw?revision=5","title":"RalfKlahr_5-1692632735903.png","associationType":"BODY","width":793,"height":427,"altText":null},"Attachment:{\"id\":\"attachment:message3905041AttachmentNumber1\",\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/attachments/gxcuf89792/SAPApplications/975/1/MaxDB_on_ANF.pdf\"}":{"__typename":"Attachment","id":"attachment:message3905041AttachmentNumber1","filename":"MaxDB_on_ANF.pdf","filesize":4888586,"contentType":"application/pdf","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/attachments/gxcuf89792/SAPApplications/975/1/MaxDB_on_ANF.pdf"},"Revision:revision:3905041_5":{"__typename":"Revision","id":"revision:3905041_5","lastEditTime":"2023-08-21T09:42:48.399-07:00"},"CachedAsset:theme:customTheme1-1744326567483":{"__typename":"CachedAsset","id":"theme:customTheme1-1744326567483","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["default"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"favicon-1730836283320.png","imageLastModified":"1730836286415","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"favicon-1730836271365.png","imageLastModified":"1730836274203","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1300px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_BROWSER","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"3px","borderRadius":"3px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"16px","paddingXHero":"60px","fontStyle":"NORMAL","fontWeight":"700","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-gray-900)","secondaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-200)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-gray-900)","tertiaryTextHoverColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), calc(var(--lia-bs-gray-900-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-200)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"NONE","sideContent":"LIGHT","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.16)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.12)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.3)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-link-color)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"400","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","forumColor":"#4099E2","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#148563","blogColor":"#1CBAA0","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#4C6B90","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#FF8000","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#D13A1F","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#333333","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#717171","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#0069D4","secondary":"#333333","bodyText":"#1E1E1E","bodyBg":"#FFFFFF","info":"#409AE2","success":"#41C5AE","warning":"#FCC844","danger":"#BC341B","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#D3F5A4","#243A5E"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Segoe UI","fontStyle":"NORMAL","fontWeight":"400","h1FontSize":"34px","h2FontSize":"32px","h3FontSize":"28px","h4FontSize":"24px","h5FontSize":"20px","h6FontSize":"16px","lineHeight":"1.3","subHeaderFontSize":"11px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":"","imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"40px","defaultMessageHeaderMarginBottom":"20px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"10px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"40px","specialMessageHeaderMarginBottom":"20px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"10px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Segoe UI","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.5","fontSizeBase":"16px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"14px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[{"source":"SERVER","name":"Segoe UI","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"},{"style":"NORMAL","weight":"300","__typename":"FontStyleData"},{"style":"NORMAL","weight":"600","__typename":"FontStyleData"},{"style":"NORMAL","weight":"700","__typename":"FontStyleData"},{"style":"ITALIC","weight":"400","__typename":"FontStyleData"}],"assetNames":["SegoeUI-normal-400.woff2","SegoeUI-normal-300.woff2","SegoeUI-normal-600.woff2","SegoeUI-normal-700.woff2","SegoeUI-italic-400.woff2"],"__typename":"CustomFont"},{"source":"SERVER","name":"MWF Fluent Icons","styles":[{"style":"NORMAL","weight":"400","__typename":"FontStyleData"}],"assetNames":["MWFFluentIcons-normal-400.woff2"],"__typename":"CustomFont"}],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1745505309835","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1745505309835","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:quilt:o365.prod:pages/blogs/BlogMessagePage:board:SAPApplications-1745502712900":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/blogs/BlogMessagePage:board:SAPApplications-1745502712900","value":{"id":"BlogMessagePage","container":{"id":"Common","headerProps":{"backgroundImageProps":null,"backgroundColor":null,"addComponents":null,"removeComponents":["community.widget.bannerWidget"],"componentOrder":null,"__typename":"QuiltContainerSectionProps"},"headerComponentProps":{"community.widget.breadcrumbWidget":{"disableLastCrumbForDesktop":false}},"footerProps":null,"footerComponentProps":null,"items":[{"id":"blog-article","layout":"ONE_COLUMN","bgColor":null,"showTitle":null,"showDescription":null,"textPosition":null,"textColor":null,"sectionEditLevel":"LOCKED","bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"OneColumnQuiltSection","columnMap":{"main":[{"id":"blogs.widget.blogArticleWidget","className":"lia-blog-container","props":null,"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"}},{"id":"section-1729184836777","layout":"MAIN_SIDE","bgColor":"transparent","showTitle":false,"showDescription":false,"textPosition":"CENTER","textColor":"var(--lia-bs-body-color)","sectionEditLevel":null,"bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"MainSideQuiltSection","columnMap":{"main":[],"side":[],"__typename":"MainSideSectionColumns"}}],"__typename":"QuiltContainer"},"__typename":"Quilt","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-pages/blogs/BlogMessagePage-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-pages/blogs/BlogMessagePage-1745505309835","value":{"title":"{contextMessageSubject} | {communityTitle}","errorMissing":"This blog post cannot be found","name":"Blog Message Page","section.blog-article.title":"Blog Post","archivedMessageTitle":"This Content Has Been Archived","section.section-1729184836777.title":"","section.section-1729184836777.description":"","section.CncIde.title":"Blog Post","section.tifEmD.description":"","section.tifEmD.title":""},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1745505310842":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1745505310842","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"community.widget.navbarWidget","props":{"showUserName":true,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"className":"QuiltComponent_lia-component-edit-mode__0nCcm","links":{"sideLinks":[],"mainLinks":[{"children":[],"linkType":"INTERNAL","id":"gxcuf89792","params":{},"routeName":"CommunityPage"},{"children":[],"linkType":"EXTERNAL","id":"external-link","url":"/Directory","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft365","params":{"categoryId":"microsoft365"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows","params":{"categoryId":"Windows"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-microsoft365-copilot-link","params":{"categoryId":"Microsoft365Copilot"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-teams","params":{"categoryId":"MicrosoftTeams"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-securityand-compliance","params":{"categoryId":"microsoft-security"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"azure","params":{"categoryId":"Azure"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"Common-content_management-link","params":{"categoryId":"Content_Management"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"exchange","params":{"categoryId":"Exchange"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"windows-server","params":{"categoryId":"Windows-Server"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"outlook","params":{"categoryId":"Outlook"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-endpoint-manager","params":{"categoryId":"microsoftintune"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-2","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities","url":"/","target":"BLANK"},{"children":[{"linkType":"INTERNAL","id":"a-i","params":{"categoryId":"AI"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"education-sector","params":{"categoryId":"EducationSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"partner-community","params":{"categoryId":"PartnerCommunity"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"i-t-ops-talk","params":{"categoryId":"ITOpsTalk"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"healthcare-and-life-sciences","params":{"categoryId":"HealthcareAndLifeSciences"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-mechanics","params":{"categoryId":"MicrosoftMechanics"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"public-sector","params":{"categoryId":"PublicSector"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"s-m-b","params":{"categoryId":"MicrosoftforNonprofits"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"io-t","params":{"categoryId":"IoT"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"startupsat-microsoft","params":{"categoryId":"StartupsatMicrosoft"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"driving-adoption","params":{"categoryId":"DrivingAdoption"},"routeName":"CategoryPage"},{"linkType":"EXTERNAL","id":"external-link-1","url":"/Directory","target":"SELF"}],"linkType":"EXTERNAL","id":"communities-1","url":"/","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external","url":"/Blogs","target":"SELF"},{"children":[],"linkType":"EXTERNAL","id":"external-1","url":"/Events","target":"SELF"},{"children":[{"linkType":"INTERNAL","id":"microsoft-learn-1","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"linkType":"INTERNAL","id":"microsoft-learn-blog","params":{"boardId":"MicrosoftLearnBlog","categoryId":"MicrosoftLearn"},"routeName":"BlogBoardPage"},{"linkType":"EXTERNAL","id":"external-10","url":"https://learningroomdirectory.microsoft.com/","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-3","url":"https://docs.microsoft.com/learn/dynamics365/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-4","url":"https://docs.microsoft.com/learn/m365/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-5","url":"https://docs.microsoft.com/learn/topics/sci/?wt.mc_id=techcom_header-webpage-m365","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-6","url":"https://docs.microsoft.com/learn/powerplatform/?wt.mc_id=techcom_header-webpage-powerplatform","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-7","url":"https://docs.microsoft.com/learn/github/?wt.mc_id=techcom_header-webpage-github","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-8","url":"https://docs.microsoft.com/learn/teams/?wt.mc_id=techcom_header-webpage-teams","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-9","url":"https://docs.microsoft.com/learn/dotnet/?wt.mc_id=techcom_header-webpage-dotnet","target":"BLANK"},{"linkType":"EXTERNAL","id":"external-2","url":"https://docs.microsoft.com/learn/azure/?WT.mc_id=techcom_header-webpage-m365","target":"BLANK"}],"linkType":"INTERNAL","id":"microsoft-learn","params":{"categoryId":"MicrosoftLearn"},"routeName":"CategoryPage"},{"children":[],"linkType":"INTERNAL","id":"community-info-center","params":{"categoryId":"Community-Info-Center"},"routeName":"CategoryPage"}]},"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","controllerHighlightColor":"hsla(30, 100%, 50%)","linkFontWeight":"400","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkBoxShadowHover":"none","linkFontSize":"14px","backgroundOpacity":0.8,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","hamburgerColor":"var(--lia-nav-controller-icon-color)","linkTextBorderBottom":"none","brandLogoHeight":"30px","linkBgHoverColor":"transparent","linkLetterSpacing":"normal","collapseMenuDividerOpacity":0.16,"dropdownPaddingBottom":"15px","paddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"1px solid var(--lia-bs-border-color)","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","collapseMenuDividerBg":"var(--lia-nav-link-color)","linkColor":"var(--lia-bs-body-color)","linkJustifyContent":"flex-start","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-body-color)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"2px solid var(--lia-bs-body-color)","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","linkPaddingX":"10px","linkPaddingY":"5px","paddingTop":"15px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkBgColor":"transparent","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-body-color)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-body-color)"},"showSearchIcon":false,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":{"backgroundColor":"transparent","linkHighlightColor":"var(--lia-bs-primary)","visualEffects":{"showBottomBorder":true},"linkTextColor":"var(--lia-bs-gray-700)"},"__typename":"QuiltComponent"},{"id":"custom.widget.community_banner","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"usePageWidth":false,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.HeroBanner","props":{"widgetVisibility":"signedInOrAnonymous","usePageWidth":false,"useTitle":true,"cMax_items":3,"useBackground":false,"title":"","lazyLoad":false,"widgetChooser":"custom.widget.HeroBanner"},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"custom.widget.MicrosoftFooter","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1745505309835","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"CachedAsset:component:custom.widget.community_banner-en-1744400827853":{"__typename":"CachedAsset","id":"component:custom.widget.community_banner-en-1744400827853","value":{"component":{"id":"custom.widget.community_banner","template":{"id":"community_banner","markupLanguage":"HANDLEBARS","style":".community-banner {\n a.top-bar.btn {\n top: 0px;\n width: 100%;\n z-index: 999;\n text-align: center;\n left: 0px;\n background: #0068b8;\n color: white;\n padding: 10px 0px;\n display: block;\n box-shadow: none !important;\n border: none !important;\n border-radius: none !important;\n margin: 0px !important;\n font-size: 14px;\n }\n}\n","texts":null,"defaults":{"config":{"applicablePages":[],"description":"community announcement text","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.community_banner","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"community announcement text","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_community_banner_community-banner_1x9u2_1 {\n a.custom_widget_community_banner_top-bar_1x9u2_2.custom_widget_community_banner_btn_1x9u2_2 {\n top: 0;\n width: 100%;\n z-index: 999;\n text-align: center;\n left: 0;\n background: #0068b8;\n color: white;\n padding: 0.625rem 0;\n display: block;\n box-shadow: none !important;\n border: none !important;\n border-radius: none !important;\n margin: 0 !important;\n font-size: 0.875rem;\n }\n}\n","tokens":{"community-banner":"custom_widget_community_banner_community-banner_1x9u2_1","top-bar":"custom_widget_community_banner_top-bar_1x9u2_2","btn":"custom_widget_community_banner_btn_1x9u2_2"}},"form":null},"localOverride":false},"CachedAsset:component:custom.widget.HeroBanner-en-1744400827853":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-1744400827853","value":{"component":{"id":"custom.widget.HeroBanner","template":{"id":"HeroBanner","markupLanguage":"REACT","style":null,"texts":{"searchPlaceholderText":"Search this community","followActionText":"Follow","unfollowActionText":"Following","searchOnHoverText":"Please enter your search term(s) and then press return key to complete a search.","blogs.sidebar.pagetitle":"Latest Blogs | Microsoft Tech Community","followThisNode":"Follow this node","unfollowThisNode":"Unfollow this node"},"defaults":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.HeroBanner","form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":null,"fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[{"id":"max_items","dataType":"NUMBER","list":false,"defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"control":"INPUT","__typename":"PropDefinition"}],"__typename":"ComponentProperties"},"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"},"__typename":"Component","localOverride":false},"globalCss":null,"form":{"fields":[{"id":"widgetChooser","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"title","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useTitle","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"useBackground","validation":null,"noValidation":null,"dataType":"BOOLEAN","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"widgetVisibility","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"moreOptions","validation":null,"noValidation":null,"dataType":"STRING","list":null,"control":null,"defaultValue":null,"label":null,"description":null,"possibleValues":null,"__typename":"FormField"},{"id":"cMax_items","validation":null,"noValidation":null,"dataType":"NUMBER","list":false,"control":"INPUT","defaultValue":"3","label":"Max Items","description":"The maximum number of items to display in the carousel","possibleValues":null,"__typename":"FormField"}],"layout":{"rows":[{"id":"widgetChooserGroup","type":"fieldset","as":null,"items":[{"id":"widgetChooser","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"titleGroup","type":"fieldset","as":null,"items":[{"id":"title","className":null,"__typename":"FormFieldRef"},{"id":"useTitle","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"useBackground","type":"fieldset","as":null,"items":[{"id":"useBackground","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"widgetVisibility","type":"fieldset","as":null,"items":[{"id":"widgetVisibility","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"moreOptionsGroup","type":"fieldset","as":null,"items":[{"id":"moreOptions","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"},{"id":"componentPropsGroup","type":"fieldset","as":null,"items":[{"id":"cMax_items","className":null,"__typename":"FormFieldRef"}],"props":null,"legend":null,"description":null,"className":null,"viewVariant":null,"toggleState":null,"__typename":"FormFieldset"}],"actionButtons":null,"className":"custom_widget_HeroBanner_form","formGroupFieldSeparator":"divider","__typename":"FormLayout"},"__typename":"Form"}},"localOverride":false},"CachedAsset:component:custom.widget.MicrosoftFooter-en-1744400827853":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-1744400827853","value":{"component":{"id":"custom.widget.MicrosoftFooter","template":{"id":"MicrosoftFooter","markupLanguage":"HANDLEBARS","style":".context-uhf {\n min-width: 280px;\n font-size: 15px;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.c-uhff-link {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.c-uhff {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.c-uhff-nav {\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n .c-heading-4 {\n color: #616161;\n word-break: break-word;\n font-size: 15px;\n line-height: 20px;\n padding: 36px 0 4px;\n font-weight: 600;\n }\n .c-uhff-nav-row {\n .c-uhff-nav-group {\n display: block;\n float: left;\n min-height: 1px;\n vertical-align: text-top;\n padding: 0 12px;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 12px;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.c-list.f-bare {\n font-size: 11px;\n line-height: 16px;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 8px 0;\n margin: 0;\n }\n }\n }\n }\n}\n.c-uhff-base {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(1600px + 10%);\n padding: 30px 5% 16px;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.c-uhff-ccpa {\n font-size: 11px;\n line-height: 16px;\n float: left;\n margin: 3px 0;\n }\n a.c-uhff-ccpa:hover {\n text-decoration: underline;\n }\n ul.c-list {\n font-size: 11px;\n line-height: 16px;\n float: right;\n margin: 3px 0;\n color: #616161;\n li {\n padding: 0 24px 4px 0;\n display: inline-block;\n }\n }\n .c-list.f-bare {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 30px 24px 16px;\n }\n}\n\n.social-share {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n\n.sharing-options {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 43px;\n border-radius: 0px 7px 7px 0px;\n}\n.linkedin-icon {\n border-top-right-radius: 7px;\n}\n.linkedin-icon:hover {\n border-radius: 0;\n}\n.social-share-rss-image {\n border-bottom-right-radius: 7px;\n}\n.social-share-rss-image:hover {\n border-radius: 0;\n}\n\n.social-link-footer {\n position: relative;\n display: block;\n margin: -2px 0;\n transition: all 0.2s ease;\n}\n.social-link-footer:hover .linkedin-icon {\n border-radius: 0;\n}\n.social-link-footer:hover .social-share-rss-image {\n border-radius: 0;\n}\n\n.social-link-footer img {\n width: 40px;\n height: auto;\n transition: filter 0.3s ease;\n}\n\n.social-share-list {\n width: 40px;\n}\n.social-share-rss-image {\n width: 40px;\n}\n\n.share-icon {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n\n.share-icon:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n\n.share-icon:hover .label {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n\n.label {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 10px;\n top: 50%;\n transform: translateY(-50%);\n height: 40px;\n border-radius: 0 6px 6px 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 5px 20px 8px;\n margin-left: -1px;\n}\n.linkedin {\n background-color: #0474b4;\n}\n.facebook {\n background-color: #3c5c9c;\n}\n.twitter {\n background-color: white;\n color: black;\n}\n.reddit {\n background-color: #fc4404;\n}\n.mail {\n background-color: #848484;\n}\n.bluesky {\n background-color: white;\n color: black;\n}\n.rss {\n background-color: #ec7b1c;\n}\n#RSS {\n width: 40px;\n height: 40px;\n}\n\n@media (max-width: 991px) {\n .social-share {\n display: none;\n }\n}\n","texts":{"New tab":"What's New","New 1":"Surface Laptop Studio 2","New 2":"Surface Laptop Go 3","New 3":"Surface Pro 9","New 4":"Surface Laptop 5","New 5":"Surface Studio 2+","New 6":"Copilot in Windows","New 7":"Microsoft 365","New 8":"Windows 11 apps","Store tab":"Microsoft Store","Store 1":"Account Profile","Store 2":"Download Center","Store 3":"Microsoft Store Support","Store 4":"Returns","Store 5":"Order tracking","Store 6":"Certified Refurbished","Store 7":"Microsoft Store Promise","Store 8":"Flexible Payments","Education tab":"Education","Edu 1":"Microsoft in education","Edu 2":"Devices for education","Edu 3":"Microsoft Teams for Education","Edu 4":"Microsoft 365 Education","Edu 5":"How to buy for your school","Edu 6":"Educator Training and development","Edu 7":"Deals for students and parents","Edu 8":"Azure for students","Business tab":"Business","Bus 1":"Microsoft Cloud","Bus 2":"Microsoft Security","Bus 3":"Dynamics 365","Bus 4":"Microsoft 365","Bus 5":"Microsoft Power Platform","Bus 6":"Microsoft Teams","Bus 7":"Microsoft Industry","Bus 8":"Small Business","Developer tab":"Developer & IT","Dev 1":"Azure","Dev 2":"Developer Center","Dev 3":"Documentation","Dev 4":"Microsoft Learn","Dev 5":"Microsoft Tech Community","Dev 6":"Azure Marketplace","Dev 7":"AppSource","Dev 8":"Visual Studio","Company tab":"Company","Com 1":"Careers","Com 2":"About Microsoft","Com 3":"Company News","Com 4":"Privacy at Microsoft","Com 5":"Investors","Com 6":"Diversity and inclusion","Com 7":"Accessiblity","Com 8":"Sustainibility"},"defaults":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.MicrosoftFooter","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"The Microsoft Footer","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":{"css":".custom_widget_MicrosoftFooter_context-uhf_105bp_1 {\n min-width: 17.5rem;\n font-size: 0.9375rem;\n box-sizing: border-box;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n & *,\n & *:before,\n & *:after {\n box-sizing: inherit;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-link_105bp_12 {\n color: #616161;\n word-break: break-word;\n text-decoration: none;\n }\n &a:link,\n &a:focus,\n &a:hover,\n &a:active,\n &a:visited {\n text-decoration: none;\n color: inherit;\n }\n & div {\n font-family: 'Segoe UI', SegoeUI, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff_105bp_12 {\n background: #f2f2f2;\n margin: -1.5625;\n width: auto;\n height: auto;\n}\n.custom_widget_MicrosoftFooter_c-uhff-nav_105bp_35 {\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 0 5%;\n box-sizing: inherit;\n &:before,\n &:after {\n content: ' ';\n display: table;\n clear: left;\n }\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n .custom_widget_MicrosoftFooter_c-heading-4_105bp_49 {\n color: #616161;\n word-break: break-word;\n font-size: 0.9375rem;\n line-height: 1.25rem;\n padding: 2.25rem 0 0.25rem;\n font-weight: 600;\n }\n .custom_widget_MicrosoftFooter_c-uhff-nav-row_105bp_57 {\n .custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_58 {\n display: block;\n float: left;\n min-height: 0.0625rem;\n vertical-align: text-top;\n padding: 0 0.75rem;\n width: 100%;\n zoom: 1;\n &:first-child {\n padding-left: 0;\n @media only screen and (max-width: 1083px) {\n padding-left: 0.75rem;\n }\n }\n @media only screen and (min-width: 540px) and (max-width: 1082px) {\n width: 33.33333%;\n }\n @media only screen and (min-width: 1083px) {\n width: 16.6666666667%;\n }\n ul.custom_widget_MicrosoftFooter_c-list_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n list-style-type: none;\n li {\n word-break: break-word;\n padding: 0.5rem 0;\n margin: 0;\n }\n }\n }\n }\n}\n.custom_widget_MicrosoftFooter_c-uhff-base_105bp_94 {\n background: #f2f2f2;\n margin: 0 auto;\n max-width: calc(100rem + 10%);\n padding: 1.875rem 5% 1rem;\n &:before,\n &:after {\n content: ' ';\n display: table;\n }\n &:after {\n clear: both;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: left;\n margin: 0.1875rem 0;\n }\n a.custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107:hover {\n text-decoration: underline;\n }\n ul.custom_widget_MicrosoftFooter_c-list_105bp_78 {\n font-size: 0.6875rem;\n line-height: 1rem;\n float: right;\n margin: 0.1875rem 0;\n color: #616161;\n li {\n padding: 0 1.5rem 0.25rem 0;\n display: inline-block;\n }\n }\n .custom_widget_MicrosoftFooter_c-list_105bp_78.custom_widget_MicrosoftFooter_f-bare_105bp_78 {\n padding-left: 0;\n list-style-type: none;\n }\n @media only screen and (max-width: 1083px) {\n display: flex;\n flex-wrap: wrap;\n padding: 1.875rem 1.5rem 1rem;\n }\n}\n.custom_widget_MicrosoftFooter_social-share_105bp_138 {\n position: fixed;\n top: 60%;\n transform: translateY(-50%);\n left: 0;\n z-index: 1000;\n}\n.custom_widget_MicrosoftFooter_sharing-options_105bp_146 {\n list-style: none;\n padding: 0;\n margin: 0;\n display: block;\n flex-direction: column;\n background-color: white;\n width: 2.6875rem;\n border-radius: 0 0.4375rem 0.4375rem 0;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-top-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_linkedin-icon_105bp_156:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-bottom-right-radius: 7px;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162:hover {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 {\n position: relative;\n display: block;\n margin: -0.125rem 0;\n transition: all 0.2s ease;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_linkedin-icon_105bp_156 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169:hover .custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n border-radius: 0;\n}\n.custom_widget_MicrosoftFooter_social-link-footer_105bp_169 img {\n width: 2.5rem;\n height: auto;\n transition: filter 0.3s ease;\n}\n.custom_widget_MicrosoftFooter_social-share-list_105bp_188 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162 {\n width: 2.5rem;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195 {\n border: 2px solid transparent;\n display: inline-block;\n position: relative;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover {\n opacity: 1;\n border: 2px solid white;\n box-sizing: border-box;\n}\n.custom_widget_MicrosoftFooter_share-icon_105bp_195:hover .custom_widget_MicrosoftFooter_label_105bp_207 {\n opacity: 1;\n visibility: visible;\n border: 2px solid white;\n box-sizing: border-box;\n border-left: none;\n}\n.custom_widget_MicrosoftFooter_label_105bp_207 {\n position: absolute;\n left: 100%;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n color: white;\n border-radius: 0 10 0 0.625rem;\n top: 50%;\n transform: translateY(-50%);\n height: 2.5rem;\n border-radius: 0 0.375rem 0.375rem 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 1.25rem 0.3125rem 1.25rem 0.5rem;\n margin-left: -0.0625rem;\n}\n.custom_widget_MicrosoftFooter_linkedin_105bp_156 {\n background-color: #0474b4;\n}\n.custom_widget_MicrosoftFooter_facebook_105bp_237 {\n background-color: #3c5c9c;\n}\n.custom_widget_MicrosoftFooter_twitter_105bp_240 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_reddit_105bp_244 {\n background-color: #fc4404;\n}\n.custom_widget_MicrosoftFooter_mail_105bp_247 {\n background-color: #848484;\n}\n.custom_widget_MicrosoftFooter_bluesky_105bp_250 {\n background-color: white;\n color: black;\n}\n.custom_widget_MicrosoftFooter_rss_105bp_254 {\n background-color: #ec7b1c;\n}\n#custom_widget_MicrosoftFooter_RSS_105bp_1 {\n width: 2.5rem;\n height: 2.5rem;\n}\n@media (max-width: 991px) {\n .custom_widget_MicrosoftFooter_social-share_105bp_138 {\n display: none;\n }\n}\n","tokens":{"context-uhf":"custom_widget_MicrosoftFooter_context-uhf_105bp_1","c-uhff-link":"custom_widget_MicrosoftFooter_c-uhff-link_105bp_12","c-uhff":"custom_widget_MicrosoftFooter_c-uhff_105bp_12","c-uhff-nav":"custom_widget_MicrosoftFooter_c-uhff-nav_105bp_35","c-heading-4":"custom_widget_MicrosoftFooter_c-heading-4_105bp_49","c-uhff-nav-row":"custom_widget_MicrosoftFooter_c-uhff-nav-row_105bp_57","c-uhff-nav-group":"custom_widget_MicrosoftFooter_c-uhff-nav-group_105bp_58","c-list":"custom_widget_MicrosoftFooter_c-list_105bp_78","f-bare":"custom_widget_MicrosoftFooter_f-bare_105bp_78","c-uhff-base":"custom_widget_MicrosoftFooter_c-uhff-base_105bp_94","c-uhff-ccpa":"custom_widget_MicrosoftFooter_c-uhff-ccpa_105bp_107","social-share":"custom_widget_MicrosoftFooter_social-share_105bp_138","sharing-options":"custom_widget_MicrosoftFooter_sharing-options_105bp_146","linkedin-icon":"custom_widget_MicrosoftFooter_linkedin-icon_105bp_156","social-share-rss-image":"custom_widget_MicrosoftFooter_social-share-rss-image_105bp_162","social-link-footer":"custom_widget_MicrosoftFooter_social-link-footer_105bp_169","social-share-list":"custom_widget_MicrosoftFooter_social-share-list_105bp_188","share-icon":"custom_widget_MicrosoftFooter_share-icon_105bp_195","label":"custom_widget_MicrosoftFooter_label_105bp_207","linkedin":"custom_widget_MicrosoftFooter_linkedin_105bp_156","facebook":"custom_widget_MicrosoftFooter_facebook_105bp_237","twitter":"custom_widget_MicrosoftFooter_twitter_105bp_240","reddit":"custom_widget_MicrosoftFooter_reddit_105bp_244","mail":"custom_widget_MicrosoftFooter_mail_105bp_247","bluesky":"custom_widget_MicrosoftFooter_bluesky_105bp_250","rss":"custom_widget_MicrosoftFooter_rss_105bp_254","RSS":"custom_widget_MicrosoftFooter_RSS_105bp_1"}},"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1745505309835","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBanner-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBanner-1745505309835","value":{"messageMarkedAsSpam":"This post has been marked as spam","messageMarkedAsSpam@board:TKB":"This article has been marked as spam","messageMarkedAsSpam@board:BLOG":"This post has been marked as spam","messageMarkedAsSpam@board:FORUM":"This discussion has been marked as spam","messageMarkedAsSpam@board:OCCASION":"This event has been marked as spam","messageMarkedAsSpam@board:IDEA":"This idea has been marked as spam","manageSpam":"Manage Spam","messageMarkedAsAbuse":"This post has been marked as abuse","messageMarkedAsAbuse@board:TKB":"This article has been marked as abuse","messageMarkedAsAbuse@board:BLOG":"This post has been marked as abuse","messageMarkedAsAbuse@board:FORUM":"This discussion has been marked as abuse","messageMarkedAsAbuse@board:OCCASION":"This event has been marked as abuse","messageMarkedAsAbuse@board:IDEA":"This idea has been marked as abuse","preModCommentAuthorText":"This comment will be published as soon as it is approved","preModCommentModeratorText":"This comment is awaiting moderation","messageMarkedAsOther":"This post has been rejected due to other reasons","messageMarkedAsOther@board:TKB":"This article has been rejected due to other reasons","messageMarkedAsOther@board:BLOG":"This post has been rejected due to other reasons","messageMarkedAsOther@board:FORUM":"This discussion has been rejected due to other reasons","messageMarkedAsOther@board:OCCASION":"This event has been rejected due to other reasons","messageMarkedAsOther@board:IDEA":"This idea has been rejected due to other reasons","messageArchived":"This post was archived on {date}","relatedUrl":"View Related Content","relatedContentText":"Showing related content","archivedContentLink":"View Archived Content"},"localOverride":false},"Category:category:Exchange":{"__typename":"Category","id":"category:Exchange","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Outlook":{"__typename":"Category","id":"category:Outlook","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Community-Info-Center":{"__typename":"Category","id":"category:Community-Info-Center","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:EducationSector":{"__typename":"Category","id":"category:EducationSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:DrivingAdoption":{"__typename":"Category","id":"category:DrivingAdoption","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Azure":{"__typename":"Category","id":"category:Azure","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows-Server":{"__typename":"Category","id":"category:Windows-Server","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftTeams":{"__typename":"Category","id":"category:MicrosoftTeams","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PublicSector":{"__typename":"Category","id":"category:PublicSector","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft365":{"__typename":"Category","id":"category:microsoft365","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:IoT":{"__typename":"Category","id":"category:IoT","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:HealthcareAndLifeSciences":{"__typename":"Category","id":"category:HealthcareAndLifeSciences","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:ITOpsTalk":{"__typename":"Category","id":"category:ITOpsTalk","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftLearn":{"__typename":"Category","id":"category:MicrosoftLearn","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Blog:board:MicrosoftLearnBlog":{"__typename":"Blog","id":"board:MicrosoftLearnBlog","blogPolicies":{"__typename":"BlogPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}},"boardPolicies":{"__typename":"BoardPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:AI":{"__typename":"Category","id":"category:AI","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftMechanics":{"__typename":"Category","id":"category:MicrosoftMechanics","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:MicrosoftforNonprofits":{"__typename":"Category","id":"category:MicrosoftforNonprofits","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:StartupsatMicrosoft":{"__typename":"Category","id":"category:StartupsatMicrosoft","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:PartnerCommunity":{"__typename":"Category","id":"category:PartnerCommunity","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Microsoft365Copilot":{"__typename":"Category","id":"category:Microsoft365Copilot","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Windows":{"__typename":"Category","id":"category:Windows","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:Content_Management":{"__typename":"Category","id":"category:Content_Management","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoft-security":{"__typename":"Category","id":"category:microsoft-security","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:microsoftintune":{"__typename":"Category","id":"category:microsoftintune","categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"QueryVariables:TopicReplyList:message:3905041:5":{"__typename":"QueryVariables","id":"TopicReplyList:message:3905041:5","value":{"id":"message:3905041","first":10,"sorts":{"postTime":{"direction":"DESC"}},"repliesFirst":3,"repliesFirstDepthThree":1,"repliesSorts":{"postTime":{"direction":"DESC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":true,"useBody":true,"useKudosCount":true,"useTimeToRead":false,"useMedia":false,"useReadOnlyIcon":false,"useRepliesCount":true,"useSearchSnippet":false,"useAcceptedSolutionButton":false,"useSolvedBadge":false,"useAttachments":false,"attachmentsFirst":5,"useTags":true,"useNodeAncestors":false,"useUserHoverCard":false,"useNodeHoverCard":false,"useModerationStatus":true,"usePreviewSubjectModal":false,"useMessageStatus":true}},"ROOT_MUTATION":{"__typename":"Mutation"},"CachedAsset:text:en_US-components/community/Navbar-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1745505309835","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content","gxcuf89792":"Tech Community","external-1":"Events","s-m-b":"Nonprofit Community","windows-server":"Windows Server","education-sector":"Education Sector","driving-adoption":"Driving Adoption","Common-content_management-link":"Content Management","microsoft-learn":"Microsoft Learn","s-q-l-server":"Content Management","partner-community":"Microsoft Partner Community","microsoft365":"Microsoft 365","external-9":".NET","external-8":"Teams","external-7":"Github","products-services":"Products","external-6":"Power Platform","communities-1":"Topics","external-5":"Microsoft Security","planner":"Outlook","external-4":"Microsoft 365","external-3":"Dynamics 365","azure":"Azure","healthcare-and-life-sciences":"Healthcare and Life Sciences","external-2":"Azure","microsoft-mechanics":"Microsoft Mechanics","microsoft-learn-1":"Community","external-10":"Learning Room Directory","microsoft-learn-blog":"Blog","windows":"Windows","i-t-ops-talk":"ITOps Talk","external-link-1":"View All","microsoft-securityand-compliance":"Microsoft Security","public-sector":"Public Sector","community-info-center":"Lounge","external-link-2":"View All","microsoft-teams":"Microsoft Teams","external":"Blogs","microsoft-endpoint-manager":"Microsoft Intune","startupsat-microsoft":"Startups at Microsoft","exchange":"Exchange","a-i":"AI and Machine Learning","io-t":"Internet of Things (IoT)","Common-microsoft365-copilot-link":"Microsoft 365 Copilot","outlook":"Microsoft 365 Copilot","external-link":"Community Hubs","communities":"Products"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1745505309835","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1745505309835","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1745505309835","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1745505309835","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLink-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1745505309835","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewStandard-1745505309835","value":{"anonymous":"Anonymous","author":"{messageAuthorLogin}","authorBy":"{messageAuthorLogin}","board":"{messageBoardTitle}","replyToUser":" to {parentAuthor}","showMoreReplies":"Show More","replyText":"Reply","repliesText":"Replies","markedAsSolved":"Marked as Solved","movedMessagePlaceholder.BLOG":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.TKB":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.FORUM":"{count, plural, =0 {This reply has been} other {These replies have been} }","movedMessagePlaceholder.IDEA":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.OCCASION":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholderUrlText":"moved.","messageStatus":"Status: ","statusChanged":"Status changed: {previousStatus} to {currentStatus}","statusAdded":"Status added: {status}","statusRemoved":"Status removed: {status}","labelExpand":"expand replies","labelCollapse":"collapse replies","unhelpfulReason.reason1":"Content is outdated","unhelpfulReason.reason2":"Article is missing information","unhelpfulReason.reason3":"Content is for a different Product","unhelpfulReason.reason4":"Doesn't match what I was searching for"},"localOverride":false},"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/ThreadedReplyList-1745505309835","value":{"title":"{count, plural, one{# Reply} other{# Replies}}","title@board:BLOG":"{count, plural, one{# Comment} other{# Comments}}","title@board:TKB":"{count, plural, one{# Comment} other{# Comments}}","title@board:IDEA":"{count, plural, one{# Comment} other{# Comments}}","title@board:OCCASION":"{count, plural, one{# Comment} other{# Comments}}","noRepliesTitle":"No Replies","noRepliesTitle@board:BLOG":"No Comments","noRepliesTitle@board:TKB":"No Comments","noRepliesTitle@board:IDEA":"No Comments","noRepliesTitle@board:OCCASION":"No Comments","noRepliesDescription":"Be the first to reply","noRepliesDescription@board:BLOG":"Be the first to comment","noRepliesDescription@board:TKB":"Be the first to comment","noRepliesDescription@board:IDEA":"Be the first to comment","noRepliesDescription@board:OCCASION":"Be the first to comment","messageReadOnlyAlert:BLOG":"Comments have been turned off for this post","messageReadOnlyAlert:TKB":"Comments have been turned off for this article","messageReadOnlyAlert:IDEA":"Comments have been turned off for this idea","messageReadOnlyAlert:FORUM":"Replies have been turned off for this discussion","messageReadOnlyAlert:OCCASION":"Comments have been turned off for this event"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyCallToAction-1745505309835","value":{"leaveReply":"Leave a reply...","leaveReply@board:BLOG@message:root":"Leave a comment...","leaveReply@board:TKB@message:root":"Leave a comment...","leaveReply@board:IDEA@message:root":"Leave a comment...","leaveReply@board:OCCASION@message:root":"Leave a comment...","repliesTurnedOff.FORUM":"Replies are turned off for this topic","repliesTurnedOff.BLOG":"Comments are turned off for this topic","repliesTurnedOff.TKB":"Comments are turned off for this topic","repliesTurnedOff.IDEA":"Comments are turned off for this topic","repliesTurnedOff.OCCASION":"Comments are turned off for this topic","infoText":"Stop poking me!"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1745505309835","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1745505309835","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCoverImage-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCoverImage-1745505309835","value":{"coverImageTitle":"Cover Image"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeTitle-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeTitle-1745505309835","value":{"nodeTitle":"{nodeTitle, select, community {Community} other {{nodeTitle}}} "},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTimeToRead-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTimeToRead-1745505309835","value":{"minReadText":"{min} MIN READ"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1745505309835","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1745505309835","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1745505309835","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1745505309835","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1745505309835","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1745505309835","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRevision-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRevision-1745505309835","value":{"lastUpdatedDatePublished":"{publishCount, plural, one{Published} other{Updated}} {date}","lastUpdatedDateDraft":"Created {date}","version":"Version {major}.{minor}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1745505309835","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageAuthorBio-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageAuthorBio-1745505309835","value":{"sendMessage":"Send Message","actionMessage":"Follow this blog board to get notified when there's new activity","coAuthor":"CO-PUBLISHER","contributor":"CONTRIBUTOR","userProfile":"View Profile","iconlink":"Go to {name} {type}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1745505309835","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1745505309835","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"CachedAsset:text:en_US-components/attachments/AttachmentView/AttachmentViewChip-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/attachments/AttachmentView/AttachmentViewChip-1745505309835","value":{"errorTitle":"Failed!","previewFile":"Preview File","downloadFile":"Download File {name}","removeFile":"Remove File {name}","errorBadExtension":"This file does not have a valid extension. \"{extensions}\" are the valid extensions.","errorFileEmpty":"This file is empty or does not exist.","errorTooLarge":"The maximum file size is: {maxFileSize}.","errorTooMany":"Too many attachments. The maximum number of attachments per message is: {maxAttachmentCount, number, integer}.","errorDuplicate":"This file is already attached."},"localOverride":false},"CachedAsset:text:en_US-components/users/UserRegistrationDate-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserRegistrationDate-1745505309835","value":{"noPrefix":"{date}","withPrefix":"Joined {date}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeAvatar-1745505309835","value":{"altTitle":"Node avatar for {nodeTitle}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeDescription-1745505309835","value":{"description":"{description}"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1745505309835","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505309835":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1745505309835","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false}}}},"page":"/blogs/BlogMessagePage/BlogMessagePage","query":{"boardId":"sapapplications","messageSubject":"sap-netweaver-7-5-with-maxdb-7-9-on-azure-using-azure-netapp-files-anf","messageId":"3905041"},"buildId":"HEhyUrv5OXNBIbfCLaOrw","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"o365","openTelemetryServiceVersion":"25.1.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/blogs/BlogArticleWidget/BlogArticleWidget.tsx","./components/external/components/ExternalComponent.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","../shared/client/components/common/List/UnwrappedList/UnwrappedList.tsx","./components/attachments/AttachmentView/AttachmentView.tsx","./components/attachments/AttachmentView/AttachmentViewChip/AttachmentViewChip.tsx","./components/tags/TagView/TagView.tsx","./components/tags/TagView/TagViewChip/TagViewChip.tsx"],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1730819800000/analytics.js?page.id=BlogMessagePage&entity.id=board%3Asapapplications&entity.id=message%3A3905041","strategy":"afterInteractive"}]}