Beginner's Guide

9 Topics
"}},"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\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/community/NavbarDropdownToggle\"]})":[{"__ref":"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/common/OverflowNav\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageView/MessageViewInline\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/users/UserLink\"]})":[{"__ref":"CachedAsset:text:en_US-components/users/UserLink-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageSubject\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageSubject-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageTime\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageTime-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/nodes/NodeIcon\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageUnreadCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageViewCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/kudos/KudosCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/kudos/KudosCount-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"components/messages/MessageRepliesCount\"]})":[{"__ref":"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505309813"}],"cachedText({\"lastModified\":\"1745505309813\",\"locale\":\"en-US\",\"namespaces\":[\"shared/client/components/users/UserAvatar\"]})":[{"__ref":"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505309813"}]},"CachedAsset:pages-1745487427895":{"__typename":"CachedAsset","id":"pages-1745487427895","value":[{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogViewAllPostsPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId/all-posts/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CasePortalPage","type":"CASE_PORTAL","urlPath":"/caseportal","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CreateGroupHubPage","type":"GROUP_HUB","urlPath":"/groups/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CaseViewPage","type":"CASE_DETAILS","urlPath":"/case/:caseId/:caseNumber","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"InboxPage","type":"COMMUNITY","urlPath":"/inbox","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"HelpFAQPage","type":"COMMUNITY","urlPath":"/help","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaMessagePage","type":"IDEA_POST","urlPath":"/idea/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaViewAllIdeasPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/all-ideas/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"LoginPage","type":"USER","urlPath":"/signin","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogPostPage","type":"BLOG","urlPath":"/category/:categoryId/blogs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"UserBlogPermissions.Page","type":"COMMUNITY","urlPath":"/c/user-blog-permissions/page","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ThemeEditorPage","type":"COMMUNITY","urlPath":"/designer/themes","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbViewAllArticlesPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId/all-articles/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllEvents","type":"CUSTOM","urlPath":"/Events","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"OccasionEditPage","type":"EVENT","urlPath":"/event/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"OAuthAuthorizationAllowPage","type":"USER","urlPath":"/auth/authorize/allow","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"PageEditorPage","type":"COMMUNITY","urlPath":"/designer/pages","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"PostPage","type":"COMMUNITY","urlPath":"/category/:categoryId/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumBoardPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbBoardPage","type":"TKB","urlPath":"/category/:categoryId/kb/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"EventPostPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"UserBadgesPage","type":"COMMUNITY","urlPath":"/users/:login/:userId/badges","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"GroupHubMembershipAction","type":"GROUP_HUB","urlPath":"/membership/join/:nodeId/:membershipType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"MaintenancePage","type":"COMMUNITY","urlPath":"/maintenance","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaReplyPage","type":"IDEA_REPLY","urlPath":"/idea/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"UserSettingsPage","type":"USER","urlPath":"/mysettings/:userSettingsTab","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"GroupHubsPage","type":"GROUP_HUB","urlPath":"/groups","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumPostPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"OccasionRsvpActionPage","type":"OCCASION","urlPath":"/event/:boardId/:messageSubject/:messageId/rsvp/:responseType","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"VerifyUserEmailPage","type":"USER","urlPath":"/verifyemail/:userId/:verifyEmailToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"AllOccasionsPage","type":"OCCASION","urlPath":"/category/:categoryId/events/:boardId/all-events/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"EventBoardPage","type":"EVENT","urlPath":"/category/:categoryId/events/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbReplyPage","type":"TKB_REPLY","urlPath":"/kb/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaBoardPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CommunityGuideLinesPage","type":"COMMUNITY","urlPath":"/communityguidelines","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CaseCreatePage","type":"SALESFORCE_CASE_CREATION","urlPath":"/caseportal/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbEditPage","type":"TKB","urlPath":"/kb/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForgotPasswordPage","type":"USER","urlPath":"/forgotpassword","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaEditPage","type":"IDEA","urlPath":"/idea/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TagPage","type":"COMMUNITY","urlPath":"/tag/:tagName","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogBoardPage","type":"BLOG","urlPath":"/category/:categoryId/blog/:boardId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"OccasionMessagePage","type":"OCCASION_TOPIC","urlPath":"/event/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ManageContentPage","type":"COMMUNITY","urlPath":"/managecontent","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ClosedMembershipNodeNonMembersPage","type":"GROUP_HUB","urlPath":"/closedgroup/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CommunityPage","type":"COMMUNITY","urlPath":"/","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumMessagePage","type":"FORUM_TOPIC","urlPath":"/discussions/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"IdeaPostPage","type":"IDEA","urlPath":"/category/:categoryId/ideas/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"CommunityHub.Page","type":"CUSTOM","urlPath":"/Directory","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogMessagePage","type":"BLOG_ARTICLE","urlPath":"/blog/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"RegistrationPage","type":"USER","urlPath":"/register","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"EditGroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumEditPage","type":"FORUM","urlPath":"/discussions/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ResetPasswordPage","type":"USER","urlPath":"/resetpassword/:userId/:resetPasswordToken","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1730819800000,"localOverride":null,"page":{"id":"AllBlogs.Page","type":"CUSTOM","urlPath":"/blogs","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbMessagePage","type":"TKB_ARTICLE","urlPath":"/kb/:boardId/:messageSubject/:messageId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogEditPage","type":"BLOG","urlPath":"/blog/:boardId/:messageSubject/:messageId/edit","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ManageUsersPage","type":"USER","urlPath":"/users/manage/:tab?/:manageUsersTab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumReplyPage","type":"FORUM_REPLY","urlPath":"/discussions/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"PrivacyPolicyPage","type":"COMMUNITY","urlPath":"/privacypolicy","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"NotificationPage","type":"COMMUNITY","urlPath":"/notifications","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"UserPage","type":"USER","urlPath":"/users/:login/:userId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"OccasionReplyPage","type":"OCCASION_REPLY","urlPath":"/event/:boardId/:messageSubject/:messageId/comments/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ManageMembersPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId/manage/:tab?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"SearchResultsPage","type":"COMMUNITY","urlPath":"/search","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"BlogReplyPage","type":"BLOG_REPLY","urlPath":"/blog/:boardId/:messageSubject/:messageId/replies/:replyId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"GroupHubPage","type":"GROUP_HUB","urlPath":"/group/:groupHubId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TermsOfServicePage","type":"COMMUNITY","urlPath":"/termsofservice","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"CategoryPage","type":"CATEGORY","urlPath":"/category/:categoryId","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"ForumViewAllTopicsPage","type":"FORUM","urlPath":"/category/:categoryId/discussions/:boardId/all-topics/(/:after|/:before)?","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"localOverride":null,"page":{"id":"TkbPostPage","type":"TKB","urlPath":"/category/:categoryId/kbs/:boardId/create","__typename":"PageDescriptor"},"__typename":"PageResource"},{"lastUpdatedTime":1745487427895,"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"},"CachedAsset:theme:customTheme1-1745487427341":{"__typename":"CachedAsset","id":"theme:customTheme1-1745487427341","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1745505309813","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1745505309813","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:text:en_US-pages/tags/TagPage-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-pages/tags/TagPage-1745505309813","value":{"tagPageTitle":"Tag:\"{tagName}\" | {communityTitle}","tagPageForNodeTitle":"Tag:\"{tagName}\" in \"{title}\" | {communityTitle}","name":"Tags Page","tag":"Tag: {tagName}"},"localOverride":false},"Category:category:EducationSector":{"__typename":"Category","id":"category:EducationSector","entityType":"CATEGORY","displayId":"EducationSector","nodeType":"category","depth":3,"title":"Education Sector","shortTitle":"Education Sector","parent":{"__ref":"Category:category:solutions"},"categoryPolicies":{"__typename":"CategoryPolicies","canReadNode":{"__typename":"PolicyResult","failureReason":null}}},"Category:category:top":{"__typename":"Category","id":"category:top","displayId":"top","nodeType":"category","depth":0,"title":"Top"},"Category:category:communities":{"__typename":"Category","id":"category:communities","displayId":"communities","nodeType":"category","depth":1,"parent":{"__ref":"Category:category:top"},"title":"Communities"},"Category:category:solutions":{"__typename":"Category","id":"category:solutions","displayId":"solutions","nodeType":"category","depth":2,"parent":{"__ref":"Category:category:communities"},"title":"Topics"},"Blog:board:EducatorDeveloperBlog":{"__typename":"Blog","id":"board:EducatorDeveloperBlog","entityType":"BLOG","displayId":"EducatorDeveloperBlog","nodeType":"board","depth":4,"conversationStyle":"BLOG","title":"Educator Developer Blog","description":"","avatar":null,"profileSettings":{"__typename":"ProfileSettings","language":null},"parent":{"__ref":"Category:category:EducationSector"},"ancestors":{"__typename":"CoreNodeConnection","edges":[{"__typename":"CoreNodeEdge","node":{"__ref":"Community:community:gxcuf89792"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:communities"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:solutions"}},{"__typename":"CoreNodeEdge","node":{"__ref":"Category:category:EducationSector"}}]},"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":"Educator Developer Blog","tagPolicies":{"__typename":"TagPolicies","canSubscribeTagOnNode":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.subscribe_labels.allow.accessDenied","args":[]}},"canManageTagDashboard":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","key":"error.lithium.policies.labels.action.corenode.admin_labels.allow.accessDenied","args":[]}}}},"CachedAsset:quilt:o365.prod:pages/tags/TagPage:board:EducatorDeveloperBlog-1745502712660":{"__typename":"CachedAsset","id":"quilt:o365.prod:pages/tags/TagPage:board:EducatorDeveloperBlog-1745502712660","value":{"id":"TagPage","container":{"id":"Common","headerProps":{"removeComponents":["community.widget.bannerWidget"],"__typename":"QuiltContainerSectionProps"},"items":[{"id":"tag-header-widget","layout":"ONE_COLUMN","bgColor":"var(--lia-bs-white)","showBorder":"BOTTOM","sectionEditLevel":"LOCKED","columnMap":{"main":[{"id":"tags.widget.TagsHeaderWidget","__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"},{"id":"messages-list-for-tag-widget","layout":"ONE_COLUMN","columnMap":{"main":[{"id":"messages.widget.messageListForNodeByRecentActivityWidget","props":{"viewVariant":{"type":"inline","props":{"useUnreadCount":true,"useViewCount":true,"useAuthorLogin":true,"clampBodyLines":3,"useAvatar":true,"useBoardIcon":false,"useKudosCount":true,"usePreviewMedia":true,"useTags":false,"useNode":true,"useNodeLink":true,"useTextBody":true,"truncateBodyLength":-1,"useBody":true,"useRepliesCount":true,"useSolvedBadge":true,"timeStampType":"conversation.lastPostingActivityTime","useMessageTimeLink":true,"clampSubjectLines":2}},"panelType":"divider","useTitle":false,"hideIfEmpty":false,"pagerVariant":{"type":"loadMore"},"style":"list","showTabs":true,"tabItemMap":{"default":{"mostRecent":true,"mostRecentUserContent":false,"newest":false},"additional":{"mostKudoed":true,"mostViewed":true,"mostReplies":false,"noReplies":false,"noSolutions":false,"solutions":false}}},"__typename":"QuiltComponent"}],"__typename":"OneSectionColumns"},"__typename":"OneColumnQuiltSection"}],"__typename":"QuiltContainer"},"__typename":"Quilt"},"localOverride":false},"CachedAsset:quiltWrapper:o365.prod:Common:1745505310334":{"__typename":"CachedAsset","id":"quiltWrapper:o365.prod:Common:1745505310334","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1745505309813","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-1745487470071":{"__typename":"CachedAsset","id":"component:custom.widget.community_banner-en-1745487470071","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-1745487470071":{"__typename":"CachedAsset","id":"component:custom.widget.HeroBanner-en-1745487470071","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-1745487470071":{"__typename":"CachedAsset","id":"component:custom.widget.MicrosoftFooter-en-1745487470071","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1745505309813","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagsHeaderWidget-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagsHeaderWidget-1745505309813","value":{"tag":"{tagName}","topicsCount":"{count} {count, plural, one {Topic} other {Topics}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1745505309813","value":{"title@userScope:other":"Recent Content","title@userScope:self":"Contributions","title@board:FORUM@userScope:other":"Recent Discussions","title@board:BLOG@userScope:other":"Recent Blogs","emptyDescription":"No content to show","MessageListForNodeByRecentActivityWidgetEditor.nodeScope.label":"Scope","title@instance:1722894000155":"Recent Discussions","title@instance:1727367112619":"Recent Blog Articles","title@instance:1727367069748":"Recent Discussions","title@instance:1727366213114":"Latest Discussions","title@instance:1727899609720":"","title@instance:1727363308925":"Latest Discussions","title@instance:1737115580352":"Latest Articles","title@instance:1720453418992":"Recent Discssions","title@instance:1727365950181":"Latest Blog Articles","title@instance:bmDPnI":"Latest Blog Articles","title@instance:IiDDJZ":"Latest Blog Articles","title@instance:1721244347979":"Latest blog posts","title@instance:1728383752171":"Related Content","title@instance:1722893956545":"Latest Skilling Resources","title@instance:dhcgCU":"Latest Discussions"},"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: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}}},"Conversation:conversation:4402263":{"__typename":"Conversation","id":"conversation:4402263","topic":{"__typename":"BlogTopicMessage","uid":4402263},"lastPostingActivityTime":"2025-05-05T00:00:00.013-07:00","solved":false},"User:user:2181140":{"__typename":"User","uid":2181140,"login":"ShivamGoyal03","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMTgxMTQwLTU2NDU5OWlENTNEOTUwNTkyNDMwODVE"},"id":"user:2181140"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjYzLTdIamlWOQ?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjYzLTdIamlWOQ?revision=2","title":"download.jpeg","associationType":"COVER","width":1024,"height":660,"altText":""},"BlogTopicMessage:message:4402263":{"__typename":"BlogTopicMessage","subject":"AI Agents in Production: From Prototype to Reality - Part 10","conversation":{"__ref":"Conversation:conversation:4402263"},"id":"message:4402263","revisionNum":2,"uid":4402263,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, the tenth and final installment in a series on AI agents, focuses on deploying AI agents to production. It covers evaluating agent performance, addressing common issues, and managing costs. The post emphasizes the importance of a robust evaluation system, providing potential solutions for performance issues, and outlining cost management strategies such as response caching, using smaller models, and implementing router models. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":81},"postTime":"2025-05-05T00:00:00.013-07:00","lastPublishTime":"2025-05-05T00:00:00.013-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This marks the final installment in our AI Agents for Beginners series, based on the awesome repository (link to the repo). I hope you've enjoyed this journey into the world of agentic AI! In previous posts ([links to parts 1-9 at the end]), we've covered the fundamentals and key design patterns. Now, let's explore the practical considerations of deploying AI agents to production, focusing on performance, cost management, and evaluation. As an active member of the AI community, I'm excited to share these insights to help you bring your agentic AI projects to life. \n From Lab to Production: Key Considerations \n Successfully deploying AI agents requires careful planning and attention to detail. We need to consider: \n \n How to plan the deployment of your AI Agent to production effectively. \n What are the common mistakes and issues that you may face when deploying your AI Agent to production. \n How to manage costs while still maintaining the performance of your AI Agent. \n \n Evaluating Your AI Agents: A Continuous Process \n Before, during, and after deployment, a robust evaluation system is critical for ensuring alignment with your goals and user needs. This evaluation should encompass not just the agent's output but the entire system: \n \n The initial model request \n The agent's ability to identify user intent \n The agent's ability to select the correct tool \n The tool's response \n The agent's interpretation of the tool's response \n User feedback \n \n This modular approach allows you to pinpoint areas for improvement and monitor the impact of changes to models, prompts, and tools. \n Common Issues and Solutions \n Here are some common challenges and potential solutions for AI agents: \n Issue Potential Solution AI Agent not performing tasks consistently Refine the prompt for clarity. Divide tasks into subtasks managed by multiple agents. AI Agent running into continuous loops Implement clear termination conditions. For complex tasks, use larger models specialized for reasoning. AI Agent tool calls are not performing well Test and validate the tool independently. Refine tool parameters, prompts, and naming conventions. Multi-Agent system not performing consistently Refine prompts for individual agents for clarity and distinction. Implement a hierarchical system with a routing agent for agent selection. \n Cost Management Strategies \n Effective cost management is essential for sustainable AI agent deployments: \n \n Caching Responses: Identify and cache common requests to reduce redundant processing. Use simpler AI models to assess request similarity. \n Smaller Models (SLMs): Explore using SLMs for suitable tasks to reduce costs without compromising performance. A robust evaluation system will help you compare SLM and LLM performance. \n Router Models: Use a router model to direct requests to the most appropriate model (LLM or SLM) based on complexity, optimizing resource allocation. \n \n Thank You for Joining the Journey! \n This marks the end of the \"AI Agents for Beginners\" series. I hope this series has provided you with a solid foundation for building AI Agents. \n I encourage you to join the Azure AI Community Discord to continue learning, building, and connecting with fellow AI enthusiasts. \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n Part 5: AI Agents: Mastering Agentic RAG \n Part 6: Building Trustworthy Agents \n Part 7: Planning and Orchestration with the Planning Design Pattern \n Part 8: Multi-Agent Design Pattern \n Part 9: Metacognition \n \n This concludes the AI Agents for Beginners series! I'm eager to see the incredible AI agents you'll create. You can find more of my projects and connect with me on: \n \n GitHub: https://github.com/ShivamGoyal03 \n LinkedIn: https://linkedin.com/in/shivam2003 \n ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"3976","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjYzLTdIamlWOQ?revision=2\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjYzLTdIamlWOQ?revision=2"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4402253":{"__typename":"Conversation","id":"conversation:4402253","topic":{"__typename":"BlogTopicMessage","uid":4402253},"lastPostingActivityTime":"2025-04-28T00:00:00.010-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjUzLWNvYUpPWg?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjUzLWNvYUpPWg?revision=2","title":"importance-of-metacognition.png","associationType":"COVER","width":1920,"height":1080,"altText":""},"BlogTopicMessage:message:4402253":{"__typename":"BlogTopicMessage","subject":"AI Agents: Metacognition for Self-Aware Intelligence - Part 9","conversation":{"__ref":"Conversation:conversation:4402253"},"id":"message:4402253","revisionNum":2,"uid":4402253,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 9 in a series on AI agents, introduces the concept of metacognition, or \"thinking about thinking,\" and its application to AI agents. It explains how metacognition enables agents to self-evaluate, adapt, and improve their performance. The post outlines the key components of an AI agent and illustrates metacognition with a travel agent example, demonstrating how it can enhance planning, error correction, and personalization. The post also discusses the Corrective RAG approach and demonstrates code snippets. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":156},"postTime":"2025-04-28T00:00:00.010-07:00","lastPublishTime":"2025-04-28T00:00:00.010-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series, based on Microsoft's AI Agents for Beginners repository, continues with an exciting topic: Metacognition in AI Agents. In previous posts ([links to parts 1-8 at the end]), we've covered fundamental concepts and design patterns. Now, we'll explore how to equip AI agents with the ability to \"think about thinking,\" enabling them to evaluate, adapt, and improve their own cognitive processes. \n What is Metacognition? \n Metacognition, often described as \"thinking about thinking,\" refers to higher-order cognitive processes that involve self-awareness and self-regulation of one's cognitive activities. In AI, this means enabling agents to evaluate their actions, identify errors, and adjust strategies based on past experiences. This self-awareness allows AI agents to make better decisions, adapt to new situations, and improve performance over time. \n Why is Metacognition Important for AI Agents? \n Metacognition is crucial for: \n \n Self-Reflection: Agents can assess their performance and pinpoint areas for improvement. \n Adaptability: They can modify strategies based on experiences and changing environments. \n Error Correction: Agents can detect and correct errors autonomously. \n Resource Management: They can optimize resource usage (time, computation) through planning and evaluation. \n \n Key Components of an AI Agent with Metacognition \n An AI agent incorporating metacognition builds upon these basic components: \n \n Persona: Defines the agent's personality and interaction style. \n Tools: Represents the agent's capabilities and functions. \n Skills: Encompasses the agent's knowledge and expertise. \n \n These components work together to form an \"expertise unit,\" but metacognition adds a layer of self-awareness and adaptability. \n Metacognition in Action: A Travel Agent Example \n Consider a \"Travel Agent\" AI assisting users with vacation planning. It can leverage metacognition to provide more personalized recommendations by: \n \n Analyzing user feedback to determine what was well-received and what wasn't. \n Adapting to user preferences (e.g., avoiding crowded places if a user previously expressed a dislike for them). \n Correcting past errors (e.g., rigorously checking hotel availability after previously recommending a fully booked hotel). \n \n Planning in Agents \n Planning is a key aspect of AI agent behavior, involving outlining the steps required to achieve a goal while considering the current state, resources, and potential obstacles. The Travel Agent follows these steps: \n \n Gather User Preferences \n Retrieve Information (flights, hotels, attractions) \n Generate Recommendations \n Present Itinerary to User \n Collect Feedback \n Adjust Based on Feedback \n Final Confirmation \n Book and Confirm Reservations \n Provide Ongoing Support \n \n Corrective RAG Approach \n Corrective Retrieval-Augmented Generation (RAG) focuses on correcting errors and improving accuracy. This involves: \n \n Prompting Technique: Using specific prompts to guide information retrieval. \n Tool: Implementing algorithms to evaluate the relevance of retrieved information. \n Evaluation: Continuously assessing the agent's performance and making adjustments. \n \n Compared to Pre-emptive Context Load, which is what happens if we load travel destinations into the agent system. \n Demonstrating Metacognition in Code \n To demonstrate metacognition, let's create a simple agent that reflects on its decision-making process. We'll use a hotel recommendation agent as an example. It starts with the goal of picking cheapest hotel but the result aren't of good quality, so it uses best quality instead. \n The key aspects of this code illustrating metacognition are: the ability to evaluate previous choices, and adjust it's strategies as a result. \n Summary and Further Exploration \n Metacognition is a powerful tool for enhancing AI agents, making them more intelligent, adaptable, and efficient. Explore the provided code examples and additional resources to further delve into this fascinating area. \n Further Resources and Learning \n \n ai-agents-for-beginners/09-metacognition at main · microsoft/ai-agents-for-beginners \n AI Agents for Beginners Repository \n \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n Part 5: AI Agents: Mastering Agentic RAG \n Part 6: Building Trustworthy Agents \n Part 7: Planning and Orchestration with the Planning Design Pattern \n Part 8: Multi-Agent Design Pattern \n \n If you have any further questions or would like to connect for more discussion, feel free to reach out to me on and continue your learning and discussions on the Microsoft Azure AI Foundry Discord. ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4838","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjUzLWNvYUpPWg?revision=2\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjUzLWNvYUpPWg?revision=2"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4402246":{"__typename":"Conversation","id":"conversation:4402246","topic":{"__typename":"BlogTopicMessage","uid":4402246},"lastPostingActivityTime":"2025-04-21T00:00:00.012-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjQ2LVdwOWZPUg?revision=1\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjQ2LVdwOWZPUg?revision=1","title":"multi-agent-group-chat.png","associationType":"COVER","width":1920,"height":1080,"altText":""},"BlogTopicMessage:message:4402246":{"__typename":"BlogTopicMessage","subject":"AI Agents: The Multi-Agent Design Pattern - Part 8","conversation":{"__ref":"Conversation:conversation:4402246"},"id":"message:4402246","revisionNum":1,"uid":4402246,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 8 in a series on AI agents, explores the Multi-Agent Design Pattern, outlining the benefits and key components of building systems with multiple interacting agents. It details the scenarios where multi-agent systems excel (large workloads, complex tasks, diverse expertise), highlights their advantages over single-agent approaches (specialization, scalability, fault tolerance), and discusses the fundamental building blocks for implementation, including agent communication, coordination mechanisms, and architectural considerations. The post introduces common multi-agent patterns (group chat, hand-off, collaborative filtering) and illustrates these concepts with a refund process example. Finally, it includes a practical assignment and provides links to further resources and previous posts in the series. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":897},"postTime":"2025-04-21T00:00:00.012-07:00","lastPublishTime":"2025-04-21T00:00:00.012-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series exploring AI agents, based on Microsoft's AI Agents for Beginners repository, continues. In previous posts ([links to parts 1-7 at the end]), we've built a solid foundation, exploring agent fundamentals, frameworks, and design principles. Now, we'll delve into the Multi-Agent Design Pattern, a powerful approach for tackling complex tasks by leveraging the collective intelligence of multiple specialized agents. \n Introduction to Multi-Agent Systems \n As you progress in building AI agent applications, you'll inevitably encounter scenarios where a single agent isn't enough. This is where the Multi-Agent Design Pattern comes into play. But how do you know when to transition to a multi-agent system and what are the benefits? \n When to Use Multi-Agent Systems \n Multi-agent systems are particularly well-suited for: \n \n Large Workloads: Dividing tasks among multiple agents enables parallel processing and faster completion. \n Complex Tasks: Breaking down intricate tasks into manageable subtasks allows agents to specialize in specific areas. \n Diverse Expertise Requirements: Different agents can bring unique skills and knowledge to bear on various aspects of a task. \n \n Advantages of Multi-Agent Systems \n Compared to single-agent systems, multi-agent systems offer several key advantages: \n \n Specialization: Each agent can focus on a specific task, leading to increased efficiency and expertise. \n Scalability: It is easier to scale the system by adding more agents. \n Fault Tolerance: The system remains resilient even if one agent fails, as other agents can continue functioning. \n \n Building Blocks of a Multi-Agent System \n Implementing the Multi-Agent Design Pattern involves several key building blocks: \n \n Agent Communication: Define protocols and methods for agents to communicate and share information (e.g., sharing travel dates between flight and hotel booking agents). \n Coordination Mechanisms: Establish rules and strategies for agents to coordinate their actions to meet overall goals and constraints (e.g., ensuring hotel proximity to the airport). \n Agent Architecture: Design each agent with the internal structure needed to make decisions and learn from interactions. \n Visibility into Multi-Agent Interactions: Implement tools and techniques for tracking agent activities and interactions, enabling debugging, optimization, and monitoring. \n Multi-Agent Patterns: Employ established patterns like centralized, decentralized, or hybrid architectures to structure the system. \n Human-in-the-Loop: Integrate human oversight and intervention where necessary. \n \n Multi-Agent Patterns in Action \n Here are a few common multi-agent patterns: \n \n Group Chat: Multiple agents communicate in a shared environment (e.g., team collaboration, customer support). \n Hand-off: Agents pass tasks to each other based on predefined rules (e.g., customer support escalation, workflow automation). \n Collaborative Filtering: Agents with diverse expertise collaborate to make recommendations (e.g., stock recommendations from industry, technical, and fundamental analysis experts). \n \n Real-World Scenario: Refund Process \n Consider a refund process: \n \n Specific Agents: Customer agent, Seller agent, Payment agent, Resolution agent, Compliance agent. \n General Agents: Shipping agent, Feedback agent, Escalation agent, Notification agent, Analytics agent, Audit agent, Reporting agent, Knowledge agent, Security agent, Quality agent. \n \n Next Steps \n As an exercise, design a multi-agent system for a customer support process, defining agent roles, responsibilities, and interactions. Consider both specific and general agents. \n The AI Agents for Beginners repository offers valuable resources for further exploration. \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n Part 5: AI Agents: Mastering Agentic RAG \n Part 6: Building Trustworthy Agents \n Part 7: Planning and Orchestration with the Planning Design Pattern \n \n If you have any further questions or would like to connect for more discussion, feel free to reach out to me on LinkedIn | GitHub ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4361","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjQ2LVdwOWZPUg?revision=1\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00NDAyMjQ2LVdwOWZPUg?revision=1"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4399204":{"__typename":"Conversation","id":"conversation:4399204","topic":{"__typename":"BlogTopicMessage","uid":4399204},"lastPostingActivityTime":"2025-04-14T04:04:52.172-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjA0LUI3Uk5GZA?revision=3\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjA0LUI3Uk5GZA?revision=3","title":"defining-goals-tasks.png","associationType":"COVER","width":1920,"height":1080,"altText":""},"BlogTopicMessage:message:4399204":{"__typename":"BlogTopicMessage","subject":"AI Agents: Planning and Orchestration with the Planning Design Pattern - Part 7","conversation":{"__ref":"Conversation:conversation:4399204"},"id":"message:4399204","revisionNum":3,"uid":4399204,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 7 in a series on AI agents, focuses on the Planning Design Pattern for effective task orchestration. It explains how to define clear goals, decompose complex tasks into manageable subtasks, and leverage structured output (e.g., JSON) for seamless communication between agents. The post includes code snippets demonstrating how to create a planning agent, orchestrate multi-agent workflows, and implement iterative planning for dynamic adaptation. It also links to a practical example notebook (07-autogen.ipynb) and further resources like AutoGen Magnetic One, encouraging readers to explore advanced planning concepts. Links to the previous posts in the series are provided for easy access to foundational AI agent concepts. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":402},"postTime":"2025-04-14T04:04:52.172-07:00","lastPublishTime":"2025-04-14T04:04:52.172-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series, based on Microsoft's AI Agents for Beginners repository, continues with a focus on the Planning Design Pattern. In previous posts (links at the end!), we've built a strong foundation in AI agent concepts. Now, we'll explore how to design agents that can effectively plan and orchestrate complex tasks, breaking them down into manageable subtasks and coordinating their execution. \n Introduction to Planning Design \n The Planning Design Pattern helps AI agents tackle complex goals by providing a structured approach to task decomposition and execution. This involves: \n \n Defining a clear overall goal. \n Breaking down the task into smaller, manageable subtasks. \n Leveraging structured output for easier processing. \n Using an event-driven approach for dynamic adaptation. \n \n Defining Goals and Decomposing Tasks \n A well-defined goal is crucial for effective agent planning. Consider the goal \"Generate a 3-day travel itinerary.\" While seemingly simple, it requires refinement to ensure the agent understands the desired outcome (flights, hotels, activities, etc.). \n Task Decomposition: We break down complex tasks into smaller, more manageable subtasks: \n \n Flight Booking \n Hotel Booking \n Car Rental \n Personalization \n \n This allows specialized agents or processes to handle each subtask, improving modularity and enabling incremental enhancements (e.g., adding food recommendations later). \n Structured Output for Seamless Communication \n Structured output (like JSON) simplifies processing for other agents and services, especially in multi-agent systems. Here's how to define the structure for a travel plan: \n class TravelSubTask(BaseModel):\n task_details: str\n assigned_agent: AgentEnum\n\nclass TravelPlan(BaseModel):\n main_task: str\n subtasks: List[TravelSubTask]\n is_greeting: bool \n Planning Agent with Multi-Agent Orchestration \n A Semantic Router Agent can coordinate multiple specialized agents. It receives a user request, generates a structured plan, routes subtasks, and summarizes the outcome. Here's the core logic for creating the plan: \n messages = [\n SystemMessage(content=\"\"\"You are a planner agent...\"\"\", source=\"system\"),\n UserMessage(content=\"Create a travel plan...\", source=\"user\"),\n]\nresponse = await client.create(messages=messages, extra_create_args={\"response_format\": TravelPlan}) \n This generates a structured plan like this: \n {\n \"main_task\": \"Plan a family trip...\",\n \"subtasks\": [\n {\"assigned_agent\": \"flight_booking\", \"task_details\": \"Book flights...\"},\n // ... other subtasks\n ]\n} \n Iterative Planning and Adaptation \n Iterative planning allows agents to adapt to changing requirements or unexpected data. Here's how to incorporate a previous plan for re-planning: \n messages = [\n // ... previous messages\n AssistantMessage(content=f\"Previous travel plan - {TravelPlan}\", source=\"assistant\")\n]\n# ... re-plan based on the previous plan \n Summary \n This post demonstrated how a planner agent can dynamically select and assign subtasks to specialized agents, generating structured plans for execution. We also touched upon iterative planning and adaptation. Explore the provided code examples and resources to deepen your understanding. \n Further Resources and Learning \n \n AutoGen Magnetic One \n AI Agents for Beginners Repository \n \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n Part 5: AI Agents: Mastering Agentic RAG \n Part 6: Building Trustworthy Agents \n \n If you have any further questions or would like to connect for more discussion, feel free to reach out to me on the Microsoft AI Community Discord  ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"3814","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjA0LUI3Uk5GZA?revision=3\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjA0LUI3Uk5GZA?revision=3"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4399202":{"__typename":"Conversation","id":"conversation:4399202","topic":{"__typename":"BlogTopicMessage","uid":4399202},"lastPostingActivityTime":"2025-04-07T00:00:00.030-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjAyLVhqV0pLcg?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjAyLVhqV0pLcg?revision=2","title":"system-message-framework.png","associationType":"COVER","width":1920,"height":1080,"altText":""},"BlogTopicMessage:message:4399202":{"__typename":"BlogTopicMessage","subject":"AI Agents: Building Trustworthy Agents- Part 6","conversation":{"__ref":"Conversation:conversation:4399202"},"id":"message:4399202","revisionNum":2,"uid":4399202,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 6 in a series on AI agents, focuses on building trustworthy AI agents. It emphasizes the importance of safety and security in agent design and deployment. The post details a system message framework for creating robust and scalable prompts, outlining a four-step process from meta prompt to iterative refinement. It then explores various threats to AI agents, including task manipulation, unauthorized access, resource overloading, knowledge base poisoning, and cascading errors, providing mitigation strategies for each. The post also highlights the human-in-the-loop approach for enhanced trust and control, providing a code example using AutoGen. Finally, it links to further resources on responsible AI, model evaluation, and risk assessment, along with the previous posts in the series. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":350},"postTime":"2025-04-07T00:00:00.030-07:00","lastPublishTime":"2025-04-07T00:00:00.030-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series, based on Microsoft's AI Agents for Beginners repository, continues with a critical topic: building trustworthy AI agents. In previous posts (links at the end!), we explored agent fundamentals, frameworks, design principles, tool usage, and Agentic RAG. Now, we'll focus on ensuring safety, security, and user privacy in your AI agent applications. \n Building Safe and Effective AI Agents \n Safety in AI agents means ensuring they behave as intended. A core component of this is a robust system message (or prompt) framework. \n Building a System Message Framework \n System messages define the rules, instructions, and guidelines for LLMs within agents. A scalable framework for crafting these messages is crucial: \n \n Meta System Message: A template prompt used by the LLM to generate agent-specific system prompts. This meta prompt sets the overall tone and expectations for agent behavior. You are an expert at creating AI agent assistants. You will be provided with company information, roles, responsibilities, and other details to craft a system prompt. Be as descriptive as possible, providing structure for an LLM-based system to understand the AI assistant's role \n Basic Prompt: A concise description of the agent's role, tasks, and responsibilities. You are a travel agent for Contoso Travel, specializing in booking flights. You can lookup flights, book them, ask for seating/time preferences, cancel bookings, and alert customers about delays/cancellations. \n LLM-Generated System Message: Combine the meta system message and the basic prompt to generate a more refined and structured system message for the agent. The example in the full blog post demonstrates the output of this process. \n Iterate and Improve: Refine the basic prompt and regenerate the system message until it effectively guides the agent's behavior. \n \n Understanding and Mitigating Threats \n Building trustworthy agents requires understanding potential threats: \n \n Task and Instruction Manipulation: Attackers might try to alter the agent's instructions. Mitigate this with input validation, filters, and limits on conversation turns. \n Access to Critical Systems: Restrict agent access to sensitive systems to a need-only basis. Secure communication channels and implement authentication/access control. \n Resource and Service Overloading: Prevent denial-of-service attacks by limiting the agent's requests to external services. \n Knowledge Base Poisoning: Regularly verify and secure the agent's knowledge base to prevent data corruption and biased responses. \n Cascading Errors: Limit the agent's operational environment (e.g., Docker containers) and implement fallback mechanisms to prevent errors from spreading. \n \n Human-in-the-Loop for Enhanced Trust \n Incorporating a human-in-the-loop allows users to provide feedback and act as agents within the system, enhancing trust and control. The AutoGen code example demonstrates this: \n # Create the agents.\nmodel_client = OpenAIChatCompletionClient(model=\"gpt-4o-mini\")\nassistant = AssistantAgent(\"assistant\", model_client=model_client)\nuser_proxy = UserProxyAgent(\"user_proxy\", input_func=input) # Use input() to get user input from console.\n\n# Create the termination condition which will end the conversation when the user says \"APPROVE\".\ntermination = TextMentionTermination(\"APPROVE\")\n\n# Create the team.\nteam = RoundRobinGroupChat([assistant, user_proxy], termination_condition=termination)\n\n# Run the conversation and stream to the console.\nstream = team.run_stream(task=\"Write a 4-line poem about the ocean.\")\n# Use asyncio.run(...) when running in a script.\nawait Console(stream) \n Conclusion \n Building trustworthy AI agents involves a multifaceted approach. By implementing robust system message frameworks, understanding potential threats, and incorporating mitigation strategies like human-in-the-loop, developers can create AI agents that are both secure and effective. As AI evolves, prioritizing security, privacy, and ethical considerations will be essential for building truly trustworthy AI systems. \n Further Resources \n \n Responsible AI overview \n Evaluation of generative AI models and AI applications \n Safety system messages \n Risk Assessment Template \n AI Agents for Beginners Repository \n \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n Part 5: AI Agents: Mastering Agentic RAG \n \n If you have any further questions or would like to connect for more discussion, feel free to reach out to me on LinkedIn | GitHub ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4736","kudosSumWeight":3,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjAyLVhqV0pLcg?revision=2\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk5MjAyLVhqV0pLcg?revision=2"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4396171":{"__typename":"Conversation","id":"conversation:4396171","topic":{"__typename":"BlogTopicMessage","uid":4396171},"lastPostingActivityTime":"2025-03-31T03:02:52.011-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLThyVHdpaA?revision=3\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLThyVHdpaA?revision=3","title":"agentic-rag-core-loop.png","associationType":"COVER","width":1920,"height":1080,"altText":""},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLWRma05taQ?revision=3\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLWRma05taQ?revision=3","title":"tool-integration.png","associationType":"BODY","width":1920,"height":1080,"altText":""},"BlogTopicMessage:message:4396171":{"__typename":"BlogTopicMessage","subject":"AI Agents: Mastering Agentic RAG - Part 5","conversation":{"__ref":"Conversation:conversation:4396171"},"id":"message:4396171","revisionNum":3,"uid":4396171,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 5 of a series on AI agents, explores Agentic RAG (Retrieval-Augmented Generation), a paradigm shift in how LLMs interact with external data. Unlike traditional RAG, Agentic RAG allows LLMs to autonomously plan their information retrieval process through an iterative loop of actions and evaluations. The post highlights the importance of the LLM \"owning\" the reasoning process, dynamically selecting tools and refining queries. It covers key implementation details, including iterative loops, tool integration, memory management, and handling failure modes. Practical use cases, governance considerations, and code examples demonstrating Agentic RAG with AutoGen, Semantic Kernel, and Azure AI Agent Service are provided. The post concludes by emphasizing the transformative potential of Agentic RAG and encourages further exploration through linked resources and previous blog posts in the series. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":952},"postTime":"2025-03-31T03:02:52.011-07:00","lastPublishTime":"2025-03-31T03:02:52.011-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series, based on Microsoft's AI Agents for Beginners repository, continues with a deep dive into Agentic RAG (Retrieval-Augmented Generation). In previous posts (links at the end!), we've explored the foundations of AI agents. Now, we'll explore how Agentic RAG elevates traditional RAG by empowering LLMs to autonomously plan, retrieve information, and refine their reasoning process. I've even created some code samples demonstrating Agentic RAG with different tools and frameworks, which we'll explore below. \n What is Agentic RAG? \n Agentic RAG represents a significant evolution in how LLMs interact with external data. Unlike traditional RAG, which follows a linear \"retrieve-then-read\" approach, Agentic RAG empowers the LLM to act as an agent, autonomously planning its information-seeking process. It involves an iterative loop of LLM calls, tool invocations, result evaluations, and query refinements, creating a dynamic \"maker-checker\" cycle. This allows the agent to dynamically adapt its approach, improving accuracy and handling complex scenarios far more effectively. \n Owning the Reasoning Process \n Agentic RAG distinguishes itself by granting the LLM ownership of its reasoning. Instead of relying on pre-defined prompt chains, the agent dynamically determines the best course of action. For example, when tasked with creating a product launch strategy, an agentic model might independently decide to: \n \n Retrieve market trends using Bing Web Grounding. \n Analyze competitor data with Azure AI Search. \n Correlate internal sales metrics using a SQL database. \n Synthesize findings using Azure OpenAI. \n Evaluate the strategy and iterate if necessary. \n \n This autonomous decision-making is a key characteristic of Agentic RAG. \n Implementation: Iterative Loops, Tool Integration, and Memory \n Agentic RAG operates through a continuous loop: \n \n Initial Call: The user provides a prompt, defining the agent's goal. \n Tool Invocation: The agent selects and uses a tool (e.g., vector database query, SQL call) to gather information. \n Assessment & Refinement: The agent evaluates the retrieved data and refines its query or chooses a different tool if needed. \n Repeat Until Satisfied: This loop continues until the agent deems its response satisfactory. \n Memory & State: The agent maintains memory and state throughout the process, avoiding redundant actions and making informed decisions. \n \n \n Handling Failure and Self-Correction \n Agentic RAG incorporates self-correction mechanisms: \n \n Iteration and Re-Querying: The agent tries alternative search strategies or refines queries upon encountering irrelevant information. \n Diagnostic Tools: Agents can leverage diagnostic tools to debug their reasoning process. \n Human Oversight: For critical tasks, the agent can request human intervention if needed. \n \n Boundaries and Practical Use Cases \n While powerful, Agentic RAG operates within defined boundaries: \n \n Domain-Specific Autonomy: The agent's autonomy is limited to its designated domain. \n Infrastructure-Dependent: Its capabilities depend on the integrated tools and data. \n Guardrails and Policies: Ethical guidelines and business policies constrain the agent's actions. \n \n Agentic RAG shines in scenarios requiring: \n \n Correctness: Ideal for tasks where accuracy and verification are crucial (e.g., compliance, legal research). \n Complex Data Interactions: Effective for navigating and querying structured databases. \n Extended Workflows: Handles evolving information needs in longer-running tasks. \n \n Governance, Transparency, and Trust \n Building trust in Agentic RAG requires: \n \n Explainable Reasoning: Providing insights into the agent's decision-making process. \n Bias Control: Ensuring balanced data sources and mitigating potential biases. \n Human Oversight: Maintaining human review for sensitive or critical tasks. \n \n Code Examples and Practical Implementations \n This project includes code examples demonstrating Agentic RAG using various approaches: \n \n AutoGen with ChromaDB and Azure AI Search \n Semantic Kernel with ChromaDB and Azure AI Search \n Azure AI Agent Service with File Interpretation Tool \n \n These examples showcase the practical application of Agentic RAG with different frameworks and tools. \n Further Learning and Resources \n \n Implement Retrieval Augmented Generation (RAG) with Azure OpenAI Service - Training \n Evaluation of generative AI applications with Azure AI Foundry - Azure AI Foundry \n AI Agents for Beginners Repository \n \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n Part 4: Tool Use Design Pattern \n \n If you have any further questions or would like to connect for more discussion, feel free to reach out to me on LinkedIn | GitHub ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4974","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLThyVHdpaA?revision=3\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLWRma05taQ?revision=3\"}"}}],"totalCount":2,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00Mzk2MTcxLThyVHdpaA?revision=3"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4393804":{"__typename":"Conversation","id":"conversation:4393804","topic":{"__typename":"BlogTopicMessage","uid":4393804},"lastPostingActivityTime":"2025-03-24T00:00:00.028-07:00","solved":false},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MzkzODA0LTJKQzQzag?revision=2\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MzkzODA0LTJKQzQzag?revision=2","title":"agent-service-in-action.jpg","associationType":"COVER","width":1280,"height":720,"altText":""},"BlogTopicMessage:message:4393804":{"__typename":"BlogTopicMessage","subject":"AI Agents: Mastering the Tool Use Design Pattern - Part 4","conversation":{"__ref":"Conversation:conversation:4393804"},"id":"message:4393804","revisionNum":2,"uid":4393804,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2181140"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" This blog post, Part 4 of a series on AI agents, delves into the Tool Use Design Pattern, a key concept in enabling agents to interact with external systems and perform a wider range of tasks. The post explains how tools, ranging from simple functions to complex API calls, are invoked by AI agents through model-generated function calls. Several use cases are presented, highlighting the versatility of this pattern, from dynamic information retrieval and code execution to workflow automation and customer support. The post further details the implementation of function/tool calling, including choosing a suitable LLM, defining a function schema, and writing the function code. Examples using Semantic Kernel and Azure AI Agent Service illustrate how agentic frameworks simplify tool integration. Finally, the post addresses security considerations and provides links to valuable resources, including the \"AI Agents for Beginners\" GitHub repository and related workshops, for further learning. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":748},"postTime":"2025-03-24T00:00:00.028-07:00","lastPublishTime":"2025-03-24T00:00:00.028-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Hi everyone, Shivam Goyal here! This blog series, based on Microsoft's AI Agents for Beginners repository, continues with a deep dive into the Tool Use Design Pattern. In previous posts (links at the end!), we covered agent fundamentals, frameworks, and design principles. Now, we'll explore how tools empower agents to interact with the world, expanding their capabilities and enabling them to perform a wider range of tasks. \n What is the Tool Use Design Pattern? \n The Tool Use Design Pattern enables Large Language Models (LLMs) within AI agents to leverage external tools. These tools are essentially code blocks, ranging from simple functions like calculators to complex API calls, that agents execute to perform actions, access information, and achieve goals. Crucially, these tools are invoked through model-generated function calls, allowing the agent to dynamically choose and utilize the appropriate tool for a given task. \n Use Cases for Tool Use \n The Tool Use Design Pattern unlocks a vast array of applications: \n \n Dynamic Information Retrieval: Accessing real-time data from external APIs and databases. \n Code Execution and Interpretation: Solving complex problems, generating reports, and running simulations. \n Workflow Automation: Automating multi-step processes and integrating with various services. \n Customer Support: Interacting with CRM systems, ticketing platforms, and knowledge bases. \n Content Generation and Editing: Leveraging tools for grammar checking, summarization, and content evaluation. \n \n Implementing the Tool Use Design Pattern \n Key elements for implementing this pattern include: \n \n Function/Tool Calling: The core mechanism for LLMs to interact with tools. \n Dynamic Information Retrieval: Fetching up-to-date data from external sources. \n Code Execution and Interpretation: Running code and scripts for complex tasks. \n Workflow Automation: Automating processes and integrating services. \n Customer Support: Connecting to support systems and knowledge bases. \n Content Generation and Editing: Utilizing tools to enhance content creation. \n \n Function/Tool Calling in Detail \n Function/tool calling is the heart of the Tool Use Design Pattern. It involves a structured process: \n \n LLM with Function Calling Support: Use an LLM that supports function calling (e.g., Azure OpenAI). \n Function Schema: Define a JSON schema describing available functions, including their names, descriptions, and parameters. {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_current_time\",\n \"description\": \"Get the current time in a given location\",\n \"parameters\": { \n // ... parameter definitions ...\n }\n }\n} \n Function Code: Implement the actual code for each function. def get_current_time(location):\n # ... code to retrieve current time ... \n Invocation and Response: The LLM receives a user request, selects the appropriate function based on the schema, and generates a function call with arguments. The function executes, and its response is returned to the LLM, which then formulates a final response to the user. Agentic frameworks like Semantic Kernel simplify this process. \n \n Tool Use with Agentic Frameworks \n Semantic Kernel: Simplifies function calling by automatically serializing functions and handling communication between the model and your code. It also provides pre-built tools like File Search and Code Interpreter. \n # Example of a Semantic Kernel plugin\nfrom semantic_kernel.functions import kernel_function\n\nclass GetCurrentTimePlugin:\n # ... class definition and function implementation ... \n Azure AI Agent Service: A managed service offering secure and scalable agent deployment, automatic tool calling, managed data storage (threads), and pre-built tools (Bing Search, Azure AI Search, Function Calling, Code Interpreter, etc.). \n # Example of using a toolset in Azure AI Agent Service\ntoolset = ToolSet()\ntoolset.add(fetch_data_function) # Add custom function\ntoolset.add(code_interpreter) # Add pre-built tool \n Trust and Security Considerations \n When working with tools like dynamically generated SQL, address security concerns by configuring appropriate database access permissions (e.g., read-only access) and running the application in a secure environment. \n Further Learning and Resources \n \n Azure AI Agents Service Workshop \n Contoso Creative Writer Multi-Agent Workshop \n Semantic Kernel Function Calling Tutorial \n Semantic Kernel Code Interpreter \n Autogen Tools \n \n Catch up on the series: \n \n Part 1: Introduction to AI Agents \n Part 2: Exploring Agentic Frameworks \n Part 3: Agentic Design Principles \n \n  If you have any further questions or would like to connect for more discussion, feel free to reach out to me on LinkedIn | GitHub ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"4912","kudosSumWeight":1,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MzkzODA0LTJKQzQzag?revision=2\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":{"__typename":"UploadedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MzkzODA0LTJKQzQzag?revision=2"},"coverImageProperties":{"__typename":"CoverImageProperties","style":"WIDE","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4165210":{"__typename":"Conversation","id":"conversation:4165210","topic":{"__typename":"BlogTopicMessage","uid":4165210},"lastPostingActivityTime":"2024-07-08T06:25:53.343-07:00","solved":false},"User:user:1912311":{"__typename":"User","uid":1912311,"login":"MahnoorJavaid","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0xOTEyMzExLTU5Mzg2M2lFQTNFOUVFODYyRjM0MDI2"},"id":"user:1912311"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NGlCODdDQkJCMEZGOUIxQjYw?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NGlCODdDQkJCMEZGOUIxQjYw?revision=20","title":"Group 29 (1).png","associationType":"TEASER","width":603,"height":382,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MGkzREI1MzhCQjY1MDk3RjMy?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MGkzREI1MzhCQjY1MDk3RjMy?revision=20","title":"MahnoorJavaid_0-1718571260433.png","associationType":"BODY","width":222,"height":213,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MWlGM0RBNENFNTU2Q0JBODQ1?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MWlGM0RBNENFNTU2Q0JBODQ1?revision=20","title":"Group 29.png","associationType":"BODY","width":450,"height":154,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5Mmk2NTlBMDY2OTE2Qjc0NkU2?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5Mmk2NTlBMDY2OTE2Qjc0NkU2?revision=20","title":"MahnoorJavaid_1-1718571488623.png","associationType":"BODY","width":855,"height":69,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5M2lFQkNBQUExQjNCQ0MxREZC?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5M2lFQkNBQUExQjNCQ0MxREZC?revision=20","title":"MahnoorJavaid_2-1718571514753.png","associationType":"BODY","width":259,"height":91,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NmkxQTE2NjdCMzc1MUQ1MDY4?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NmkxQTE2NjdCMzc1MUQ1MDY4?revision=20","title":"Group 29 (2).png","associationType":"BODY","width":243,"height":248,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5N2k1QTRGQ0YyRDY3QjQ5NkQw?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5N2k1QTRGQ0YyRDY3QjQ5NkQw?revision=20","title":"MahnoorJavaid_3-1718571815303.png","associationType":"BODY","width":269,"height":73,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5OGk4ODI3RTBGNjdCNUEyRkI3?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5OGk4ODI3RTBGNjdCNUEyRkI3?revision=20","title":"MahnoorJavaid_4-1718571825292.png","associationType":"BODY","width":800,"height":78,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMGlERDY1OThBMzY2NEI3MUE4?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMGlERDY1OThBMzY2NEI3MUE4?revision=20","title":"MahnoorJavaid_5-1718571851122.png","associationType":"BODY","width":777,"height":96,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMWlBOTZFNDc0QTIwM0ZEOTg3?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMWlBOTZFNDc0QTIwM0ZEOTg3?revision=20","title":"MahnoorJavaid_6-1718571897218.png","associationType":"BODY","width":719,"height":65,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMmlDQzMwNDI3RjdCNjM4N0JB?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMmlDQzMwNDI3RjdCNjM4N0JB?revision=20","title":"MahnoorJavaid_7-1718571925476.png","associationType":"BODY","width":737,"height":56,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwM2lGOTIwOTczODVDMkYzNUIy?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwM2lGOTIwOTczODVDMkYzNUIy?revision=20","title":"MahnoorJavaid_8-1718571947524.png","associationType":"BODY","width":288,"height":64,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNGkzN0VEQTk0M0RBQzJFMjA2?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNGkzN0VEQTk0M0RBQzJFMjA2?revision=20","title":"MahnoorJavaid_9-1718571974976.png","associationType":"BODY","width":353,"height":126,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNWk4Nzk0MkNFOTg1QUU3OEQy?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNWk4Nzk0MkNFOTg1QUU3OEQy?revision=20","title":"Group 29 (3).png","associationType":"BODY","width":992,"height":495,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNmlEQjdDQjZBREI0MEJEMkYx?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNmlEQjdDQjZBREI0MEJEMkYx?revision=20","title":"MahnoorJavaid_10-1718572173297.png","associationType":"BODY","width":992,"height":421,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwN2lGQUJENDBGMzQzRDE4NEI0?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwN2lGQUJENDBGMzQzRDE4NEI0?revision=20","title":"Group 30.png","associationType":"BODY","width":975,"height":481,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3N2kzQTRENjZGMDZDMEUwMDlC?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3N2kzQTRENjZGMDZDMEUwMDlC?revision=20","title":"MahnoorJavaid_0-1718569958495.png","associationType":"BODY","width":704,"height":970,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3OWk5RjUyQ0MxODBFRkNDNDQ4?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3OWk5RjUyQ0MxODBFRkNDNDQ4?revision=20","title":"MahnoorJavaid_2-1718570361857.png","associationType":"BODY","width":677,"height":973,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MGk4RkIzMTdEMUZEMDk0NUFE?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MGk4RkIzMTdEMUZEMDk0NUFE?revision=20","title":"MahnoorJavaid_3-1718570415493.png","associationType":"BODY","width":689,"height":962,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MWlDRjI0RkZGM0JFQTZDMjg4?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MWlDRjI0RkZGM0JFQTZDMjg4?revision=20","title":"MahnoorJavaid_4-1718570575668.png","associationType":"BODY","width":1853,"height":515,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MmlDQjJGNDU4ODc5RkI3MzdC?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MmlDQjJGNDU4ODc5RkI3MzdC?revision=20","title":"MahnoorJavaid_5-1718570752118.png","associationType":"BODY","width":906,"height":285,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4M2lDNzI0MkQ4ODYzQUNDNUNG?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4M2lDNzI0MkQ4ODYzQUNDNUNG?revision=20","title":"MahnoorJavaid_6-1718570752125.png","associationType":"BODY","width":772,"height":210,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NGk5QjI0MjZCNzIzRjNDM0Mw?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NGk5QjI0MjZCNzIzRjNDM0Mw?revision=20","title":"MahnoorJavaid_7-1718570752132.png","associationType":"BODY","width":860,"height":428,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NWk2QkY1MTM4MUU5RjVGOTVC?revision=20\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NWk2QkY1MTM4MUU5RjVGOTVC?revision=20","title":"MahnoorJavaid_8-1718570752138.png","associationType":"BODY","width":557,"height":737,"altText":null},"BlogTopicMessage:message:4165210":{"__typename":"BlogTopicMessage","subject":"Getting Started with Azure App Service: A Beginner's Guide to Web App Deployment","conversation":{"__ref":"Conversation:conversation:4165210"},"id":"message:4165210","revisionNum":20,"uid":4165210,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:1912311"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" Dive into the world of Azure App Service with our comprehensive beginner's guide! Learn the step-by-step process of deploying your first web app using Azure. From navigating the Azure portal to mastering deployment via Azure CLI, unlock the secrets to seamless web app deployment. Get ready to elevate your skills and bring your projects to life with Azure App Service!  \n   \n   ","introduction":"","metrics":{"__typename":"MessageMetrics","views":27071},"postTime":"2024-06-21T00:00:00.041-07:00","lastPublishTime":"2024-06-21T00:00:00.041-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" I'm Mahnoor Javaid, an enthusiastic Microsoft Learn Student Ambassador (MLSA) I’m delighted to present my blog, \"Getting Started with Azure App Service: A Beginner's Guide to Web App Deployment\", developed in collaboration with the Microsoft Learn team. This blog will take you through getting started with Azure App Service with a comprehensive beginner's guide! Learn the step-by-step process of deploying your first web app using Azure. From navigating the Azure portal to mastering deployment via Azure CLI, unlock the secrets to seamless web app deployment. Get ready to elevate your skills and bring your projects to life with Azure App Service! Azure App Service is a fully managed platform as a service (PaaS) designed to host web applications, RESTful APIs, and mobile backends, simplifying the process of deploying, managing, and scaling your web apps. In this tutorial, I'll guide you through deploying your first web app using Azure App Service. Follow along to unlock the secrets of seamless web app deployment! You can also connect with me on LinkedIn for more updates and insights into the world of technology. \n Prerequisites  \n Before diving in, ensure you have the following:  \n Microsoft Azure Account: \n If you don't have one, sign up for a free account on the Azure Portal all students get a FREE Azure Subscription at Azure for Student \n Deploying via Azure Portal  \n Steps to Deploy a Web App  \n 1. Create and Set Up Your Azure Account  \n \n Sign in to the Azure portal  \n \n \n If you’re new to Azure, follow the steps to create your account.  \n \n 2. Build Your Web Application  \n Choose your preferred tech stack (e.g., .NET, Python, Node.js, or Java) and develop your web application. You can use development tools like Visual Studio, Visual Studio Code, or the command line.  \n 3. Create a Resource Group  \n \n In the Azure portal, navigate to the \"Resource groups\" section.  \n \n \n   \n \n Click \"Create\" and enter a name for your resource group (e.g., \"MyWebAppResourceGroup”).  \n \n \n \n   \n \n Select your subscription and a region close to your user base, then click \"Review + create\".  \n \n \n 4. Create Your Web App Service  \n \n Go to the \"Create a resource\" section and select \" App Services\".  \n \n \n \n On App Services click on \" Web Services\".  \n \n \n \n Fill in the necessary details:  \n \n \n Subscription: Choose your subscription.  \n \n \n \n Resource Group: Select the resource group you created.  \n \n \n \n Name: Enter a unique name for your web app.  \n \n \n \n Publish: Choose \"Code\" .  \n \n \n \n Runtime Stack: Select your application's runtime stack (e.g., .NET, Node.js).  \n \n \n \n Region: Choose the same region as your resource group.  \n \n \n \n Click \"Review + create\" and then \"Create\" to deploy your web app service.  \n \n \n 5. Deploy Your Web App  \n You can deploy your web app using several methods such as GitHub Actions, Visual Studio, or Azure CLI. Here, we'll use Git:  \n \n Set Up Deployment Credentials: In the Azure portal, navigate to your web app's \"Deployment Center\".  \n Select Deployment Source: Choose \"Local Git\" as the deployment source.  \n \n \n \n   \n \n Clone the Repository: Copy the Git clone URL provided by Azure.  \n Deploy Your Code: \n Open a terminal and clone the repository: git clone <Azure_Git_URL> \n Navigate to the cloned directory:  cd <your_app_directory> \n Add your web app code to the directory.  \n Commit and push your changes: git add . \n\ngit commit -m \"Initial commit\" \n\ngit push azure master   \n \n 6. Monitor Your App  \n Use Azure Monitor, Application Insights, and Diagnostic Logs to keep an eye on your app's performance. \n \n Azure Monitor: Azure Monitor is a comprehensive solution for collecting, analyzing, and acting on telemetry data from your cloud and on-premises environments. It allows you to track the performance and health of your applications and services. Learn more about Azure Monitor. \n Application Insights: Application Insights is an Application Performance Management (APM) service designed to help you monitor your application's live performance, detect and diagnose performance issues, and understand user behavior. Explore Application Insights. \n Diagnostic Logs: Diagnostic Logs enable you to capture detailed runtime information from your Azure resources. These logs are essential for monitoring performance, troubleshooting issues, and auditing activity within your applications. Learn more about Azure Diagnostic Logs. \n \n Access these tools via the Azure portal to ensure everything runs smoothly. \n \n In the Azure portal, navigate to the respective service's monitoring section to access Azure Monitor, Application Insights, and Diagnostic Logs for your app. \n \n 7. Add Custom Domains & SSL Certificate  \n Step 1: Obtain a SSL Certificate \n Get an SSL certificate from a trusted CA like DigiCert, GoDaddy, or Cloudflare again as students you get access to these services for FREE via the GitHub Student Pack \n Step 2: Upload the SSL Certificate to Azure \n \n Log in to the Azure Portal \n Navigate to the Azure resource where you want to install the SSL certificate, such as an App Service \n Go to the SSL settings and upload the certificate, private key, and any intermediate certificates. \n \n \n   \n \n Validate the certificate that you have uploaded. \n \n \n \n   \n Step 3: Update DNS Settings \n \n For custom domains, update the DNS records to point to the Azure resource’s IP address or domain. For App Services, use the provided default domain without updating DNS settings. \n \n \n Step 4: Test and Enforce HTTPS Test your website or service with HTTPS to ensure the SSL certificate is functioning correctly. For improved security, enforce HTTPS by redirecting all HTTP traffic to HTTPS. \n \n   \n 8. Connect to a Database  \n Securely Connecting Azure App Service to Services and Databases \n Your Azure App Service might need secure connections to various services. Here's how to do it effectively: \n Connection Methods \n 1. App Identity \n \n \n When to Use: No authenticated user is present; credentials aren’t accessible or need management. \n How: Managed identities handle credentials via role-based access control (RBAC). \n Examples: Access Microsoft Graph, Azure SDKs. \n \n \n \n 2. Authenticated User \n \n When to Use: Actions require the permissions of the signed-in user. \n Examples: Access Microsoft Graph, SQL database as the user. \n \n \n 3. Secrets \n \n App Settings: Store secrets as environment variables (encrypted-at-rest). \n Key Vault: Secure storage, restricts access, provides monitoring. \n \n \n \n When to Use: Non-Azure services or resources needing keys. \n Options: \n \n \n \n   \n Deploying and Securing an ASP.NET Core App on Azure \n Learn how to deploy an ASP.NET Core app to Azure App Service, connect it to Azure SQL Database and Azure Cache for Redis, and ensure secure connections. \n Prerequisites \n \n Active Azure account \n GitHub account \n \n Steps to Deploy: \n 1. Create Azure Resources \n \n \n App Service: Host the web app. \n Azure SQL Database: Manage the database. \n Azure Cache for Redis: Enable caching. \n Configure app name, region, runtime stack (.NET 7), hosting plan, and resource group. \n \n \n \n 2. Verify Connection Strings \n \n \n Check AZURE_SQL_CONNECTIONSTRING and AZURE_REDIS_CONNECTIONSTRING in App Service configuration. \n \n \n \n 3. Deploy Sample Code \n \n \n Fork the sample repository on GitHub. \n Configure GitHub Actions for CI/CD. \n Modify appsettings.json and Program.cs with correct connection strings. \n Commit and push changes to trigger deployment. \n \n \n \n 4. Generate Database Schema \n \n \n Use SSH in App Service to run database migrations. \n \n \n \n   \n 5. Browse to the App \n \n \n Navigate to the deployed app URL and test functionality. \n \n \n \n 9. Review Best Practices  \n Scaling: \n \n Auto-Scaling: Utilize Azure's auto-scaling features to automatically adjust your app's resources based on demand. Learn more about scaling options in Azure App Service. \n Manual Scaling: If you prefer more control, manually scale your app by adjusting the number of instances or the performance tier of your App Service Plan. Learn how to scale an app in Azure. \n Monitoring: Use Azure Monitor to track the performance and load on your application. Set up alerts to notify you when scaling actions are necessary. Explore Azure Monitor for detailed monitoring capabilities. \n \n Security: \n \n HTTPS: Ensure all communications with your app are encrypted by enforcing HTTPS. This can be done through the Azure Portal or by configuring web.config files for your application. Learn how to enforce HTTPS in Azure App Service. \n Secure Coding Practices: Follow secure coding guidelines to protect against common vulnerabilities such as SQL injection, cross-site scripting (XSS), and cross-site request forgery (CSRF). Explore the OWASP Top Ten for best practices. \n Azure Security Center: Use Azure Security Center to get security recommendations and best practices. It provides advanced threat protection across your workloads and integrates with other Azure services to enhance security. Learn more about Azure Security Center. \n \n Network Security: \n \n Virtual Network (VNet): Deploy your web app within a Virtual Network (VNet) to isolate it from other networks and enhance security. This setup allows you to control inbound and outbound traffic, and implement network security groups (NSGs) to filter traffic. Learn about Azure Virtual Network (VNet). \n Private Endpoints: Use Private Endpoints to securely connect to Azure services, such as Azure SQL Database or Azure Storage, without exposing your resources to the public internet. Explore Azure Private Endpoint for more information. \n Application Gateway and Web Application Firewall (WAF): Protect your application from common web vulnerabilities by using Azure Application Gateway with integrated WAF. This helps in defending against threats such as SQL injection and cross-site scripting attacks. Learn more about Azure Application Gateway and WAF. \n \n   \n Deploying via Azure CLI   \n 1. Install Azure CLI: \n Requirements: \n \n Ensure that you have the Azure CLI installed on your machine. \n You will need administrative privileges to install software on your machine. \n \n Installation Process: \n \n Download and install Azure CLI from the Azure CLI page. \n \n 2. Install Git: \n Requirements: \n \n Git is required for deploying your code using Git repositories. \n Administrative privileges are needed to install software. \n \n Installation Process: \n \n Download and install Git from the Git Downloads page. \n Follow the installation instructions for your operating system. \n \n 3. Log in to Azure: \n \n \n Open your command line interface and log in to your Azure account using the command: az login \n \n \n 1. Create a Resource Group: \n \n \n Create a resource group for organizing related resources using the command: \n \n \n   \n az group create --name <ResourceGroupName> --location <Location> \n   \n 2. Create an App Service Plan: \n \n \n Create an app service plan which defines the location, features, and cost of your web app using the command: \n \n \n   \n az appservice plan create --name <PlanName> --resource-group <ResourceGroupName> --sku FRE \n   \n 3. Create a Web App: \n \n \n Create your web app within the app service plan using the command: \n \n \n   \n az webapp create --name <AppName> --resource-group <ResourceGroupName> --plan <PlanName> \n   \n 4. Deploy Your App: \n \n \n Deploy your code to the web app using one of the deployment methods such as FTP, local Git, GitHub, etc. For example, to deploy from a local Git repository, use the command: \n \n \n   \n az webapp deployment source config-local-git --name <AppName> --resource-group <ResourceGroupName> --query url --output tsv \n   \n 5. Push Your Code: \n \n \n Push your code to the deployment URL provided by the previous command. \n \n \n 6. Browse Your Web App: \n \n \n Once the deployment is complete, you can browse your web app using the command: \n \n \n   \n az webapp browse --name <AppName> --resource-group <ResourceGroupName> \n   \n Remember to replace <ResourceGroupName>, <Location>, <PlanName>, and <AppName> with your actual resource group name, location, app service plan name, and web app name, respectively. \n   \n Conclusion  \n Congratulations! You’ve successfully deployed your web app using Azure App Service. Now, you can explore additional Azure features and services to further enhance your app. Happy coding!  \n References:  \n \n Getting started with Azure App Service  \n Host a web application with Azure App Service  \n Get started with .NET apps on Azure App Service  \n az webapp deployment | Microsoft Learn   \n \n   ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"13195","kudosSumWeight":1,"repliesCount":1,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NGlCODdDQkJCMEZGOUIxQjYw?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MGkzREI1MzhCQjY1MDk3RjMy?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5MWlGM0RBNENFNTU2Q0JBODQ1?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5Mmk2NTlBMDY2OTE2Qjc0NkU2?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5M2lFQkNBQUExQjNCQ0MxREZC?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NGlCODdDQkJCMEZGOUIxQjYw?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5NmkxQTE2NjdCMzc1MUQ1MDY4?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5N2k1QTRGQ0YyRDY3QjQ5NkQw?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI5OGk4ODI3RTBGNjdCNUEyRkI3?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMGlERDY1OThBMzY2NEI3MUE4?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMWlBOTZFNDc0QTIwM0ZEOTg3?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwMmlDQzMwNDI3RjdCNjM4N0JB?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwM2lGOTIwOTczODVDMkYzNUIy?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNGkzN0VEQTk0M0RBQzJFMjA2?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNWk4Nzk0MkNFOTg1QUU3OEQy?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwNmlEQjdDQjZBREI0MEJEMkYx?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjMwN2lGQUJENDBGMzQzRDE4NEI0?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3N2kzQTRENjZGMDZDMEUwMDlC?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI3OWk5RjUyQ0MxODBFRkNDNDQ4?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MGk4RkIzMTdEMUZEMDk0NUFE?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MWlDRjI0RkZGM0JFQTZDMjg4?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4MmlDQjJGNDU4ODc5RkI3MzdC?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4M2lDNzI0MkQ4ODYzQUNDNUNG?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NGk5QjI0MjZCNzIzRjNDM0Mw?revision=20\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTY1MjEwLTU5MjI4NWk2QkY1MTM4MUU5RjVGOTVC?revision=20\"}"}}],"totalCount":29,"pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI1","hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"Conversation:conversation:4172362":{"__typename":"Conversation","id":"conversation:4172362","topic":{"__typename":"BlogTopicMessage","uid":4172362},"lastPostingActivityTime":"2024-06-27T06:05:31.178-07:00","solved":false},"User:user:2194605":{"__typename":"User","uid":2194605,"login":"HuzaifaGhori","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"avatar":{"__typename":"UserAvatar","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/dS0yMTk0NjA1LTU0NjE3M2kyMzY3Mzk0M0IyRDJDQUM5"},"id":"user:2194605"},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OGk4NjZDN0MzQ0M1MkIxMzFC?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OGk4NjZDN0MzQ0M1MkIxMzFC?revision=6","title":"OIG1.jpg","associationType":"TEASER","width":1024,"height":1024,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OWk1NUE3ODY0QTY2RTE5NjdE?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OWk1NUE3ODY0QTY2RTE5NjdE?revision=6","title":"HuzaifaGhori_53-1718874069807.png","associationType":"BODY","width":898,"height":423,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1Nmk4NUVBNEM3RTQ5MDc1ODJB?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1Nmk4NUVBNEM3RTQ5MDc1ODJB?revision=6","title":"HuzaifaGhori_70-1718874195527.png","associationType":"BODY","width":768,"height":361,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1N2kyQUM0QzQyNTA5MjU3RjU5?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1N2kyQUM0QzQyNTA5MjU3RjU5?revision=6","title":"HuzaifaGhori_71-1718874205972.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OGk0OEUxODBEQjM1M0I5M0JB?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OGk0OEUxODBEQjM1M0I5M0JB?revision=6","title":"HuzaifaGhori_73-1718874215254.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OWlDODZGMTk3NUY4ODRGNjY4?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OWlDODZGMTk3NUY4ODRGNjY4?revision=6","title":"HuzaifaGhori_76-1718874242917.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MGlFMzc2QTc1Q0QwNkVEMTRD?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MGlFMzc2QTc1Q0QwNkVEMTRD?revision=6","title":"HuzaifaGhori_79-1718874254235.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MWk2RTFGM0RCMEU3NTlDQjBE?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MWk2RTFGM0RCMEU3NTlDQjBE?revision=6","title":"HuzaifaGhori_81-1718874261023.png","associationType":"BODY","width":975,"height":455,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OGkzOEU4MjUyNUNENTY0NjNC?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OGkzOEU4MjUyNUNENTY0NjNC?revision=6","title":"HuzaifaGhori_5-1718875318956.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OWk0ODRBMTcyRTMzNzk4MkQy?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OWk0ODRBMTcyRTMzNzk4MkQy?revision=6","title":"HuzaifaGhori_6-1718875318974.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3MWlFMDlDMUE1NzBCQkJCOUI5?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3MWlFMDlDMUE1NzBCQkJCOUI5?revision=6","title":"HuzaifaGhori_8-1718875345371.png","associationType":"BODY","width":396,"height":408,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NGk2NTdGN0JGMTc5NDNFNkQz?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NGk2NTdGN0JGMTc5NDNFNkQz?revision=6","title":"HuzaifaGhori_15-1718875417549.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NWlBQkYwQzEwNDA3QzY4MzhF?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NWlBQkYwQzEwNDA3QzY4MzhF?revision=6","title":"HuzaifaGhori_20-1718875444316.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3Nmk1NEI0NTQ1OUQzNUYwMUQz?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3Nmk1NEI0NTQ1OUQzNUYwMUQz?revision=6","title":"HuzaifaGhori_21-1718875464155.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3OWkyOURDQUVDNjBFNUEwMUVF?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3OWkyOURDQUVDNjBFNUEwMUVF?revision=6","title":"HuzaifaGhori_29-1718875580583.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MWkwMTYwNkIxQkIzOTlGRjdC?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MWkwMTYwNkIxQkIzOTlGRjdC?revision=6","title":"HuzaifaGhori_31-1718875611102.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MmkzRUEwQjA1MTY0NjcwQzIx?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MmkzRUEwQjA1MTY0NjcwQzIx?revision=6","title":"HuzaifaGhori_32-1718875611118.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NGlFRTc2N0U2RjU1OTQ5Q0E5?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NGlFRTc2N0U2RjU1OTQ5Q0E5?revision=6","title":"HuzaifaGhori_38-1718875892712.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NWk4NUNBNDQ1NEY5RUUwN0Y1?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NWk4NUNBNDQ1NEY5RUUwN0Y1?revision=6","title":"HuzaifaGhori_39-1718875973743.png","associationType":"BODY","width":350,"height":146,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4Nmk1M0E3MDJBOTUxMEZGM0M4?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4Nmk1M0E3MDJBOTUxMEZGM0M4?revision=6","title":"HuzaifaGhori_40-1718875997752.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4N2kwMjU1QzRCOEMzN0E4NzBB?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4N2kwMjU1QzRCOEMzN0E4NzBB?revision=6","title":"HuzaifaGhori_41-1718876036286.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OGk3MjZDMkM2MDFBQzc2NjYz?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OGk3MjZDMkM2MDFBQzc2NjYz?revision=6","title":"HuzaifaGhori_42-1718876036299.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OWkzRDUwQjAyNENBMzQzNzM4?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OWkzRDUwQjAyNENBMzQzNzM4?revision=6","title":"HuzaifaGhori_44-1718876111572.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5MGk2OUJCOEQ0MDhBQ0FFRjAx?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5MGk2OUJCOEQ0MDhBQ0FFRjAx?revision=6","title":"HuzaifaGhori_45-1718876160532.png","associationType":"BODY","width":1600,"height":900,"altText":null},"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5Mmk5RUY2QzkzRUEyRDJGRkVE?revision=6\"}":{"__typename":"AssociatedImage","url":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5Mmk5RUY2QzkzRUEyRDJGRkVE?revision=6","title":"HuzaifaGhori_50-1718876193917.png","associationType":"BODY","width":1600,"height":900,"altText":null},"BlogTopicMessage:message:4172362":{"__typename":"BlogTopicMessage","subject":"How to integrate Microsoft User Authentication using Microsoft Entra ID: A Step-by-Step Guide to Use","conversation":{"__ref":"Conversation:conversation:4172362"},"id":"message:4172362","revisionNum":6,"uid":4172362,"depth":0,"board":{"__ref":"Blog:board:EducatorDeveloperBlog"},"author":{"__ref":"User:user:2194605"},"teaser@stripHtml({\"removeProcessingText\":true,\"truncateLength\":-1})":" \n   \n   \n Microsoft Entra ID, also known as Azure AD (Active Directory), offers numerous advantages. Whether you're prioritizing security or seeking a well-organized and automated User Management system, this tool is your go-to for building a secure authentication system, be it for a web app, mobile app, or any other application. ","introduction":"","metrics":{"__typename":"MessageMetrics","views":2731},"postTime":"2024-06-27T06:05:31.178-07:00","lastPublishTime":"2024-06-27T06:05:31.178-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})":" Greetings! It's Huzaifa Ghori and Microsoft Learn Student Ambassador from Karachi,Pakistan. I am in my senior of Computer Science Bachelors, from University of Karachi. Besides my studies I am a Python Developer and Data Engineer as well, I have a great skill set in development, including Front end Web, Backend, Chatbot Development, and also I give numerous services as a freelancer, I have started my technical writing here on techcommunity of Microsoft, I'll be sharing knowledge about Azure, cloud services, and many other micro services including integration with Python. So let's start today's blog \n   \n In this article we will be creating our tenant, resource and other services to use Microsoft Entra ID aka Azure AD, to create access management for only selected users at the end of this article you'll be able to create your own and also have the direction to take deep dive and more great implementation of this service. \n   \n In the fast-evolving landscape of digital identity management, Microsoft Entra stands out as a robust solution for secure authentication and streamlined access control. Whether you're a seasoned developer or a newcomer to the realm of identity services, this guide will walk you through the essential steps of setting up your application, creating user authentication, and empowering users with access privileges. Explore the power of Microsoft Entra and elevate your application's security and user management capabilities. Complete this step by step guide and use Microsoft Learn Module for further assistance and create your first User Access Management Using Microsoft Entra ID. In this guide we are going to learn: \n \n How to create resource for Microsoft Entra ID \n How to Register app in MS Entra ID Tenant \n Following Quick Start integrating Microsoft User Authentication \n \n   \n   \n Microsoft Entra ID, also known as Azure AD (Active Directory), offers numerous advantages. Whether you're prioritizing security or seeking a well-organized and automated User Management system, this tool is your go-to for building a secure authentication system, be it for a web app, mobile app, or any other application. \n With Microsoft Entra ID, you gain not only security but also a host of other benefits. In this guide, we'll focus on creating a seamless sign-in experience. The registration process can sometimes be a bit tricky, but with Microsoft Entra ID, we'll simplify and handle it effortlessly from the portal. \n So, if you're looking to make your application's authentication process secure, user-friendly, and seamlessly integrated, Microsoft Entra ID is the solution you've been searching for. Lets Start ! \n \n How to create resource for Microsoft Entra ID \n \n Starting by creating resource. \n \n Click on create resource from Azure Portal \n \n \n   \n   \n \n Search “Microsoft Entra ID” \n \n \n   \n   \n \n Click on “Create” \n \n \n   \n   \n \n Select “Microsoft Entra ID” then click “Next: Configuration” Button \n \n \n   \n   \n   \n   \n   \n   \n \n Then Create Your Tenant fill out the the Details mentioned in the form. \n Cilck on “Review + create”. \n \n \n   \n   \n   \n   \n   \n   \n   \n \n On the final screen wait for the validation passed Notification then click on “Create” \n \n   \n \n   \n   \n   \n \n After completing this step the side pane will appear to complete the captcha after completing it you have to wait for some minutes for your tenant creation it will give the notification about the succesfull creation of tenant \n \n \n   \n   \n Congratulations! You have successfully created your first tenant. \n   \n   \n \n How to Register app in MS Entra ID Tenant \n \n Lets begin with the “App Registeration” Process. \n   \n \n   \n   \n \n Click on the “+ Add” button appearing in the resource navigations \n \n \n   \n   \n   \n   \n   \n \n Click on “App registeration\" \n \n \n   \n On the appeared screen fill out the form \n \n Type the display name of your application (can be changed later) \n Select Single Tenant. \n Now in Redirect URI section select your application type in my case its website and Enter the URL where application will redirect user after authenticating you can enter URL later its optional so I am leaving it blank for now. \n Click on Register Button. \n \n \n   \n   \n   \n Congrats! You have successfully Registered your first app in your first tenant. \n \n   \n Is this it? Nope Guys we are just around the corner be patient. \n Lets follow quickstart to create our very first Authentication System using Microsoft services. \n   \n \n Go to quick start in left sidebar below Overview option click on “Quickstart” \n \n   \n \n   \n   \n Is this it? Nope Guys we are just around the corner be patient. \n Lets follow quickstart to create our very first Authentication System using Microsoft services. \n   \n \n Go to quick start in left sidebar below Overview option click on “Quickstart” \n \n   \n \n   \n   \n   \n   \n   \n \n In the Quick Start Page select your preferred technology of application in my case its Python Flask web application. \n \n   \n ======> \n Note: We are only 3 steps ahead from our first app with authentication system using MS Services. \n   \n \n Following Quick Start integrating Microsoft User Authentication \n \n Lets quickly complete 3 steps and test our application \n Step 1: Configure your application in Azure portal \n For the code sample in this quickstart to work: \n \n Add a reply URL as http://localhost:5000/getAToken. \n Create a Client Secret. \n Add Microsoft Graph API's User.ReadBasic.All delegated permission. \n \n Either you can do it manually or can click on button “Make these changes for me” appears in quickstart tab to complete this automatically. \n              \n \n             \n   \n After clicking on button for automated process it will return you a client secret save it to enter in code later. \n                \n \n   \n Step 2: Download your project or clone it from my GitHub \n \n Download or clone the project and if download, extract the zip file to a local folder or clone, closer to the root folder - for example, C:\\Azure-Samples \n \n \n   \n   \n Step 3: Made the following changes in the code and run \n \n You will need to install MSAL Python library, Flask framework, Flask-Sessions for server-side session management and requests using pip as follows: \n \n \n pip install -r requirements.txt \n \n   \n \n Open folder in the vs code and made the following changes \n \n \n Change the name of “.env.sample” to “.env” \n \n =======> \n   \n                      \n   \n   \n \n Enter the environment variables include “Tenant ID” \n \n \n   \n \n Note: You can find your “TENANT ID” and “CLIENT ID” in the over view tab of your “App Registeration” \n \n   \n \n   \n   \n \n In app.py at the very last line you can find this command “app.run()” change it to “app.run(host=\"localhost\", port=5000)” \n \n ============> \n   \n   \n \n In app_config.py add metioned below lines in the beginning of file \n \n \n import dotenv \n dotenv.load_dotenv() \n \n \n   \n   \n \n We are all set lets run \n \n python app.py \n \n \n \n   \n   \n   \n   \n Conclusion: \n \n As we conclude this guide on mastering Microsoft Entra, you now possess the knowledge to enhance your application's security and streamline user management. But our journey doesn't end here – it's just the beginning. Follow the Microsoft Learn Modules to Learn More about Microsoft Entra: \n Understand Microsoft Entra ID \n Register apps using Microsoft Entra ID \n Implement app registration \n Your Next Step: In the upcoming blog, we'll delve into the pivotal process of adding users to your app registration for seamless access provisioning. Learn how to empower users with tailored privileges, ensuring a dynamic and secure user experience. Click here to stay tuned for our next installment and continue your exploration of Microsoft Entra's capabilities. \n Stay Connected: Feel free to connect with me on LinkedIn for further discussions or follow on Instagram to stay updated with the latest tech insights. I'm here to assist, so don't hesitate to reach out for any queries or clarifications. Your engagement is valued, and I look forward to connecting with you on this exciting journey. Thank you for being part of this transformative experience. \n \n   \n   ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":-1})@stringLength":"8918","kudosSumWeight":2,"repliesCount":0,"readOnly":false,"images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OGk4NjZDN0MzQ0M1MkIxMzFC?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU0OWk1NUE3ODY0QTY2RTE5NjdE?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDM","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1Nmk4NUVBNEM3RTQ5MDc1ODJB?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDQ","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1N2kyQUM0QzQyNTA5MjU3RjU5?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDU","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OGk0OEUxODBEQjM1M0I5M0JB?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDY","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU1OWlDODZGMTk3NUY4ODRGNjY4?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDc","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MGlFMzc2QTc1Q0QwNkVEMTRD?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDg","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2MWk2RTFGM0RCMEU3NTlDQjBE?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDk","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OGkzOEU4MjUyNUNENTY0NjNC?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU2OWk0ODRBMTcyRTMzNzk4MkQy?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3MWlFMDlDMUE1NzBCQkJCOUI5?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NGk2NTdGN0JGMTc5NDNFNkQz?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDEz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3NWlBQkYwQzEwNDA3QzY4MzhF?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3Nmk1NEI0NTQ1OUQzNUYwMUQz?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU3OWkyOURDQUVDNjBFNUEwMUVF?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE2","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MWkwMTYwNkIxQkIzOTlGRjdC?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE3","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4MmkzRUEwQjA1MTY0NjcwQzIx?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE4","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NGlFRTc2N0U2RjU1OTQ5Q0E5?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDE5","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4NWk4NUNBNDQ1NEY5RUUwN0Y1?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIw","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4Nmk1M0E3MDJBOTUxMEZGM0M4?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIx","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4N2kwMjU1QzRCOEMzN0E4NzBB?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIy","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OGk3MjZDMkM2MDFBQzc2NjYz?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDIz","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU4OWkzRDUwQjAyNENBMzQzNzM4?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI0","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5MGk2OUJCOEQ0MDhBQ0FFRjAx?revision=6\"}"}},{"__typename":"AssociatedImageEdge","cursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI1","node":{"__ref":"AssociatedImage:{\"url\":\"https://techcommunity.microsoft.com/t5/s/gxcuf89792/images/bS00MTcyMzYyLTU5MzU5Mmk5RUY2QzkzRUEyRDJGRkVE?revision=6\"}"}}],"totalCount":27,"pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuMXwyLjF8b3wyNXxfTlZffDI1","hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"coverImage":null,"coverImageProperties":{"__typename":"CoverImageProperties","style":"STANDARD","titlePosition":"BOTTOM","altText":""}},"CachedAsset:text:en_US-components/community/Navbar-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1745505309813","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1745505309813","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1745505309813","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1745505309813","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1745505309813","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-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1745505309813","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagSubscriptionAction-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagSubscriptionAction-1745505309813","value":{"success.follow.title":"Following Tag","success.unfollow.title":"Unfollowed Tag","success.follow.message.followAcrossCommunity":"You will be notified when this tag is used anywhere across the community","success.unfollowtag.message":"You will no longer be notified when this tag is used anywhere in this place","success.unfollowtagAcrossCommunity.message":"You will no longer be notified when this tag is used anywhere across the community","unexpected.error.title":"Error - Action Failed","unexpected.error.message":"An unidentified problem occurred during the action you took. Please try again later.","buttonTitle":"{isSubscribed, select, true {Unfollow} false {Follow} other{}}","unfollow":"Unfollow"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListTabs-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListTabs-1745505309813","value":{"mostKudoed":"{value, select, IDEA {Most Votes} other {Most Likes}}","mostReplies":"Most Replies","mostViewed":"Most Viewed","newest":"{value, select, IDEA {Newest Ideas} OCCASION {Newest Events} other {Newest Topics}}","newestOccasions":"Newest Events","mostRecent":"Most Recent","noReplies":"No Replies Yet","noSolutions":"No Solutions Yet","solutions":"Solutions","mostRecentUserContent":"Most Recent","trending":"Trending","draft":"Drafts","spam":"Spam","abuse":"Abuse","moderation":"Moderation","tags":"Tags","PAST":"Past","UPCOMING":"Upcoming","sortBymostRecent":"Sort By Most Recent","sortBymostRecentUserContent":"Sort By Most Recent","sortBymostKudoed":"Sort By Most Likes","sortBymostReplies":"Sort By Most Replies","sortBymostViewed":"Sort By Most Viewed","sortBynewest":"Sort By Newest Topics","sortBynewestOccasions":"Sort By Newest Events","otherTabs":" Messages list in the {tab} for {conversationStyle}","guides":"Guides","archives":"Archives"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1745505309813","value":{"title":"Query Handler"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarDropdownToggle-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarDropdownToggle-1745505309813","value":{"ariaLabelClosed":"Press the down arrow to open the menu"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/OverflowNav-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/OverflowNav-1745505309813","value":{"toggleText":"More"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1745505309813","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1745505309813","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1745505309813","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1745505309813","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-shared/client/components/nodes/NodeIcon-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1745505309813","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageUnreadCount-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageUnreadCount-1745505309813","value":{"unread":"{count} unread","comments":"{count, plural, one { unread comment} other{ unread comments}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageViewCount-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageViewCount-1745505309813","value":{"textTitle":"{count, plural,one {View} other{Views}}","views":"{count, plural, one{View} other{Views}}"},"localOverride":false},"CachedAsset:text:en_US-components/kudos/KudosCount-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/kudos/KudosCount-1745505309813","value":{"textTitle":"{count, plural,one {{messageType, select, IDEA{Vote} other{Like}}} other{{messageType, select, IDEA{Votes} other{Likes}}}}","likes":"{count, plural, one{like} other{likes}}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageRepliesCount-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageRepliesCount-1745505309813","value":{"textTitle":"{count, plural,one {{conversationStyle, select, IDEA{Comment} OCCASION{Comment} other{Reply}}} other{{conversationStyle, select, IDEA{Comments} OCCASION{Comments} other{Replies}}}}","comments":"{count, plural, one{Comment} other{Comments}}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1745505309813":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1745505309813","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false}}}},"page":"/tags/TagPage/TagPage","query":{"nodeId":"board:EducatorDeveloperBlog","tagName":"Beginner's Guide"},"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/tags/TagsHeaderWidget/TagsHeaderWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/tags/TagSubscriptionAction/TagSubscriptionAction.tsx","./components/external/components/ExternalComponent.tsx","../shared/client/components/common/List/ListGroup/ListGroup.tsx","./components/messages/MessageView/MessageView.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx"],"appGip":true,"scriptLoader":[{"id":"analytics","src":"https://techcommunity.microsoft.com/t5/s/gxcuf89792/pagescripts/1730819800000/analytics.js?page.id=TagPage","strategy":"afterInteractive"}]}