Office 365 mailbox backup – Why and How ?


Office 365 is an immensely popular cloud platform from Microsoft. Nowadays, many business organizations are migrating their on-premises resources to Office 365. This new cloud platform has allowed them to lower expenditure and expand business reach.

Business benefits of Office 365

There are numerous benefits for Office 365 –

  • Value for money

In Office 365, you pay for what you use. There are multiple plans of Office 365 which you can purchase and use. And you can easily scale Office 365 plans as per your need. So, you do not need to pay for services you are not using.

  • Data security
Data saved in the Office 365 is saved in the secure Data Centers of Microsoft. So, there is a surety for your business that data will not be lost. It also has various provisions to fix various threats like malware, spyware, and hackers.

  • Mobile friendly
As mobile devices are used more than computers, Microsoft provides mobile accessibility to Office 365. So, you can access your emails, contacts, notes, journal, etc. in your mobile device.

But there are multiple reasons which force you to take a secure backup of your Office 365 mailboxes–
  • Internal security risks: Business organizations are facing many internal security risks like accidental or intentional of deletion of emails and important data, manipulation of data, etc. These security threats always target your data and may cause data losses.

  • · External security risks: External security threats like of virus attacks, malware attacks, and ransomware attacks can cause loss of data.

  • · Retention policies of Office 365: Retention policies are quite complicated to follow, and administrators will have to spend a lot of time to manage them. So, you may lose your data if you have not applied your retention policy properly.

Keeping backups for Office 365 mailboxes becomes necessary to secure your data from such threats.
The backup of Office 365 data may be saved in various formats, but it will be highly beneficial for you if you take a backup in PST format. If you save your data in PST format, then you can use it in Outlook.

Simplicity of Outlook

Microsoft Outlook is used as an Exchange client and personal information manager by organizations all around the globe. It is available as a desktop application. It is also accessible on Android and iOS mobile platforms in the form of mobile apps. So, the global accessibility of Outlook on every device and region make it the most suitable platform to save a backup.

Exporting mailbox data from Office 365 to Outlook

To take a backup of Office 365 data to PST, you can use the eDiscovery feature which exports the emails directly to a PST file.

eDiscovery PST export tool.

To export the Office 365 mailboxes to PST, use the following steps –

1. Go to Office 365 Admin Center>>Security & Compliance Center>>Permissions; select eDiscovery Manager, and click Edit role group.



2. In Edit role group, select Choose eDiscovery Manager and then click Add.



3. Now, you need to select the content for migration. Go to Search & Investigation, click the + button to add a Content search.


                     
4. Provide a name to the Content search and choose an option from where you want to search the content.



5. In the next page, you can put a keyword in the search content.



6. After completing the search, you can click Start export and begin the backup procedure.



7. In Exports search results window, choose the desired options and click the Start Export button.



8. The tool starts exporting data and you can download the exported results to see the whole migration report.



9. In Export search results, you can copy the URL which will be used in the eDiscovery PST export tool and paste it there.



10. Copy the selected URL in eDiscovery PST Export tool, provide a destination to store the migrated data and click Start Export. The migration will start.

Limitations of eDiscovery export feature

While conducting the manual process of Office 365 to PST export, you may face several hurdles if your account does not have enough permissions to export the mailbox content. Additionally, you will need to install PST export tool to copy the content search URL. So, it is a time-consuming and error-prone procedure which has many compulsions and limitations.

Office 365 to PST using professional tools

If you want to avoid the tricky manual process and take the assistance of a professional tool, then Kernel Office 365 Backup & Restore is the most suitable software available at your service. It has a quite minimalistic user interface which lets you select an Office 365 account, select its mailbox(es), archive mailbox(es), public folder, apply filters and then export to a PST file. If you want to backup of multiple Office 365 mailboxes, then it will create a separate PST file for each mailbox.

Conclusion

Though Office 365 allows you to increase the reach of your business, it’s vulnerable to data loss issues. However, Office 365 backup in PST will enable you to keep your data safe. Office 365 emails can be exported to PST using eDiscovery feature or professional tools like Kernel Office 365 Backup & Restore.


   

SharePoint 2019 Announced: The complete round-up from #msignite!

SharePoint 2019 just got announced.

There are many new features coming to both OneDrive and SharePoint. You can Read more about everything that got announced today around SharePoint and OneDrine from the post of Nick Brattoli.






Walkthrough : Debugging an Office Add-In Project


Recently, I have worked for a Word AddIn project, but I cannot debug or run it because the required version of Microsoft Office was not installed. Visual Studio show for me this error « you cannot debug or run this project because the required version of the microsoft office application is not installed »

To resolve this issue, you should do these actions :

1.       Go to the project properties in Visual Studio

2.       Go to the 'Debug' tab

3.       Click the 'Start external program' radio button

4.       Enter the path to the Office Application e.g. « C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE »

5.       Run the project.

Install an assembly into the Global Assembly Cache without gacutil

When we need to register an assembly in the GAC, generally we use the Global Assembly Cache tool (Gacutil.exe) with this command gacutil -i <assembly name>

But Gacutil.exe is only for development purposes and should not be used to install production assemblies into the global assembly cache.

One of the solutions is to use PowerShell to install a DLL into the GAC (Global Assembly Cache) by doing the following

[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") | Out-Null
[System.EnterpriseServices.Internal.Publish] $publish = new-object System.EnterpriseServices.Internal.Publish
$publish.GacInstall(<<FullFilePathToTheDll>>)

This has to do very little with native PowerShell but rather with instantiating and using .NET libraries from PowerShell


After that you need to do an IISRESET in the server

Office 365 Best Practices

Les bonnes pratiques pour Office 365 : La mise à jour de février est disponible

https://channel9.msdn.com/blogs/OfficeDevPnP/Office-365-Developer-Patterns-and-Practices-February-2016-Community-Call

Crawled property does not re-appear after deletion for a custom crawled property

I have deleted a custom crawled property related to a SharePoint column from the Search Administration > Search Schema > Crawled properties

After that,  I performed a full crawl. Once done, I checked crawled properties availability but I did not found the crawled property related to my SharePoint column, that’s the problem.

After some investigations, I discovered that CTS (Content Transformation Service) maintains an in-memory cache of crawled properties.  And on subsequent crawls, it skips properties that are already in the cache. This design is for performance reasons. Since extracting crawled properties and updating them in schema is an intensive operation, CTS is designed this way so that only new crawled properties are crawled on subsequent attempts thus resulting in a much faster throughput in terms of crawl speed.  This design also helps in reducing roundtrips to multiple databases as the property reporter talks to both schema object model and search admin database.

So here’s how to get back the crawled properties.  There are two ways and these can be used as the scenario may be at your environments/deployments.

1. Restart search host controller services.

Open SharePoint 2013 Management Shell in admin mode and issue the command:

Restart-Service spsearchhostcontroller

This will restart all of the search services.

2. The above might not be ideal on environments where all search services are running on single server since it will cause a downtime for all search services (all noderunner.exe will be killed and spawned).  In this case, the specific content processing process can be killed (with a command as shown below) and it will be spawned again immediately.


PS C:\> Get-WmiObject Win32_Process -Filter "Name like '%noderunner%' and CommandLine like '%ContentProcessing%'" | %{ Stop-Process $_.ProcessId }

Get current user groups via CSOM (JavaScript) and REST API

You can find all current user groups in SharePoint using CSOM (JavaScript). Here is the code I used to find groups :

function GetCurrentUserGroups() {

    var clientContext = new SP.ClientContext.get_current();
    this.currentUser = clientContext.get_web().get_currentUser();
    clientContext.load(this.currentUser);

    this.userGroups = this.currentUser.get_groups();
    clientContext.load(this.userGroups);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.OnQuerySucceeded), Function.createDelegate(this, this.OnQueryFailed));
}

function OnQuerySucceeded(sender, args) {
    var g1 = "Visiteurs LMRH"; var g2 = "Visiteurs CASA"; var g3 = "Visiteurs CA";
    var membership = "LMRH";
    var groupsEnumerator = this.userGroups.getEnumerator();
    while (groupsEnumerator.moveNext()) {
        var group= groupsEnumerator.get_current();
        var groupTitle = group.get_title();
        //do something
    }
}

function OnQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

ExecuteOrDelayUntilScriptLoaded(GetCurrentUserGroups, 'SP.js');

You can also use the Rest API to get current user groups and below the code to do that :

function GetCurrentUserGroups()
{
    var requestUrl = _spPageContextInfo.webServerRelativeUrl + '/_api/web/currentuser/?$expand=groups';
    return $.ajax({
            url: requestUrl,
            async: false,
            method: "GET",
            contentType: "application/json;odata=verbose",
            headers: {  
             "Accept": "application/json;odata=verbose"
            }
        });
}

GetCurrentUserGroups()
.done(function(data)
{
    var userGroups = data.d.Groups.results;
    var currentUserGroups = [];
    for(i = 0; i < userGroups.length; ++i){
        currentUserGroups.push(userGroups[i].LoginName);
    }
})
.fail(
function(error){
    console.log(JSON.stringify(error));
});