diff --git a/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00000.response.json b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00000.response.json new file mode 100644 index 0000000000..428d9e9b53 --- /dev/null +++ b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00000.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"13b005a2-204f-9000-8664-ea73a2d64880","SPClientServiceRequestDuration":"16","X-SharePointHealthScore":"2","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022RegionalSettings\u0022:{\u0022TimeZone\u0022:{\u0022Description\u0022:\u0022(UTC-08:00) Pacific Time (US and Canada)\u0022,\u0022Id\u0022:13,\u0022Information\u0022:{\u0022Bias\u0022:480,\u0022DaylightBias\u0022:-60,\u0022StandardBias\u0022:0}},\u0022AdjustHijriDays\u0022:0,\u0022AlternateCalendarType\u0022:0,\u0022AM\u0022:\u0022AM\u0022,\u0022CalendarType\u0022:1,\u0022Collation\u0022:25,\u0022CollationLCID\u0022:2070,\u0022DateFormat\u0022:0,\u0022DateSeparator\u0022:\u0022/\u0022,\u0022DecimalSeparator\u0022:\u0022.\u0022,\u0022DigitGrouping\u0022:\u00223;0\u0022,\u0022FirstDayOfWeek\u0022:0,\u0022FirstWeekOfYear\u0022:0,\u0022IsEastAsia\u0022:false,\u0022IsRightToLeft\u0022:false,\u0022IsUIRightToLeft\u0022:false,\u0022ListSeparator\u0022:\u0022,\u0022,\u0022LocaleId\u0022:1033,\u0022NegativeSign\u0022:\u0022-\u0022,\u0022NegNumberMode\u0022:1,\u0022PM\u0022:\u0022PM\u0022,\u0022PositiveSign\u0022:\u0022\u0022,\u0022ShowWeeks\u0022:false,\u0022ThousandSeparator\u0022:\u0022,\u0022,\u0022Time24\u0022:false,\u0022TimeMarkerPosition\u0022:0,\u0022TimeSeparator\u0022:\u0022:\u0022,\u0022WorkDayEndHour\u0022:1020,\u0022WorkDays\u0022:62,\u0022WorkDayStartHour\u0022:480},\u0022Id\u0022:\u002221e96bcf-bdc1-4027-9225-ef8934b4dc4e\u0022,\u0022Url\u0022:\u0022https://test.sharepoint.com/sites/HarmonyWorksIndustrials\u0022}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00001.response.json b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00001.response.json new file mode 100644 index 0000000000..e46ffa1c57 --- /dev/null +++ b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00001.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"SPRequestGuid":"13b005a2-1057-9000-8664-eb9612670866","SPClientServiceRequestDuration":"18","X-SharePointHealthScore":"0","X-SP-SERVERSTATE":"ReadOnly=0"},"Response":"{\u0022GroupId\u0022:\u002200000000-0000-0000-0000-000000000000\u0022,\u0022Id\u0022:\u0022092c099d-52a7-44da-9ce0-02400f849abe\u0022}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00002.response.json b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00002.response.json new file mode 100644 index 0000000000..2757d85caf --- /dev/null +++ b/src/sdk/PnP.Core.Test/Copilot/MockData/RetrievalTests/RetriveTest-0-00002.response.json @@ -0,0 +1 @@ +{"IsSuccessStatusCode":true,"StatusCode":200,"Headers":{"Transfer-Encoding":"chunked","Strict-Transport-Security":"max-age=31536000","request-id":"7e32ccda-15db-4805-899e-eb258dc4ee4a","client-request-id":"7e32ccda-15db-4805-899e-eb258dc4ee4a","x-ms-ags-diagnostic":"{\u0022ServerInfo\u0022:{\u0022DataCenter\u0022:\u0022Germany West Central\u0022,\u0022Slice\u0022:\u0022E\u0022,\u0022Ring\u0022:\u00224\u0022,\u0022ScaleUnit\u0022:\u0022008\u0022,\u0022RoleInstance\u0022:\u0022FR3PEPF00001020\u0022}}","Date":"Wed, 01 Apr 2026 11:36:19 GMT"},"Response":"{\u0022retrievalHits\u0022:[{\u0022webUrl\u0022:\u0022https://test.sharepoint.com/sites/HarmonyWorksIndustrials/SitePages/Test-Page-from-template.aspx\u0022,\u0022extracts\u0022:[{\u0022text\u0022:\u0022\\r\\n#### Image\\r\\n \\r\\nMeet the Green Team \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/b977dc72-93ae-463a-be8b-ff7296e22dc3/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/b977dc72-93ae-463a-be8b-ff7296e22dc3/image.png)\\r\\n\\r\\n### Who are we?\\r\\n \\r\\nWelcome to the Green Team at Relecloud! We\u0027re a dedicated group of employees committed to planning and executing sustainability efforts and green projects across our company. Our goal is to create a more sustainable and eco-friendly workplace for everyone.\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/72e975c9-becd-4999-af54-929de3d51748/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/72e975c9-becd-4999-af54-929de3d51748/image.png)\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/83f9f887-77fd-4c14-909f-1769c56e7773/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/83f9f887-77fd-4c14-909f-1769c56e7773/image.png)\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/9cc27219-1422-4496-9b6f-32a60413fa7e/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/9cc27219-1422-4496-9b6f-32a60413fa7e/image.png)\\r\\n\\r\\n### What we stand for\\r\\n \\r\\nTogether, we strive to make a positive impact on our environment and inspire others to do the same.\\r\\n\\r\\n#### Mission\\r\\n \\r\\nOur mission is to lead Relecloud\u0027s sustainability initiatives by promoting energy efficiency, waste reduction, and eco-friendly practices.\u00A0\\r\\n\\r\\n#### Values\\r\\n \\r\\nWe value collaboration, innovation, and a shared commitment to protecting our planet.\u00A0\\r\\n\\r\\n### Leadership team\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Rory Nguyen\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Tomas Lukac\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Mila Moraes\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Gordan Vukelic\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Laura Cunha\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n#### Editorial card\\r\\n\\r\\n### Parker McLean\\r\\n \\r\\nSenior Mechanical Engineer\\r\\n\\r\\n### Our green projects\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/f54a2213-12cf-4ed6-a79d-44938f4c3986/image.jpg](https://cdn.hubblecontent.osi.office.net/m365content/publish/f54a2213-12cf-4ed6-a79d-44938f4c3986/image.jpg)\\r\\n\\r\\n#### Energy-efficient buildings\\r\\n \\r\\nMaking our offices more energy-efficient by installing solar panels, upgrading insulation, and using smart energy systems.\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/0551a970-e8fc-409f-b957-2bc610b6d8cf/image.jpg](https://cdn.hubblecontent.osi.office.net/m365content/publish/0551a970-e8fc-409f-b957-2bc610b6d8cf/image.jpg)\\r\\n\\r\\n#### Waste reduction programs\\r\\n \\r\\nIntroduced comprehensive recycling programs, reduced single-use plastics, and launched initiatives to minimize waste.\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/80710e62-24aa-4585-9554-f8aca9a24651/image.jpg](https://cdn.hubblecontent.osi.office.net/m365content/publish/80710e62-24aa-4585-9554-f8aca9a24651/image.jpg)\\r\\n\\r\\n#### Green transportation\\r\\n \\r\\nEncouraging carpooling, biking, and the use of public transportation among employees to reduce our carbon footprint.\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/f54f5740-72c3-4db1-ae1c-45a6ad07d651/image.jpg](https://cdn.hubblecontent.osi.office.net/m365content/publish/f54f5740-72c3-4db1-ae1c-45a6ad07d651/image.jpg)\\r\\n\\r\\n#### Community clean-up\\r\\n \\r\\nOrganizing regular clean-up events in our local communities to promote environmental awareness and engagement.\\r\\n\\r\\n### Recent news\\r\\n\\r\\n#### News\\r\\n \\r\\n{ \\\u0022webPartData\\\u0022: { \\\u0022serverProcessedContent\\\u0022: { \\\u0022htmlStrings\\\u0022: {}, \\\u0022searchablePlainTexts\\\u0022: {}, \\\u0022imageSources\\\u0022: {}, \\\u0022links\\\u0022: { \\\u0022baseUrl\\\u0022: \\\u0022/sites/HarmonyWorksIndustrials\\\u0022 }, \\\u0022componentDependencies\\\u0022: { \\\u0022layoutComponentId\\\u0022: \\\u00229586b262-54de-4b27-9eb9-34c671400c33\\\u0022, \\\u0022carouselHeroWrapperComponentId\\\u0022: \\\u002267f38b9a-1ca4-427d-961d-732f70c1bdfe\\\u0022 } } } }\\r\\n\\r\\n### Get involved\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/39837e5c-88db-45c5-9b95-b24bd6cd15d0/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/39837e5c-88db-45c5-9b95-b24bd6cd15d0/image.png)[https://www.microsoft.com](https://www.microsoft.com/)\\r\\n\\r\\n##### Join leadership team\\r\\n\u0022,\u0022relevanceScore\u0022:0.6887896242308015},{\u0022text\u0022:\u0022\\r\\n### Get involved\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/85be46f7-b22e-4d51-b333-ccdb81902796/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/85be46f7-b22e-4d51-b333-ccdb81902796/image.png)[https://www.microsoft.com](https://www.microsoft.com/)\\r\\n\\r\\n##### Suggest a new project\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/bb74ff76-cb48-4794-bcaa-0924ebdfff1f/image.png](https://cdn.hubblecontent.osi.office.net/m365content/publish/bb74ff76-cb48-4794-bcaa-0924ebdfff1f/image.png)[https://www.microsoft.com](https://www.microsoft.com/)\\r\\n\\r\\n##### Volunteer\\r\\n\u0022,\u0022relevanceScore\u0022:0.682654649389637}],\u0022resourceType\u0022:\u0022listItem\u0022,\u0022resourceMetadata\u0022:{}},{\u0022webUrl\u0022:\u0022https://test.sharepoint.com/sites/Engineering/Shared Documents/Exchange Migration.docx\u0022,\u0022extracts\u0022:[{\u0022text\u0022:\u0022\\r\\n# Migration to Exchange Online \\r\\n[Discovery \u0026 Assessment\\t1]() \\r\\n[Current Environment Review\\t1]() \\r\\n[Compliance \u0026 Data Retention\\t1]() \\r\\n[Risk Assessment\\t2]() \\r\\n[Identifying Risks:\\t2]() \\r\\n[Developing Mitigation Strategies:\\t3]() \\r\\n[Planning \u0026 Design\\t3]() \\r\\n[Migration Strategy\\t3]() \\r\\n[Project Timeline\\t4]() \\r\\n[KPIs\\t5]() \\r\\n[Example KPI Definitions\\t6]() \\r\\n[Implementation Steps\\t7]() \\r\\n[Implementation Plan\\t8]() \\r\\n[Implementation Steps\\t8]() \\r\\n[Resource Allocation\\t9]() \\r\\n[Risk Management\\t9]() \\r\\n[Potential Risks\\t9]() \\r\\n[Mitigation Strategies\\t10]() \\r\\n[Communication Plan\\t10]() \\r\\n[Success Criteria\\t10]() \\r\\n[Execution \u0026 Migration\\t10]() \\r\\n[Preparation\\t11]() \\r\\n[Assess Current Email Environment:\\t11]() \\r\\n[Capacity Planning:\\t11]() \\r\\n[Data Preparation and Backup:\\t11]() \\r\\n[Communication Plan:\\t11]() \\r\\n[Security Measures:\\t11]() \\r\\n[Testing:\\t11]() \\r\\n[Documentation:\\t11]() \\r\\n[Post-Migration Support Plan\\t12]() \\r\\n[Migration Process\\t12]() \\r\\n[Communication\\t13]() \\r\\n[Exception Handling\\t13]() \\r\\n[Post-Migration Stabilization \u0026 Validation\\t13]() \\r\\n[Validation\\t13]() \\r\\n[Training\\t13]() \\r\\n[Sunsetting the Previous System\\t13]() \\r\\n[Decommissioning Plan\\t13]() \\r\\n[Communication\\t13]() \\r\\n[Appendices\\t13]() \\r\\n[Technical Details\\t13]() \\r\\n[Glossary\\t13]() \\r\\n[Compliance Checklist\\t13]()\\r\\n\\r\\n## Discovery \u0026 Assessment\\r\\n\\r\\n### Current Environment Review\\r\\n \\r\\nTo ensure a successful migration to Exchange Online, it is essential to thoroughly review the current email infrastructure and understand its operational landscape. \\r\\nEmail Infrastructure Overview: Identify the version of Exchange Server currently in use (e.g., Exchange and assess its architecture, whether on-premises or hybrid setups are already in place. \\r\\nUser and Mailbox Details: Determine the number of users and their mailbox sizes to gauge resource requirements for Exchange Online. \\r\\nEmail Volume Analysis: Evaluate daily email traffic volume to plan appropriately for resources needed in the new environment. \\r\\nCustomizations and Integrations: Review any custom rules, routing policies, or integrations with other systems that may need special attention during migration. \\r\\nBusiness Impact Assessment: Assess the criticality of email services across different departments to prioritize certain aspects of the migration process. \\r\\nCompliance Requirements: Understand legal and regulatory obligations regarding email retention, encryption, and data protection to ensure compliance in the new setup. \\r\\nInfrastructure Health Check: Identify outdated components or security vulnerabilities that need addressing before proceeding with the migration. \\r\\nBy conducting a comprehensive review of the current environment, we can lay a solid foundation for a successful transition to Exchange Online, minimizing risks and ensuring smooth operations post-migration.\\r\\n\\r\\n### Compliance \u0026 Data Retention\\r\\n \\r\\nIn the context of migrating to Exchange Online, ensuring compliance with legal and regulatory requirements regarding email and data storage is crucial. \\r\\nLegal and Regulatory Obligations: Identify applicable laws such as GDPR for European organizations or HIPAA for US healthcare providers. Understanding these regulations will guide the establishment of appropriate retention policies. \\r\\nCurrent Data Retention Policies: Review existing policies to determine if they align with legal requirements. This includes understanding whether emails are retained indefinitely or have defined periods, especially for specific types of records that may require longer retention. \\r\\nData Encryption: Assess current encryption measures to protect sensitive data. Ensuring that encryption protocols meet regulatory standards will enhance security during the migration process. \\r\\nAccess Controls: Evaluate who currently has access to email archives and how such access is logged or audited. This helps in maintaining accountability and preventing unauthorized access post-migration. \\r\\nData Storage Locations: Determine where emails are stored\u2014on local servers, in the cloud, or a hybrid setup. This information is vital for planning an effective migration process. \\r\\nStakeholder Communication: Engage with stakeholders to communicate compliance requirements and any necessary changes post-migration, ensuring everyone understands their responsibilities. \\r\\nBy addressing these areas, we ensure that data handling is legal and secure, which is essential for maintaining trust and avoiding potential legal issues during the transition to Exchange Online.\\r\\n\\r\\n### Risk Assessment\\r\\n \\r\\nConducting a risk assessment is a critical step in preparing for the migration to Exchange Online, helping identify potential challenges and threats that could affect the success of the transition.\\r\\n\\r\\n#### Identifying Risks:\\r\\n \\r\\nData Loss: Risk of losing data during the migration process if not handled carefully. \\r\\nDowntime: Potential interruption of email services during the transition period. \\r\\nSecurity Breaches: Threats to data security, both during and after the migration. \\r\\nAssessing Likelihood and Impact: \\r\\nEvaluate the probability of each risk occurring and its potential impact on the organization. Risks with high likelihood and severe consequences should be prioritized for immediate attention. \\r\\nDeveloping Mitigation Strategies: \\r\\nData Loss: Implement comprehensive backups and consider a phased migration approach. \\r\\nDowntime: Plan for minimal disruption by coordinating with all stakeholders and having contingency plans in place. \\r\\nSecurity Breaches: Enhance cybersecurity measures, conduct thorough audits, and ensure compliance with security protocols. \\r\\nConsidering Dependencies: \\r\\nEvaluate risks introduced by third-party vendors involved in the migration process and include their risk factors in the assessment.\u0022,\u0022relevanceScore\u0022:0.6603011491114427},{\u0022text\u0022:\u0022\\r\\n## Discovery \u0026 Assessment\\r\\n\\r\\n### Risk Assessment\\r\\n\\r\\n#### Identifying Risks:\\r\\n \\r\\nDocumentation: \\r\\nDocument all identified risks, assessment results, and mitigation strategies to serve as a guide throughout the migration process. \\r\\nBy systematically addressing these risks, the organization can ensure a smoother transition to Exchange Online while safeguarding its data and operations\\r\\n\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### Migration Strategy\\r\\n \\r\\nDeveloping a comprehensive migration strategy is essential for a successful transition to Exchange Online. Below are key components to consider: \\r\\nMigration Approach: \\r\\nFull Migration: Migrating all users at once, suitable for organizations with minimal tolerance for downtime and complexity. \\r\\nPhased Migration: Implementing a step-by-step approach by migrating user groups or departments incrementally, allowing for controlled testing and adjustment. \\r\\nHybrid Model: Coexisting legacy systems and Exchange Online during the transition period to ensure continuity of service. \\r\\nMigration Order: \\r\\nPrioritize the order based on factors such as system load, dependency, and impact on business operations. Consider migrating less critical departments first or opting for a full migration if feasible. \\r\\nProject Planning: \\r\\nOutline clear milestones, assign responsibilities, and establish communication channels to keep stakeholders informed. \\r\\nAllocate sufficient time for testing and validation to ensure a smooth migration process and minimize errors. \\r\\nIntegration with Existing Systems: \\r\\nEnsure compatibility between Exchange Online and other organizational tools and infrastructure for seamless interaction and continued productivity post-migration. \\r\\nContingency Planning: \\r\\nIdentify potential risks and develop mitigation strategies to address unforeseen issues, ensuring minimal disruption to business operations during the transition. \\r\\nBy carefully considering these aspects and tailoring the migration strategy to the organization\u0027s specific needs, a successful transition to Exchange Online can be achieved with minimal impact on operations.\\r\\n\\r\\n### Project Timeline\\r\\n\\r\\n\u003Ctable\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Cth\u003E \\r\\n**Task**\\r\\n\u003C/th\u003E\\r\\n\u003Cth\u003E \\r\\n**Description**\\r\\n\u003C/th\u003E\\r\\n\u003Cth\u003E \\r\\n**Start Date**\\r\\n\u003C/th\u003E\\r\\n\u003Cth\u003E \\r\\n**End Date**\\r\\n\u003C/th\u003E\\r\\n\u003Cth\u003E \\r\\n**Assigned To**\\r\\n\u003C/th\u003E\\r\\n\u003Cth\u003E \\r\\n**Dependencies**\\r\\n\u003C/th\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nAssess current environment\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nEvaluate current email system, identify data and configurations to be migrated\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nDevelop Migration Strategy\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nDefine approach (full, phased, hybrid), outline key phases and tasks.\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nProject Manager\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nTask 1 completion\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nData Preparation\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nBackup data, prepare user mailboxes, ensure compatibility with Exchange Online.\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nTask 2 approval\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nUser Training\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nConduct training sessions to familiarize users with new system features and tools\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nHR \u0026 IT Teams\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nPhased Migration (Dept A)\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nMigrate selected department, monitor for issues, perform initial validation\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nData Preparation complete\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nPost-Migration Testing\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nTest system functionality, resolve any issues identified during migration.\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nPhased Migration complete\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nFull Migration\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nProceed with next phase of migration based on testing outcomes.\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nPost-Migration Testing complete\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nFinal Validation\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nEnsure all data and configurations are successfully migrated and functional\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nFull Migration completion\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003Ctr\u003E\\r\\n\u003Ctd\u003E \\r\\nUser Support \u0026 Documentation\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nProvide ongoing support, update documentation to reflect new system setup\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nIT Team\\r\\n\u003C/td\u003E\\r\\n\u003Ctd\u003E \\r\\nFinal Validation complete\\r\\n\u003C/td\u003E\\r\\n\u003C/tr\u003E\\r\\n\u003C/table\u003E\\r\\n\\r\\n\\r\\n### KPIs\\r\\n \\r\\nDefining Key Performance Indicators (KPIs) is essential for evaluating the success of the migration to Exchange Online. Below are the steps taken to establish these metrics: \\r\\nIdentify Relevant Areas for Measurement: \\r\\nFocus on areas such as system performance, user adoption, support effectiveness, and business outcomes. \\r\\nExample: System performance might include email uptime, response time, and server availability. \\r\\nDefine Clear Metrics: \\r\\nEstablish specific metrics that align with the identified areas. \\r\\nExample: \\\u0022Email Uptime Percentage\\\u0022 measures the percentage of time email services are available post-migration. \\r\\nSet Realistic Targets: \\r\\nDetermine achievable targets for each KPI based on organizational goals and industry standards. \\r\\nExample: Target 99% email uptime to ensure minimal disruption during and after migration. \\r\\nDevelop a Monitoring Plan: \\r\\nOutline how often each KPI will be measured and by whom. \\r\\nExample: Weekly monitoring of system performance by the IT team, with monthly reporting to stakeholders. \\r\\nAlign KPIs with Business Goals: \\r\\nEnsure that the selected KPIs directly contribute to achieving the organization\u0027s objectives. \\r\\nExample: Improving user productivity through faster email response times and reliable service delivery. \\r\\nEstablish a Reporting Framework: \\r\\nCreate a structured approach for reporting on KPIs, including frequency, format, and distribution channels. \\r\\nExample: Bi-weekly status reports to project stakeholders highlighting key metrics and trends. \\r\\nBy following these steps, the KPIs will effectively measure the success of the migration to Exchange Online, ensuring alignment with both technical performance and business objectives. \\r\\nExample KPI Definitions: \\r\\nUsers \u0026 mailboxes migrated \\r\\nDefinition: Percentage of users and shared mailboxes migration to Exchange Online \\r\\nTarget: 100% \\r\\nEmail Uptime Percentage \\r\\nDefinition: The percentage of time that email services are operational post-migration. \\r\\nTarget: 99% \\r\\nMonitoring: Continuous monitoring using system logs; weekly reports to IT management. \\r\\nPurpose: To ensure minimal downtime and measure the availability of email services. \\r\\nUser Adoption Rate\u0022,\u0022relevanceScore\u0022:0.6941749458346139},{\u0022text\u0022:\u0022\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### KPIs\\r\\n \\r\\nDefinition: The percentage of users who successfully transitioned and are effectively utilizing the new email system. \\r\\nTarget: 95% \\r\\nMonitoring: Post-migration user feedback surveys; monthly updates on adoption rates. \\r\\nPurpose: To gauge how well users have adapted to the new system and identify any remaining training needs. \\r\\nIncident Resolution Time \\r\\nDefinition: The average time taken to resolve post-migration issues reported by users. \\r\\nTarget: 2 hours per incident \\r\\nMonitoring: Tracking resolved tickets in the IT helpdesk system; weekly performance reviews. \\r\\nPurpose: To assess the effectiveness of support processes and identify areas for improvement. \\r\\nCost Savings \\r\\nDefinition: Reduction in operational costs associated with email services (e.g., hardware, software licenses, labor). \\r\\nTarget: 15% reduction \\r\\nMonitoring: Quarterly financial audits; annual budget comparison. \\r\\nPurpose: To evaluate the financial benefits of migrating to Exchange Online. \\r\\nImplementation Steps: \\r\\nPre-Migration Baseline: Measure KPIs before migration to establish a baseline for comparison. \\r\\nPost-Migration Monitoring: Continuously track KPIs during and after migration to identify trends and improvements. \\r\\nRegular Reporting: Provide updates on KPI performance to stakeholders, highlighting achievements and areas needing attention. \\r\\nBy defining these KPIs, the organization can effectively measure the success of the migration to Exchange Online, ensuring it delivers the expected benefits in terms of functionality, user experience, cost efficiency, and overall business impact.\\r\\n\\r\\n### Implementation Plan\\r\\n\\r\\n#### Implementation Steps\\r\\n \\r\\nPhase 1: Planning \u0026 Preparation \\r\\nObjective: Lay the groundwork for a successful migration. \\r\\nTasks: \\r\\nFinalize project plan and timeline. \\r\\nIdentify key resources (IT team, external consultants). \\r\\nConduct a thorough assessment of current email system. \\r\\nDevelop a detailed migration strategy. \\r\\nPhase 2: Execution \\r\\nObjective: Perform the actual migration process. \\r\\nTasks: \\r\\nBackup current email data to prevent loss during migration. \\r\\nSet up Exchange Online environment. \\r\\nMigrate user accounts, emails, calendars, and contacts. \\r\\nTest migrated data for accuracy. \\r\\nPhase 3: Testing \u0026 Validation \\r\\nObjective: Ensure the new system works as expected. \\r\\nTasks: \\r\\nConduct functional testing (email sending/receiving, calendar sync). \\r\\nValidate data integrity post-migration. \\r\\nAddress any issues identified during testing. \\r\\nTrain end-users on Exchange Online features. \\r\\nPhase 4: Post-Migration Support \\r\\nObjective: Provide ongoing support and monitoring. \\r\\nTasks: \\r\\nMonitor system performance and user feedback. \\r\\nOffer troubleshooting assistance to users. \\r\\nOptimize settings based on user needs and feedback.\\r\\n\\r\\n#### Resource Allocation\\r\\n \\r\\nHuman Resources \\r\\nIT Team: Dedicated team for planning, execution, and support. \\r\\nExternal Consultants: If needed for specialized tasks (e.g., data migration tools). \\r\\nEnd-users: Minimal disruption to ensure smooth workflow during migration. \\r\\nTools \u0026 Technology \\r\\nMicrosoft Exchange Online Services. \\r\\nMigration Tools (e.g., Microsoft Exchange Migration Tool, third-party tools if necessary). \\r\\nBackup Solutions. \\r\\nBudget \\r\\nLicense Costs: Budget for Exchange Online subscriptions. \\r\\nHardware/Software Upgrades: If required for optimal performance. \\r\\nTraining and Support: Allocation for user training and ongoing support.\\r\\n\\r\\n#### Risk Management\\r\\n\\r\\n#### Potential Risks\\r\\n \\r\\nData Loss: Incomplete or incorrect data migration. \\r\\nService Disruption: Extended downtime during the migration process. \\r\\nUser Resistance: Lack of adoption due to unfamiliarity with new tools. \\r\\nTechnical Issues: Compatibility problems with existing systems.\\r\\n\\r\\n#### Mitigation Strategies\\r\\n \\r\\nData Loss: Perform thorough backups and validation tests post-migration. \\r\\nService Disruption: Plan for minimal downtime by scheduling migrations during off-peak hours. \\r\\nUser Resistance: Conduct comprehensive training sessions and provide support resources. \\r\\nTechnical Issues: Thoroughly test the environment before full-scale migration.\\r\\n\\r\\n#### Communication Plan\\r\\n \\r\\nStakeholder Communication \\r\\nRegular updates to project stakeholders via email or meetings. \\r\\nTransparent communication about delays or issues if they arise. \\r\\nUser Communication \\r\\nInform users about the migration process and timelines. \\r\\nProvide clear instructions on what to expect during and after the migration. \\r\\nOffer support channels for any user concerns or questions.\u0022,\u0022relevanceScore\u0022:0.6758572876636568},{\u0022text\u0022:\u0022\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### Implementation Plan\\r\\n\\r\\n#### Success Criteria\\r\\n \\r\\nUser Satisfaction: High satisfaction rate post-migration based on feedback. \\r\\nDowntime Minimization: Minimal disruption to daily operations. \\r\\nData Integrity: 100% accuracy of migrated data verified through testing. \\r\\nCost Efficiency: Achieve projected cost savings within the first \\\\[X\\\\] months post-migration. \\r\\nThis Implementation Plan serves as a roadmap for migrating our email system to Exchange Online. By following this structured approach, we aim to ensure a smooth transition, leveraging the benefits of Exchange Online while minimizing risks and disruptions. Regular monitoring and adjustments will be made throughout the project to ensure alignment with objectives and stakeholder expectations.\\r\\n\\r\\n## Execution \u0026 Migration\\r\\n\\r\\n### Preparation\\r\\n\\r\\n#### Assess Current Email Environment:\\r\\n \\r\\nCompile a detailed list of all users, including their current email configurations (email addresses, mailbox sizes, rules, scripts, forwarding addresses). \\r\\nDocument any custom settings or integrations in place. \\r\\nCheck Compatibility: \\r\\nEnsure that all hardware and software are compatible with Exchange Online. \\r\\nVerify that the version of Outlook installed on users\u0027 computers is supported by Exchange Online.\\r\\n\\r\\n#### Capacity Planning:\\r\\n \\r\\nEvaluate network infrastructure to ensure it can handle the data transfer during migration. \\r\\nConsider upgrading equipment or adjusting internet bandwidth if necessary.\\r\\n\\r\\n#### Data Preparation and Backup:\\r\\n \\r\\nPerform a full backup of all user data before initiating the migration process. \\r\\nImplement data validation procedures to ensure data integrity post-migration.\\r\\n\\r\\n#### Communication Plan:\\r\\n \\r\\nInform users about the migration process, timelines, and potential disruptions. \\r\\nProvide clear instructions and support channels to address any concerns or questions.\\r\\n\\r\\n#### Security Measures:\\r\\n \\r\\nUse encryption or other security protocols to protect data during transfer. \\r\\nEnsure that access controls are in place to maintain data security throughout the process.\\r\\n\\r\\n#### Testing:\\r\\n \\r\\nConduct a pilot migration with a small group of users to identify and resolve potential issues early. \\r\\nTest all aspects of the migration, including data accuracy and system performance.\\r\\n\\r\\n#### Documentation:\\r\\n \\r\\nMaintain comprehensive documentation of all preparation steps, configurations, and processes. \\r\\nKeep records of any issues encountered and how they were resolved for future reference. \\r\\nPost-Migration Support Plan: \\r\\nDevelop a support plan to address user inquiries or technical issues post-migration. \\r\\nEstablish a timeline for ongoing monitoring and adjustments as needed. \\r\\nBy following these best practices, you can ensure a smooth and secure migration process, minimizing disruptions and maximizing the success of your transition to Exchange Online.\\r\\n\\r\\n### Migration Process\\r\\n \\r\\nMigration Planning: \\r\\nSchedule the migration during a low-impact period, such as over a weekend or during off-hours, to minimize disruption to users. \\r\\nUser Account Management: \\r\\nCreate new user accounts in Exchange Online before starting the migration process to ensure smooth access post-migration. \\r\\nPlan for the appropriate handling of old accounts, such as disabling them or redirecting emails to new addresses. \\r\\nData Synchronization: \\r\\nTest the synchronization process in a sandbox environment to identify and resolve any issues before full-scale migration. \\r\\nEnsure all emails, contacts, and calendar entries are transferred without duplication or loss. \\r\\nCommunication Strategy: \\r\\nInform users about the migration timeline, expected disruptions, and what they should expect post-migration. \\r\\nProvide clear instructions for accessing emails after the migration, possibly through a detailed guide or training session. \\r\\nThird-Party Applications: \\r\\nUpdate or reconfigure any third-party applications (e.g., CRM systems) that integrate with the email system to work seamlessly with Exchange Online. \\r\\nRollback Plan: \\r\\nDevelop a rollback plan to revert changes if issues arise during the migration, ensuring minimal downtime and disruption. \\r\\nTools and Scripts: \\r\\nUtilize Microsoft-recommended tools or scripts for efficient migration processes and adhere to their guidelines. \\r\\nData Retention Policies: \\r\\nImplement data retention policies before migration to ensure compliance and manage email records effectively post-migration. \\r\\nPost-Migration Support: \\r\\nMonitor the system post-migration for any issues and provide ongoing support to users as needed. \\r\\nBy adhering to these best practices, you can ensure a smooth, efficient, and secure migration to Exchange Online, with minimal disruption to your organization\u0027s operations.\u0022,\u0022relevanceScore\u0022:0.671316751386879},{\u0022text\u0022:\u0022\\r\\n## Execution \u0026 Migration\\r\\n\\r\\n### Communication\\r\\n \\r\\nIdentify Key Stakeholders: \\r\\nDetermine all individuals and groups affected by the migration, including the IT team, department heads, employees, external vendors, and partners. \\r\\nCategorize Audiences: \\r\\nSegment stakeholders based on their roles and needs: \\r\\nIT Team: Requires detailed technical updates. \\r\\nEmployees: Needs high-level information about the migration process and its impact on daily work. \\r\\nDepartment Heads: Interested in potential downtime, its effects on team productivity, and mitigation strategies. \\r\\nDevelop a Communication Plan: \\r\\nOutline the purpose, audience, content, timing, and sender for each communication. \\r\\nEnsure that updates are tailored to the specific needs of each group. \\r\\nChoose Appropriate Channels: \\r\\nSelect communication channels based on the audience and urgency: \\r\\nEmail: Suitable for detailed updates and general announcements. \\r\\nIntranet: Ideal for posting high-level information and providing access to resources like FAQs. \\r\\nMeetings: Useful for face-to-face discussions, especially with technical teams. \\r\\nMaintain Clarity: \\r\\nUse clear and simple language in communications to ensure understanding by all stakeholders. \\r\\nAvoid overly technical jargon unless necessary; provide explanations when complex terms are used. \\r\\nAnticipate and Address Concerns: \\r\\nPrepare answers to common questions and concerns that may arise during the migration process. \\r\\nBe proactive in addressing potential issues related to access, downtime, and productivity impacts. \\r\\nFacilitate Feedback: \\r\\nProvide channels for stakeholders to share feedback or ask questions, such as dedicated email addresses or feedback forms. \\r\\nAddress feedback promptly to ensure all concerns are heard and considered. \\r\\nContingency Planning: \\r\\nDevelop a communication strategy for unexpected delays or issues during the migration. \\r\\nEnsure quick dissemination of updates in case of any changes or setbacks. \\r\\nDocument Communication: \\r\\nKeep records of all communications, including emails, meeting minutes, and intranet posts. \\r\\nUse this documentation as a reference for future projects or audits. \\r\\nCelebrate Success: \\r\\nAcknowledge the successful completion of the migration through recognition channels, such as company-wide announcements or informal celebrations. \\r\\nHighlight the role of effective communication in achieving project success. \\r\\nBy following these guidelines, the migration process can be managed with clear, consistent, and timely communication, ensuring that all stakeholders are informed, supported, and involved appropriately.\\r\\n\\r\\n### Exception Handling\\r\\n \\r\\nCategorize Exceptions: \\r\\nData Transfer Exceptions: Errors occurring during mailbox data transfer. \\r\\nConfiguration Exceptions: Issues arising from incorrect Exchange Server settings. \\r\\nServer Exceptions: Problems related to server availability or performance. \\r\\nUser Access Exceptions: Errors pertaining to user authentication or access issues. \\r\\nImplement Robust Logging: \\r\\nMaintain detailed logs of all exceptions, including error messages and timestamps. \\r\\nUse log files to diagnose issues and improve future migration processes. \\r\\nDefine Recovery Procedures: \\r\\nDevelop predefined steps for addressing common exception types. \\r\\nEnsure recovery procedures are documented and communicated within the IT team. \\r\\nAutomate Where Possible: \\r\\nAutomate retry mechanisms for failed transfers after resolving network issues. \\r\\nImplement automated alerts to notify the IT team of critical errors. \\r\\nMonitor Continuously: \\r\\nUse monitoring tools to detect errors early in the migration process. \\r\\nEnsure real-time monitoring to respond promptly to exceptions. \\r\\nThoroughly Test Exception Handling: \\r\\nConduct extensive testing under various scenarios to validate error detection and recovery mechanisms. \\r\\nTest both manual and automated exception handling procedures. \\r\\nEnsure Clear Communication: \\r\\nCommunicate exceptions and their implications clearly within the IT team for quick decision-making. \\r\\nNotify relevant stakeholders promptly when errors occur, providing necessary updates on resolutions. \\r\\nMinimize Downtime: \\r\\nPlan for minimal downtime by having recovery steps ready to reduce the impact of exceptions. \\r\\nPrioritize issues that can cause significant downtime and address them first. \\r\\nMaintain Detailed Documentation: \\r\\nDocument all exceptions, their causes, and resolutions for future reference. \\r\\nKeep records of exception handling processes and outcomes for continuous improvement. \\r\\nBy integrating these guidelines into your Exchange migration project plan, you can enhance the robustness and reliability of the process, effectively managing exceptions and minimizing disruptions.\u0022,\u0022relevanceScore\u0022:0.6729471268837998},{\u0022text\u0022:\u0022\\r\\n## Post-Migration Stabilization \u0026 Validation\\r\\n\\r\\n### Validation\\r\\n \\r\\nStabilization Process: \\r\\nMonitor System Health: Begin by logging into the Exchange Admin Center (EAC) to check server status and ensure all services are running without errors or warnings. \\r\\nCheck Email Flow: Verify that email messages are being sent and received correctly by monitoring queues and confirming successful delivery rates. \\r\\nUser Access Verification: Ensure that users can access their emails without issues, checking for any login problems or mailbox accessibility concerns. \\r\\nTune Server Settings: Optimize server performance post-migration by adjusting configurations as needed to enhance efficiency and stability. \\r\\nValidation Steps: \\r\\nUser Mailbox Integrity: Confirm that all user mailboxes have been correctly transferred during migration, verifying data integrity and completeness. \\r\\nPermissions and Policies: Check that permissions, group memberships, and policies are accurately preserved post-migration to maintain security and functionality. \\r\\nEmail Retention Policies: Ensure that email archiving and retention policies are operational and applied consistently across all user accounts. \\r\\nSystematic Approach: \\r\\nUse of Checklists: Implement a detailed checklist covering critical areas such as server status, user access, email flow, mailbox integrity, and policy compliance. \\r\\nTools and Methods: Leverage built-in Exchange cmdlets for verification, run scripts to check mailbox integrity, and utilize monitoring software to track system performance. \\r\\nCommunication and User Support: \\r\\nUser Awareness: Inform end-users about temporary issues post-migration and provide clear instructions on expected outcomes and troubleshooting steps. \\r\\nSupport Channels: Establish channels for users to report any encountered problems, ensuring prompt resolution of issues. \\r\\nDocumentation: \\r\\nMigration Records: Maintain detailed records of migration activities, including deviations from standard procedures and observed outcomes during stabilization and validation. \\r\\nFuture Reference: Keep documentation updated for future reference or troubleshooting needs. \\r\\nChallenges and Solutions: \\r\\nPermissions Issues: Address any incorrect mailbox permissions by reviewing and adjusting user access as needed. \\r\\nOrphaned Mailboxes: Clean up orphaned mailboxes to prevent unused accounts from causing potential security risks. \\r\\nExternal Service Integration: Ensure seamless integration with external services by testing email flows and resolving any connectivity issues. \\r\\nBest Practices: \\r\\nLow-Traffic Periods: Conduct stabilization and validation during periods of low email traffic to minimize disruption. \\r\\nSufficient Time Allocation: Allow adequate time for thorough checks to avoid missing critical issues. \\r\\nIterative Process: \\r\\nMultiple Rounds: Be prepared for multiple rounds of checking and adjusting, as new issues may arise post-migration. \\r\\nPatience and Thoroughness: Emphasize patience and meticulousness in addressing each aspect of the process. \\r\\nBy systematically addressing each component of stabilization and validation, you can ensure a stable and efficient Exchange environment that meets all business requirements and provides a seamless experience for users. This thorough approach minimizes operational disruptions and sets the stage for smooth email communication within your organization.\\r\\n\\r\\n### Training\\r\\n\\r\\n## Sunsetting the Previous System\\r\\n\\r\\n### Decommissioning Plan\\r\\n\\r\\n### Communication\\r\\n\\r\\n## Appendices\\r\\n\\r\\n### Technical Details\\r\\n\\r\\n### Glossary\\r\\n\\r\\n### Compliance Checklist\\r\\n \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E\u0022,\u0022relevanceScore\u0022:0.667597439676066}],\u0022resourceType\u0022:\u0022listItem\u0022,\u0022resourceMetadata\u0022:{}},{\u0022webUrl\u0022:\u0022https://test.sharepoint.com/sites/TestForBuilder1/SitePages/Timeoff.aspx\u0022,\u0022extracts\u0022:[{\u0022text\u0022:\u0022 \\r\\nHoliday Policy \\r\\nIt is company policy that all employees are entitled to a minimum of 4 weeks paid annual leave, in addition to public holidays and bank holidays. \\r\\nThis time should be used for rest and relaxation, as well as pursuing personal interests or hobbies. The 4 weeks leave will be divided into two periods: \\r\\n\u2022 One period of 2 weeks, taken at the same time every year (e.g. summer) \\r\\n\u2022 One period of 2 weeks, to be taken at a mutually agreed upon time by you and your manager \\r\\nSick Leave \\r\\nAll employees are entitled to a minimum of 2 weeks paid sick leave per year. This should be used for periods of illness or injury that prevent you from working. \\r\\nIn the event of an absence due to sickness, please report it in the Bamboo portal as soon as possible: https://test.bamboo.hr.com \\r\\nPlease note that in both cases (annual leave and sick leave), it is your responsibility to ensure that your absence is reported in a timely manner, so as not to impact work or projects. \\r\\nThank you for following company policies regarding holidays\\\\!\\r\\n\\r\\n#### Image\\r\\n \\r\\n[https://cdn.hubblecontent.osi.office.net/m365content/publish/8ac7fcf8-6698-4266-82da-2f801e4767ff/153238020.jpg](https://cdn.hubblecontent.osi.office.net/m365content/publish/8ac7fcf8-6698-4266-82da-2f801e4767ff/153238020.jpg)\u0022,\u0022relevanceScore\u0022:0.6360786887438996}],\u0022resourceType\u0022:\u0022listItem\u0022,\u0022resourceMetadata\u0022:{}},{\u0022webUrl\u0022:\u0022https://test.sharepoint.com/sites/Engineering/Shared Documents/Cloud Migration to Azure.docx\u0022,\u0022extracts\u0022:[{\u0022text\u0022:\u0022\\r\\n# Cloud Migration to Azure \\r\\n[Discovery \u0026 assessment\\t1]() \\r\\n[Catalogue IT Portfolio\\t1]() \\r\\n[Application Assessment\\t1]() \\r\\n[Data Assessment\\t1]() \\r\\n[Security \u0026 Compliance Assessment\\t1]() \\r\\n[Evaluate the Network\\t1]() \\r\\n[Skill Gaps\\t1]() \\r\\n[Business Case\\t2]() \\r\\n[Prioritize Migration\\t2]() \\r\\n[Planning \u0026 Design\\t2]() \\r\\n[Define Migration Strategy\\t2]() \\r\\n[5R assessment\\t2]() \\r\\n[Rehost (Lift and Shift)\\t2]() \\r\\n[Refactor\\t2]() \\r\\n[Revise (Re-architect)\\t3]() \\r\\n[Rebuild\\t3]() \\r\\n[Replace (Retire)\\t3]() \\r\\n[Design Target Architecture\\t3]() \\r\\n[Define naming convention\\t3]() \\r\\n[Map Dependencies\\t3]() \\r\\n[Plan Network Setup\\t4]() \\r\\n[Define Security and Compliance Measures\\t4]() \\r\\n[Plan Data Migration\\t4]() \\r\\n[Downtime\\t4]() \\r\\n[Data Loss or Corruption\\t4]() \\r\\n[Compatibility\\t4]() \\r\\n[Security\\t4]() \\r\\n[Scaling\\t4]() \\r\\n[Cost\\t5]() \\r\\n[Application Migration Plan\\t5]() \\r\\n[Application Dependencies\\t5]() \\r\\n[Code Compatibility\\t5]() \\r\\n[Performance Issues\\t5]() \\r\\n[Resource Sizing\\t6]() \\r\\n[Define the Rollback Plan\\t6]() \\r\\n[Training Plan\\t6]() \\r\\n[Cost Estimation\\t6]() \\r\\n[Execution \u0026 Migration\\t6]() \\r\\n[Prepare Azure Environment\\t6]() \\r\\n[Create Resource Groups\\t7]() \\r\\n[Set up Virtual Networks\\t7]() \\r\\n[Configure Storage Accounts\\t7]() \\r\\n[Implement Identity and Access Management\\t7]() \\r\\n[Set Up Security Measures\\t7]() \\r\\n[Define Monitoring and Alerts\\t7]() \\r\\n[Disaster Recovery Setup\\t7]() \\r\\n[Environment Provisioning\\t7]() \\r\\n[Initialize Databases\\t8]() \\r\\n[Enable Networking Services\\t8]() \\r\\n[Migrate in Phases\\t8]() \\r\\n[Testing in the Cloud\\t8]() \\r\\n[Monitoring and Troubleshooting\\t8]() \\r\\n[Transition and Cut-Over\\t8]() \\r\\n[Validation\\t8]() \\r\\n[Post-migration Stabilization \u0026 Validation\\t8]() \\r\\n[Decommissioning\\t9]()\\r\\n\\r\\n## Discovery \u0026 assessment\\r\\n \\r\\nThis is the initial stage where we identify the business and technical aspects of the existing on-premises workloads. This includes assessing application portfolios using tools such as Azure Migrate, understanding the current-state architecture, dependencies, data, cost evaluations, and migration feasibility. A detailed inventory is made, including resources, performance metrics, and configurations to estimate the cloud resources needed.\\r\\n\\r\\n### Catalogue IT Portfolio\\r\\n \\r\\nIdentify and catalogue all the applications, data, hardware, and infrastructure that your organization currently utilizes. Utilize tools like Azure Migrate to simplify this task. \\r\\nApplication Assessment \\r\\nAssess all the applications that you have catalogued based on factors like compatibility with Azure, licensing, and interdependencies with other applications. This step is crucial in understanding the level of effort required in migrating them to Azure.\\r\\n\\r\\n### Data Assessment\\r\\n \\r\\nUnderstand what type of data your organization handles, where it resides, and how it is accessed. This information is required to adhere to compliances and to decide on the type of storage you will need in Azure.\\r\\n\\r\\n### Security \u0026 Compliance Assessment\\r\\n \\r\\nReview the security policies and procedures currently in place. Identify the security requirements of your applications and data. This will guide the security configuration and compliance requirements in Azure.\\r\\n\\r\\n### Evaluate the Network\\r\\n \\r\\nUnderstanding your existing network configurations, traffic, and performance helps in designing your Azure network for optimal performance.\\r\\n\\r\\n### Skill Gaps\\r\\n \\r\\nIdentify the technical and managerial skills required for the migration and operation in Azure. If there are gaps, plan on how to fill them, perhaps through training or hiring new resources.\\r\\n\\r\\n### Business Case\\r\\n \\r\\nBased on the above assessments, determine the cost of migrating to Azure. Include the cost of Azure subscriptions, migration process, and possible downtime. Compare this with the benefits and ROI of moving to the cloud to build a compelling business case.\\r\\n\\r\\n### Prioritize Migration\\r\\n \\r\\nNot all applications and data will be migrated at once. Based on interdependencies, business necessity, and migration difficulty, create a priority list for migration.\\r\\n\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### Define Migration Strategy\\r\\n \\r\\nDefine a migration strategy for each application and workload based on the assessments from the Discovery phase. The common migration strategies (5 Rs) include Rehost (lift-and-shift), Refactor (Repackage), Rearchitect, Rebuild, and Replace (Retire).\\r\\n\\r\\n#### 5R assessment\\r\\n \\r\\nChoosing the right migration strategy for an application or workload can depend on a multitude of factors like cost, legacy system limitations, business needs, and time constraints. Here\u0027s an overview of the five R\u0027s - Rehost, Refactor, Revise, Rebuild, and Replace - with guidance on choosing between them:\\r\\n\\r\\n##### Rehost (Lift and Shift)\\r\\n \\r\\n In this model, applications are moved to the cloud without any changes. This approach is best when an application is stable and works as required, but you still want to take advantage of the immediate cost benefits of the cloud. It\u0027s also useful when you need to move rapidly, for example, to get out of a datacenter lease commitment. \\r\\nRefactor \\r\\nThis approach, also known as Re-platforming, involves some degree of modification to the application, often to leverage cloud capabilities more effectively. This strategy may be chosen if an application could benefit from the cloud\u0027s elasticity, scalability, or other features, but there\u0027s a constraint against entirely rebuilding it. For instance, a company might refactor an application to use cloud-native databases or messaging queues.\u0022,\u0022relevanceScore\u0022:0.6621141198344468},{\u0022text\u0022:\u0022\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### Define Migration Strategy\\r\\n\\r\\n#### 5R assessment\\r\\n\\r\\n##### Rehost (Lift and Shift)\\r\\n \\r\\nRevise (Re-architect) \\r\\nThis could involve revising application code before rehosting or refactoring it to run on a cloud platform. This is usually opted for when there\u0027s a business need to add features, improve performance, or boost the utilization of cloud capabilities that aren\u0027t achievable with the current environment.\\r\\n\\r\\n##### Rebuild\\r\\n \\r\\nUnder this strategy, an application is completely redesigned on a cloud-native platform, to take advantage of cloud\u0027s capabilities to the fullest. While this often provides the most functionality and flexibility, it is also the most time-consuming.\\r\\n\\r\\n##### Replace (Retire)\\r\\n \\r\\nSometimes it might make sense to entirely replace an application with Software as a Service (SaaS) or other cloud services. This choice is often taken when there\u0027s a cloud service that meets the business needs of the application more effectively or economically than the existing application does. \\r\\nIdentifying the right strategy should be a part of the broader assessment and planning phase in your migration process. It\u0027s about striking a balance between the engineering effort, business goals, and potential benefits. Consultation with key stakeholders, assessment of application portfolios and dependencies, and understanding of technical requirements are crucial in identifying the best approach.\\r\\n\\r\\n### Design Target Architecture\\r\\n \\r\\nDesign the target Azure architecture considering aspects like scalability, security, compliance, and cost-effectiveness. This should be in line with your company\u0027s business objectives and should maximize the benefits of Azure services.\\r\\n\\r\\n### Define naming convention\\r\\n \\r\\nIt\u2019s crucial to implement a naming convention for new resources. Define naming convention for all type of resources which will help to quickly identify any resources\\r\\n\\r\\n### Map Dependencies\\r\\n \\r\\nUnderstand and map the dependencies between applications, workloads, databases, and services. Knowing this can help prevent potential issues during the migration.\\r\\n\\r\\n### Plan Network Setup\\r\\n \\r\\nDecide on the network architecture in Azure. You may want to use Azure Virtual Networks, VPNs, and Gateways based on your requirements. Map out your IP address space, understand how to replicate your on-premises network settings, and consider any connectivity or latency requirements beforehand.\\r\\n\\r\\n### Define Security and Compliance Measures\\r\\n \\r\\nPlan your security measures based on Azure best practices and your specific needs. This includes firewall configurations, identity and access management, data encryption methods, logging and monitoring setups, and more.\\r\\n\\r\\n### Plan Data Migration\\r\\n \\r\\nDetermine the sequence, method, and tools you\u0027ll use to move your data. Consider using Azure\u0027s Database Migration Services (DMS) for transferring database contents. Consider below points\\r\\n\\r\\n#### Downtime\\r\\n \\r\\nData migration can be a time-intensive process, and it may require system downtime, which can disrupt business operations. This impact can be lessened by proper scheduling or using incremental migration strategies.\\r\\n\\r\\n#### Data Loss or Corruption\\r\\n \\r\\nData can get lost or corrupted during transfer, so it\u0027s important to maintain data backups and validate the data after migration. Consider differential migration for the most used systems.\\r\\n\\r\\n#### Compatibility\\r\\n \\r\\nThere could be compatibility issues between the existing data formats and the formats used in Azure, which can complicate the migration process.\\r\\n\\r\\n#### Security\\r\\n \\r\\nSafe transit of data is critical to prevent breaches. Encryption during transfer and securely managing encryption keys is crucial. Compliance with privacy regulations is also a major concern when handling sensitive data. \\r\\nScaling \\r\\nMassive datasets might face challenges related to time and resources required for migrating and storing data. \\r\\nCost \\r\\nThe cost of data transfer to the cloud and continued storage can be significant, and there may be additional costs if a large quantity of data needs to be accessed or moved frequently. \\r\\nPlanning, choosing the appropriate tools, conducting validation checks, and closely monitoring the process can significantly ease data migration pain points.\\r\\n\\r\\n### Application Migration Plan\\r\\n \\r\\nDevelop a detailed plan for each application\u0027s migration. Include any required changes to the code, architecture, and configurations. Also, consider how you\u0027ll minimize downtime during the migration. Consider the following points \\r\\nEncryption and Security Configuration \\r\\nWhen migrating applications to Azure, there can be potential issues with securing application secrets, such as with configuration files which might need encryption. If using .NET applications, the machine Key used for encryption within an on-premises environment can cause issues in a distributed environment like Azure, leading to inability to decrypt data or verify encrypted details.\\r\\n\\r\\n#### Application Dependencies\\r\\n \\r\\nThere might be difficulties identifying all dependencies that an application has. Some dependencies might only become apparent after the migration and cause the app to fail.\u0022,\u0022relevanceScore\u0022:0.6472480152303393},{\u0022text\u0022:\u0022\\r\\n## Planning \u0026 Design\\r\\n\\r\\n### Application Migration Plan\\r\\n\\r\\n#### Code Compatibility\\r\\n \\r\\nCode that relies heavily on the on-premises architecture might not work correctly in a cloud environment. This requires refactoring or even a complete rewrite of certain parts of the application.\\r\\n\\r\\n#### Performance Issues\\r\\n \\r\\nEven if an application works well on-premises, the increased latency or changes of a cloud environment might negatively impact the performance.\\r\\n\\r\\n#### Switch to EntraId\\r\\n \\r\\nUsually 3rd party applications do not support natively multiple authentication providers. Although, EntraId is similar to Active Directory in many points, usually migration requires additional coding to support EntraId authentication. It\u2019s worth to investigate any kind of groups membership check which in EntraId world must be done with MS Graph API (no membership is present in user claims) \\r\\nThe key to overcoming these pain points is a robust planning and thorough testing phase. By properly evaluating applications pre- and post-migration, identifying dependencies, and implementing appropriate security measures, many of these issues can be mitigated.\\r\\n\\r\\n### Resource Sizing\\r\\n \\r\\nBased on the assessment phase, determine the types and sizes of resources you\u0027ll need in Azure, from storage accounts to virtual machines and beyond.\\r\\n\\r\\n### Define the Rollback Plan\\r\\n \\r\\nIn case of any issues during the migration, it\u0027s essential to have a well-thought backup and rollback mechanism defined. \\r\\nTraining Plan \\r\\nIdentify training needs for your team to ensure they have the skillset necessary to manage and run the new cloud setup. \\r\\nCost Estimation \\r\\nProvide a thorough cost breakdown of the migration and the expected ongoing costs in Azure. Use [Pricing Calculator \\\\| Microsoft Azure](https://azure.microsoft.com/en-us/pricing/calculator/?ef_id=_k_Cj0KCQjwm7q-BhDRARIsACD6-fX7nZ5qwE2sBOZ_qhHI0lZ8CgXGxgP6JX18Dfo_KQd3xPnggsfXK3YaAnJUEALw_wcB_k_\u0026OCID=AIDcmm4rphvbww_SEM__k_Cj0KCQjwm7q-BhDRARIsACD6-fX7nZ5qwE2sBOZ_qhHI0lZ8CgXGxgP6JX18Dfo_KQd3xPnggsfXK3YaAnJUEALw_wcB_k_\u0026gad_source=1\u0026gclid=Cj0KCQjwm7q-BhDRARIsACD6-fX7nZ5qwE2sBOZ_qhHI0lZ8CgXGxgP6JX18Dfo_KQd3xPnggsfXK3YaAnJUEALw_wcB)\\r\\n\\r\\n## Execution \u0026 Migration\\r\\n \\r\\nThe Execution and Migration phase is the actual process of moving the workloads to Azure. This stage is usually separated into smaller stages or waves, rather than migrating everything at once. Here are the steps involved\\r\\n\\r\\n### Prepare Azure Environment\\r\\n \\r\\nSet up and configure the necessary resources in Azure in accordance with your planning and design phase. This includes setting up virtual networks, security measures, storage accounts, and more.\\r\\n\\r\\n#### Create Resource Groups\\r\\n \\r\\nResource Groups in Azure act as a logical container for resources that are deployed within an Azure subscription. They should be used to organize your resources by workload, project, or department.\\r\\n\\r\\n#### Set up Virtual Networks\\r\\n \\r\\nTo mimic the on-premises environment in Azure and maintain its connectivity settings, you\u0027ll need to set up Virtual Networks (VNet). It is crucial to carefully plan and align CIDR blocks, subnets, and network security groups (NSGs) to your requirements.\\r\\n\\r\\n#### Configure Storage Accounts\\r\\n \\r\\nBased on the data assessment, set up Azure Storage Accounts. Specify the performance tier, account kind, replication options, and access tier based on your data needs.\\r\\n\\r\\n#### Implement Identity and Access Management\\r\\n \\r\\nSet up Azure Active Directory which is Microsoft\u0027s cloud-based identity and access management service, and role-based access control (RBAC) for managing access to your resources.\\r\\n\\r\\n#### Set Up Security Measures\\r\\n \\r\\nImplement security protocols based on your needs. This might include setting up firewalls, encryption measures, Azure Private Link for private access to services, and Azure Security Center to monitor security protocols.\\r\\n\\r\\n#### Define Monitoring and Alerts\\r\\n \\r\\nUse Azure Monitor and Azure Log Analytics to monitor resources and set up alerts for specified incidents.\\r\\n\\r\\n#### Disaster Recovery Setup\\r\\n \\r\\nDepending upon your applications\u0027 criticality, you may need to configure Azure Site Recovery and Azure Backup for disaster recovery (DR) and business continuity.\\r\\n\\r\\n#### Environment Provisioning\\r\\n \\r\\nProvision development, staging, production, and possibly disaster recovery environments based on your application lifecycle needs.\\r\\n\\r\\n#### Initialize Databases\\r\\n \\r\\nCreate and configure any databases you plan to use, taking into account the correct size, performance, and region required for your applications.\\r\\n\\r\\n#### Enable Networking Services\\r\\n \\r\\nEstablish necessary network services such as Azure Load Balancer for distributing network traffic, Azure DNS for hosting your DNS domains, and Azure Traffic Manager to manage global DNS routing.\\r\\n\\r\\n### Migrate in Phases\\r\\n \\r\\nBegin migrating applications, workloads, and data in accordance with the priorities and schedule discussed in the planning phase. This is typically done in phases to minimize impact, starting with less critical applications first.\\r\\n\\r\\n#### Prioritization\\r\\n \\r\\nBased on your initial assessment and planning, prioritize the order in which applications, workloads, and data will be migrated. Less complex or mission-critical systems are often moved first to test the migration process and to learn valuable lessons that can be applied to subsequent phases.\u0022,\u0022relevanceScore\u0022:0.6617089859426152},{\u0022text\u0022:\u0022\\r\\n## Execution \u0026 Migration\\r\\n\\r\\n### Migrate in Phases\\r\\n\\r\\n#### Pilot Migration\\r\\n \\r\\nStart with a small-scale pilot migration for a specific application or workload. This allows you to validate whether your migration process works as expected, without causing major disruptions.\\r\\n\\r\\n#### Validate and Refine\\r\\n \\r\\nAfter your pilot migration, validate that everything works correctly in the cloud. Look for any unexpected issues that came up during the migration and refine your migration process accordingly.\\r\\n\\r\\n#### Plan for Each Phase\\r\\n \\r\\nPlan the migration for each phase, taking into account required resources, potential downtime, and contingencies. Validate applications and workloads successfully after each phase.\\r\\n\\r\\n#### Execute Phases\\r\\n \\r\\nCarry out each migration phase according to your planning. Remember to communicate with all stakeholders about the timelines and potential impact of each phase.\\r\\n\\r\\n### Testing in the Cloud\\r\\n \\r\\nAfter each application/workload is migrated, it should be thoroughly tested to ensure it works accurately in the new environment. Check all functions and integration points, and compare the results with your baseline from pre-migration testing.\\r\\n\\r\\n### Monitoring and Troubleshooting\\r\\n \\r\\nMonitor the migration process for any issues or errors. When encountered, resolve them as quickly as possible to minimize impact. Azure provides a range of tools to monitor and manage your resources.\\r\\n\\r\\n### Transition and Cut-Over\\r\\n \\r\\nOnce an application is confirmed as functioning correctly in Azure, any remaining data can be migrated and the system can fully cut over to the cloud environment. Be sure to communicate this change to all users as necessary.\\r\\n\\r\\n### Validation\\r\\n \\r\\nPerform an end-to-end data validation to ensure all data was migrated accurately and completely.\\r\\n\\r\\n## Post-migration Stabilization \u0026 Validation\\r\\n\\r\\n## Decommissioning\\r\\n \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E \\r\\n\u003Cspan style=\\\u0022color:#000000\\\u0022\u003ECompany information\u003C/span\u003E\u0022,\u0022relevanceScore\u0022:0.6987003603097025}],\u0022resourceType\u0022:\u0022listItem\u0022,\u0022resourceMetadata\u0022:{}}]}"} \ No newline at end of file diff --git a/src/sdk/PnP.Core.Test/Copilot/RetrievalTests.cs b/src/sdk/PnP.Core.Test/Copilot/RetrievalTests.cs new file mode 100644 index 0000000000..973260b592 --- /dev/null +++ b/src/sdk/PnP.Core.Test/Copilot/RetrievalTests.cs @@ -0,0 +1,37 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using PnP.Core.Model.Copilot.Public.DTO; +using PnP.Core.Test.Utilities; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace PnP.Core.Test.Copilot +{ + [TestClass] + public class RetrievalTests + { + [ClassInitialize] + public static void TestFixtureSetup(TestContext context) + { + // Configure mocking default for all tests in this class, unless override by a specific test + //TestCommon.Instance.Mocking = false; + } + [TestMethod] + public async Task RetriveTest() + { + //TestCommon.Instance.Mocking = false; + TestCommon.Instance.UseApplicationPermissions = false; + + using (var context = await TestCommon.Instance.GetContextAsync(TestCommon.TestSite)) + { + var response = await context.Copilot.Retrive(new RetrievalRequest + { + DataSource = "sharePoint", + QueryString = "Find me documents about test project", + }); + Assert.AreEqual(response.RetrievalHits.Count, 4); + } + } + } +} diff --git a/src/sdk/PnP.Core.Test/PnP.Core.Test.csproj b/src/sdk/PnP.Core.Test/PnP.Core.Test.csproj index a874ec2a3d..aaf1d3d95d 100644 --- a/src/sdk/PnP.Core.Test/PnP.Core.Test.csproj +++ b/src/sdk/PnP.Core.Test/PnP.Core.Test.csproj @@ -36,6 +36,7 @@ + diff --git a/src/sdk/PnP.Core/Model/Copilot/Internal/Copilot.cs b/src/sdk/PnP.Core/Model/Copilot/Internal/Copilot.cs new file mode 100644 index 0000000000..570ad184cb --- /dev/null +++ b/src/sdk/PnP.Core/Model/Copilot/Internal/Copilot.cs @@ -0,0 +1,43 @@ +using PnP.Core.Model.Copilot.Public; +using PnP.Core.Model.Copilot.Public.DTO; +using PnP.Core.Model.Me; +using PnP.Core.Model.Security; +using PnP.Core.Services; +using System.Net.Http; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; + +namespace PnP.Core.Model.Copilot.Internal +{ + /// + /// Provides methods for interacting with Microsoft Graph services to perform retrieval operations using a specified + /// Microsoft Graph client. + /// + internal sealed class Copilot : BaseDataModel, ICopilot + { + /// + /// Sends a retrieval request to MS Graph API and returns the deserialized response. + /// + /// The retrieval request containing the parameters to be sent to the service. Cannot be null. + /// A task that represents the asynchronous operation. The task result contains the deserialized retrieval + /// response from the MS Graph API. + /// Thrown if the HTTP request fails or the response indicates an unsuccessful status code. + public async Task Retrive(RetrievalRequest request) + { + var apiCall = new ApiCall($"copilot/retrieval", ApiType.Graph, JsonSerializer.Serialize(request, PnPConstants.JsonSerializer_IgnoreNullValues)); + apiCall.ExecuteRequestApiCall = true; + + var response = await RawRequestAsync(apiCall, HttpMethod.Post).ConfigureAwait(false); + + if (response.StatusCode == System.Net.HttpStatusCode.OK) + { + return JsonSerializer.Deserialize(response.Json); + } + else + { + throw new HttpRequestException($"Request failed with status code {response.StatusCode}"); + } + } + } +} diff --git a/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalRequest.cs b/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalRequest.cs new file mode 100644 index 0000000000..35ce5baae7 --- /dev/null +++ b/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalRequest.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.Json.Serialization; + +namespace PnP.Core.Model.Copilot.Public.DTO +{ + /// + /// Represents a request to retrieve relevant text extracts from specified data sources using a natural language + /// query and optional filtering or configuration parameters. + /// + /// Use this class to specify the parameters for retrieving content from supported sources such + /// as SharePoint, OneDrive for Business, or Copilot connectors. Configure the query, data source, and optional + /// metadata or filtering to tailor the retrieval to your application's needs. Ensure that required properties are + /// set before submitting the request. The class supports limiting the number of results and customizing the + /// metadata returned for each item. + public class RetrievalRequest + { + /// + /// Natural language query string used to retrieve relevant text extracts. This parameter has a limit of 1,500 characters. Your queryString should be a single sentence, and you should avoid spelling errors in context-rich keywords. Required + /// + [JsonPropertyName("queryString")] + public string QueryString { get; set; } = "*"; + /// + /// Indicates whether extracts should be retrieved from SharePoint, OneDrive, or Copilot connectors. Acceptable values are sharePoint, oneDriveBusiness, and externalItem. Required. + /// + [JsonPropertyName("dataSource")] + public string DataSource { get; set; } = "sharepoint"; + /// + /// Contains additional configuration information for applicable data sources. dataSourceConfiguration includes an object called externalItem, where you can configure Copilot connectors retrieval. Optional. + /// + [JsonPropertyName("dataSourceConfiguration")] + public DataSourceConfiguration? DataSourceConfiguration { get; set; } + /// + /// A list of metadata fields to be returned for each item in the response. Only retrievable metadata properties can be included in this list. By default, no metadata is returned. Optional. + /// + [JsonPropertyName("resourceMetadata")] + public List? ResourceMetadata { get; set; } + /// + /// The number of results that are returned in the response. Must be between 1 and 25. By default, returns up to 25 results. Optional. + /// + [JsonPropertyName("maximumNumberOfResults")] + public int MaximumNumberOfResults { get; set; } = 25; + /// + /// Keyword Query Language (KQL) expression with queryable SharePoint, OneDrive, or Copilot connectors properties and attributes to scope the retrieval before the query runs. + /// + [JsonPropertyName("filterExpression")] + public string? FilterExpression { get; set; } + } + /// + /// Represents the data source configuration + /// + public class DataSourceConfiguration + { + [JsonPropertyName("externalItem")] + public ExternalItemConfiguration? ExternalItem { get; set; } + } + /// + /// Represents configuration options for retrieving data from Copilot connectors + /// + public class ExternalItemConfiguration + { + /// + /// An array of connection objects specifying the Copilot connector connection identifiers to include in retrieval. Required. + /// + [JsonPropertyName("connections")] + public List Connections { get; set; } = new List(); + } + /// + /// Represents a Copilot connector to include in retrieval operations + /// + public class ExternalItemConnection + { + /// + /// The ID of a Copilot connector connection to include. Required. + /// + [JsonPropertyName("connectionId")] + public string ConnectionId { get; set; } = string.Empty; + } + +} diff --git a/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalResponse.cs b/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalResponse.cs new file mode 100644 index 0000000000..16c26fd63b --- /dev/null +++ b/src/sdk/PnP.Core/Model/Copilot/Public/DTO/RetrievalResponse.cs @@ -0,0 +1,98 @@ +using PnP.Core.Model.SharePoint; +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.Json.Serialization; + +namespace PnP.Core.Model.Copilot.Public.DTO +{ + /// + /// Represents results from a retrieval query. + /// + public class RetrievalResponse + { + /// + /// A collection of the retrieval results. If empty, no relevant results were found. + /// + [JsonPropertyName("retrievalHits")] + public List RetrievalHits { get; set; } = new List(); + } + /// + /// Represents a single result within the list of retrieval results. + /// + public class RetrievalHit + { + /// + /// The resource type of the item. Possible values: site, list, listItem, externalItem, drive, driveItem ,unknownFutureValue + /// + [JsonPropertyName("resourceType")] + public string ResourceType { get; set; } = string.Empty; + /// + /// The URL of the item in which the extract was retrieved. + /// + [JsonPropertyName("webUrl")] + public string WebUrl { get; set; } = string.Empty; + /// + /// An array of text extracts extracted from the document for Retrieval-Augmented Generation. Currently, only one text snippet is extracted. + /// + [JsonPropertyName("extracts")] + public List Extracts { get; set; } = new List(); + /// + /// A JSON object with information about the document's sensitivity label. + /// + [JsonPropertyName("sensitivityLabelInfo")] + public SensitivityLabelInfo? SensitivityLabelInfo { get; set; } + /// + /// The requested SharePoint and Microsoft 365 Copilot connectors metadata from the request payload (empty if not applicable). + /// + [JsonPropertyName("resourceMetadata")] + public Dictionary? ResourceMetadata { get; set; } + } + /// + /// Represents a single extract within the list of retrieval extracts. + /// + public class RetrievalExtract + { + /// + /// The text extract received. + /// + [JsonPropertyName("text")] + public string Text { get; set; } = string.Empty; + /// + /// The cosine similarity between the text extract and the queryString, normalized to the 0-1 range. It's possible for a retrievalExtract to be returned without a relevance score. + /// + [JsonPropertyName("relevanceScore")] + public float RelevanceScore { get; set; } + } + /// + /// Describes the information protection label that details how to properly apply a sensitivity label to information. + /// + public class SensitivityLabelInfo + { + /// + /// The ID of the sensitivity label. + /// + [JsonPropertyName("sensitivityLabelId")] + public string SensitivityLabelId { get; set; } = string.Empty; + /// + /// The display name for the sensitivity label + /// + [JsonPropertyName("displayName")] + public string DisplayName { get; set; } = string.Empty; + /// + /// The color that the UI should display for the label, if configured. + /// + [JsonPropertyName("color")] + public string Color { get; set; } = string.Empty; + /// + /// The priority in which the sensitivity label is applied. + /// + [JsonPropertyName("priority")] + public int Priority { get; set; } + /// + /// The tooltip that should be displayed for the label in a UI. + /// + [JsonPropertyName("tooltip")] + public string Tooltip { get; set; } = string.Empty; + } +} diff --git a/src/sdk/PnP.Core/Model/Copilot/Public/ICopilot.cs b/src/sdk/PnP.Core/Model/Copilot/Public/ICopilot.cs new file mode 100644 index 0000000000..e12a8881a6 --- /dev/null +++ b/src/sdk/PnP.Core/Model/Copilot/Public/ICopilot.cs @@ -0,0 +1,20 @@ + +using PnP.Core.Model.Copilot.Public.DTO; +using System.Threading.Tasks; + +namespace PnP.Core.Model.Copilot.Public +{ + /// + /// Represents MS Graph API endpoint under Copilot path. + /// + [ConcreteType(typeof(Internal.Copilot))] + public interface ICopilot + { + /// + /// The Microsoft 365 Copilot Retrieval API allows for the retrieval of relevant text extracts from SharePoint, OneDrive, and Copilot connectors content that the calling user has access to, while respecting the defined access controls within the tenant. Use the Retrieval API to ground your generative AI solutions with Microsoft 365 data while optimizing for context recall. + /// + /// + /// + public Task Retrive(RetrievalRequest request); + } +} diff --git a/src/sdk/PnP.Core/Services/Core/IPnPContext.cs b/src/sdk/PnP.Core/Services/Core/IPnPContext.cs index 938971bef3..5fbae7b613 100644 --- a/src/sdk/PnP.Core/Services/Core/IPnPContext.cs +++ b/src/sdk/PnP.Core/Services/Core/IPnPContext.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Logging; +using PnP.Core.Model.Copilot.Public; using PnP.Core.Model.Me; using PnP.Core.Model.Security; using PnP.Core.Model.SharePoint; @@ -49,6 +50,11 @@ public interface IPnPContext : IDisposable /// IMe Me { get; } + /// + /// Entry point for Copilot functionality + /// + ICopilot Copilot { get; } + /// /// Entry point for the ContentTypeHub Object /// diff --git a/src/sdk/PnP.Core/Services/Core/PnPContext.cs b/src/sdk/PnP.Core/Services/Core/PnPContext.cs index 5d07b528ce..a30e3f6f7a 100644 --- a/src/sdk/PnP.Core/Services/Core/PnPContext.cs +++ b/src/sdk/PnP.Core/Services/Core/PnPContext.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using PnP.Core.Model.Copilot.Internal; +using PnP.Core.Model.Copilot.Public; using PnP.Core.Model.Me; using PnP.Core.Model.Security; using PnP.Core.Model.SharePoint; @@ -60,7 +62,7 @@ public class PnPContext : IPnPContext return new Social(); }, true); - private readonly Lazy me= new Lazy(() => + private readonly Lazy me = new Lazy(() => { return new Me(); }, true); @@ -70,6 +72,11 @@ public class PnPContext : IPnPContext return new ContentTypeHub(); }, true); + private readonly Lazy copilot = new Lazy(() => + { + return new Copilot(); + }, true); + #endregion #region Internal properties @@ -140,7 +147,7 @@ internal PnPContext(ILogger logger, { MicrosoftGraphAuthority = globalOptions.MicrosoftGraphAuthority; AzureADLoginAuthority = globalOptions.AzureADLoginAuthority; - + // Ensure the Microsoft Graph URL is set depending on the used cloud environment GraphClient.UpdateBaseAddress(MicrosoftGraphAuthority); } @@ -427,6 +434,17 @@ public IMe Me } } + /// + /// Entry point for Copilot functionality + /// + public ICopilot Copilot + { + get + { + (copilot.Value as Copilot).PnPContext = this; + return copilot.Value; + } + } /// /// Entry point for the ContentTypeHub object /// @@ -451,7 +469,7 @@ public Batch NewBatch() { return BatchClient.EnsureBatch(); } - + /// /// Gets an ongoing Graph long-running operation. /// @@ -601,7 +619,7 @@ public async Task CloneAsync(Uri uri) /// Id of the other Microsoft 365 group to create a for /// New public PnPContext Clone(Guid groupId) - { + { return CloneAsync(groupId).GetAwaiter().GetResult(); }