{"id":352188,"date":"2026-08-19T14:16:48","date_gmt":"2026-08-19T14:16:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/entra-intranet-connector\/"},"modified":"2026-08-19T14:54:39","modified_gmt":"2026-08-19T14:54:39","slug":"intranetos-employee-intranet","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/intranetos-employee-intranet\/","author":23547165,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.12.1","stable_tag":"1.12.1","tested":"7.0.4","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"IntranetOS Employee Intranet with Entra ID","header_author":"IntranetOS","header_description":"Turn WordPress into a secure employee intranet with Microsoft 365: Entra ID single sign-on, employee directory sync, unified search, intranet blocks and a full engagement pack (announcements, kudos, polls, celebrations, FAQ).","assets_banners_color":"36393f","last_updated":"2026-08-19 14:54:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/intranetos.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.12.1":{"tag":"1.12.1","author":"wadimelouk","date":"2026-08-19 14:54:39"}},"upgrade_notice":{"1.12.1":"<p>Security hardening: fully prepared SQL queries and escaped HTML output everywhere.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3654793,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3654793,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3654793,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3654793,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"eicp\/quick-action-tile":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/quick-action-tile","version":"1.0.0","title":"Quick Action Tiles","category":"eicp-intranet","icon":"screenoptions","description":"Grid of shortcut tiles linking to intranet tools and pages.","keywords":["tiles","links","shortcuts","intranet"],"textdomain":"intranetos-employee-intranet","attributes":{"columns":{"type":"number","default":4},"tilesRaw":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","render":"file:.\/render.php"},"eicp\/event-grid":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/event-grid","version":"1.0.0","title":"Event Grid","category":"eicp-intranet","icon":"calendar-alt","description":"Display a responsive grid of events.","keywords":["events","grid","calendar"],"textdomain":"intranetos-employee-intranet","attributes":{"columns":{"type":"number","default":3},"events":{"type":"array","default":[],"items":{"type":"object"}},"regionFilter":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"],"color":{"background":true,"text":true},"spacing":{"padding":true,"margin":true}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","render":"file:.\/render.php"},"eicp\/portal-carousel":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/portal-carousel","version":"1.0.0","title":"Portal Carousel","category":"eicp-intranet","icon":"images-alt2","description":"Auto-rotating hero carousel for announcements and campaigns.","keywords":["carousel","slider","hero","banner"],"textdomain":"intranetos-employee-intranet","attributes":{"slidesRaw":{"type":"string","default":""},"interval":{"type":"number","default":5}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","viewScript":"file:.\/view.js","render":"file:.\/render.php"},"eicp\/employee-directory-card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/employee-directory-card","version":"1.0.0","title":"Employee Directory Cards","category":"eicp-intranet","icon":"groups","description":"Cards of real employees synced from Microsoft Entra ID.","keywords":["employees","directory","people","entra"],"textdomain":"intranetos-employee-intranet","attributes":{"department":{"type":"string","default":""},"columns":{"type":"number","default":3},"maxItems":{"type":"number","default":12}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","render":"file:.\/render.php"},"eicp\/document-accordion":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/document-accordion","version":"1.0.0","title":"Document Accordion","category":"eicp-intranet","icon":"media-document","description":"Expandable sections of document links \u2014 policies, forms, guides.","keywords":["documents","accordion","policies","files"],"textdomain":"intranetos-employee-intranet","attributes":{"sectionsRaw":{"type":"string","default":""},"openFirst":{"type":"boolean","default":true}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","render":"file:.\/render.php"},"eicp\/news-card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eicp\/news-card","version":"1.0.0","title":"News Card","category":"eicp-intranet","icon":"id-alt","description":"Display a news card with image, title, excerpt, and date.","keywords":["news","card","intranet"],"textdomain":"intranetos-employee-intranet","attributes":{"title":{"type":"string","default":""},"excerpt":{"type":"string","default":""},"imageUrl":{"type":"string","default":""},"date":{"type":"string","default":""},"link":{"type":"string","default":""},"categoryId":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"],"color":{"background":true,"text":true},"spacing":{"padding":true,"margin":true}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/style.css","style":"file:.\/style.css","render":"file:.\/render.php"}},"tagged_versions":["1.12.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"\"Sign in with Microsoft\" on the WordPress login page","2":"Intranet Home portal with quick-action tiles (dark style)","3":"Employee Directory synced from Microsoft 365","4":"My Day personal dashboard with announcements, kudos, celebrations and polls","5":"Engagement Hub admin \u2014 announcements, kudos, polls, celebrations, FAQs"}},"plugin_section":[],"plugin_tags":[11760,241505,6307,3883,2469],"plugin_category":[],"plugin_contributors":[276510],"plugin_business_model":[],"class_list":["post-352188","plugin","type-plugin","status-publish","hentry","plugin_tags-employee-directory","plugin_tags-entra","plugin_tags-intranet","plugin_tags-microsoft","plugin_tags-sso","plugin_contributors-wadimelouk","plugin_committers-wadimelouk"],"banners":{"banner":"https:\/\/ps.w.org\/intranetos-employee-intranet\/assets\/banner-772x250.png?rev=3654793","banner_2x":"https:\/\/ps.w.org\/intranetos-employee-intranet\/assets\/banner-1544x500.png?rev=3654793","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/intranetos-employee-intranet\/assets\/icon-128x128.png?rev=3654793","icon_2x":"https:\/\/ps.w.org\/intranetos-employee-intranet\/assets\/icon-256x256.png?rev=3654793","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>IntranetOS Employee Intranet with Entra ID connects your WordPress site to Microsoft 365 and gives your team a modern intranet \u2014 no per-user fees, no locked features, no upsells inside the plugin.<\/p>\n\n<p><strong>\ud83d\udd10 Microsoft Entra ID Single Sign-On<\/strong><\/p>\n\n<ul>\n<li>\"Sign in with Microsoft\" button on wp-login.php (OAuth2 + PKCE)<\/li>\n<li>Automatic account matching and creation \u2014 new accounts always start as Subscriber<\/li>\n<li>B2B guest accounts are matched to their real email, never duplicated<\/li>\n<li>Optional: force Microsoft sign-in for linked accounts, and sign out of Microsoft on WordPress logout<\/li>\n<li>Built-in connection test with clear, human-readable error guidance<\/li>\n<\/ul>\n\n<p><strong>\ud83d\udc65 Employee Sync + Directory<\/strong><\/p>\n\n<ul>\n<li>Pull users from Microsoft Entra ID via Microsoft Graph delta sync (incremental \u2014 later syncs only process changes, including removals)<\/li>\n<li>Optional WordPress account provisioning for synced employees<\/li>\n<li>Front-end directory with <code>[eicp_employee_directory]<\/code> (filter by department, 2\u20134 columns)<\/li>\n<li>Auto-sync every 15 minutes via WP-Cron (optional)<\/li>\n<\/ul>\n\n<p><strong>\ud83d\udd0e Unified Intranet Search<\/strong><\/p>\n\n<ul>\n<li>One search box across pages, posts, synced people and the FAQ knowledge base: <code>[eicp_unified_search]<\/code><\/li>\n<li>Optionally redirects the theme's native search for logged-in users<\/li>\n<li>ElasticPress integration when that plugin is installed<\/li>\n<\/ul>\n\n<p><strong>\ud83c\udf89 Engagement Pack (100% local \u2014 no Microsoft tenant needed)<\/strong><\/p>\n\n<ul>\n<li><code>[eicp_announcements]<\/code> \u2014 company news with pinning<\/li>\n<li><code>[eicp_kudos_wall]<\/code> \u2014 peer recognition with email notification<\/li>\n<li><code>[eicp_polls]<\/code> \u2014 quick polls with one vote per employee and live results<\/li>\n<li><code>[eicp_celebrations]<\/code> \u2014 birthdays and work anniversaries, today and this month<\/li>\n<li><code>[eicp_faq]<\/code> \u2014 categorized knowledge base<\/li>\n<li><code>[eicp_my_day]<\/code> \u2014 personal daily dashboard combining all of the above<\/li>\n<li>Engagement Hub admin screen to publish and moderate everything<\/li>\n<\/ul>\n\n<p><strong>\ud83e\uddf1 Intranet Blocks + One-Click Setup<\/strong><\/p>\n\n<ul>\n<li>Six Gutenberg blocks: News Card, Event Grid, Quick Action Tiles, Document Accordion, Portal Carousel, Employee Directory Card<\/li>\n<li>One-Click Intranet Setup wizard: generates Intranet Home (portal with quick tiles), My Day, Directory, News, Search, Kudos, Polls, Celebrations and FAQ pages plus an \"Intranet\" navigation menu \u2014 idempotent, never duplicates your pages<\/li>\n<li>Dark IntranetOS page style: applies automatically to any page containing a plugin shortcode, or per-page via the editor sidebar checkbox<\/li>\n<\/ul>\n\n<p><strong>Privacy-friendly:<\/strong> your Microsoft client secret is stored AES-256-GCM encrypted in your own database. This plugin never phones home and sends no data to the plugin author.<\/p>\n\n<p>A separate commercial edition with SharePoint, Power BI and Service Desk connectors is available at <a href=\"https:\/\/intranetos.com\">intranetos.com<\/a>. It is not required for any feature of this plugin.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the following Microsoft services. No other external service is contacted; no data is sent to the plugin author or any third party.<\/p>\n\n<p><strong>Microsoft identity platform (login.microsoftonline.com)<\/strong> \u2014 used for Entra ID single sign-on: tenant discovery (OpenID configuration), authorization redirects when an employee clicks \"Sign in with Microsoft\", token exchange\/refresh, and the optional Microsoft logout redirect. Data sent: your Tenant ID, Client ID and Client Secret, the OAuth authorization code, and sign-in state tokens. Data received: ID\/access tokens and the signed-in user's profile.\nTerms: <a href=\"https:\/\/www.microsoft.com\/en-us\/servicesagreement\">Microsoft Services Agreement<\/a> \u00b7 <a href=\"https:\/\/learn.microsoft.com\/en-us\/legal\/microsoft-apis\/terms-of-use\">Microsoft identity platform terms<\/a> \u00b7 <a href=\"https:\/\/privacy.microsoft.com\/en-us\/privacystatement\">Privacy Statement<\/a><\/p>\n\n<p><strong>Microsoft Graph API (graph.microsoft.com)<\/strong> \u2014 used to read the signed-in user's profile (<code>\/me<\/code>) during login, and \u2014 only when you enable Employee Sync \u2014 to read your tenant's user list (<code>\/users\/delta<\/code>: name, job title, department, email) into the plugin's local directory table. Data sent: OAuth access tokens. Data received: user profile and directory data, stored in your own WordPress database.\nTerms: <a href=\"https:\/\/learn.microsoft.com\/en-us\/legal\/microsoft-apis\/terms-of-use\">Microsoft Graph API Terms of Use<\/a> \u00b7 <a href=\"https:\/\/privacy.microsoft.com\/en-us\/privacystatement\">Privacy Statement<\/a><\/p>\n\n<p>The admin settings page also links to portal.azure.com for the one-time app registration; this is a documentation link only \u2014 the plugin makes no calls to it.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via Plugins \u2192 Add New \u2192 Upload.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>IntranetOS \u2192 Microsoft SSO<\/strong> and follow the one-time Azure app registration steps (Tenant ID, Client ID, Client Secret).<\/li>\n<li>Run <strong>IntranetOS \u2192 Setup Wizard<\/strong> to generate your intranet pages in one click.<\/li>\n<li>Optionally enable auto-sync under <strong>IntranetOS \u2192 Employee Sync<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20anything%20locked%20behind%20payment%3F\"><h3>Is anything locked behind payment?<\/h3><\/dt>\n<dd><p>No. Every feature in this plugin is fully functional for everyone. There are no license keys, no feature gates and no trial limitations in this plugin.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20microsoft%20365%20tenant%3F\"><h3>Do I need a Microsoft 365 tenant?<\/h3><\/dt>\n<dd><p>Only for SSO and Employee Sync. The entire Engagement Pack (announcements, kudos, polls, celebrations, FAQ, My Day), the blocks, search of site content and the setup wizard work without any Microsoft account.<\/p><\/dd>\n<dt id=\"which%20microsoft%20permissions%20do%20i%20need%3F\"><h3>Which Microsoft permissions do I need?<\/h3><\/dt>\n<dd><p>Delegated <code>User.Read<\/code> for sign-in (usually present by default) and application <code>User.Read.All<\/code> with admin consent for Employee Sync.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20create%20administrator%20accounts%3F\"><h3>Does the plugin create administrator accounts?<\/h3><\/dt>\n<dd><p>Never. Accounts auto-created via SSO or Employee Sync always get the Subscriber role. You can promote users manually under Users.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.12.1<\/h4>\n\n<ul>\n<li>Security hardening following the WordPress.org review: every database query now uses $wpdb-&gt;prepare() with %i table placeholders, and all generated HTML output is escaped at output with wp_kses()\/esc_*(). The delete confirmation in the Engagement Hub moved from an inline handler to the enqueued admin script.<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li>First public release on WordPress.org: Entra ID SSO, Employee Sync + Directory, unified search, six intranet blocks, full Engagement Pack (announcements, kudos, polls, celebrations, FAQ, My Day), One-Click Setup wizard, dark intranet page style.<\/li>\n<\/ul>","raw_excerpt":"Employee intranet for WordPress + Microsoft 365: Entra ID SSO, directory sync, unified search, intranet blocks and a full engagement pack. 100% free.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352188"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wadimelouk"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352188"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352188"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352188"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352188"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352188"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}