New-MailboxRepairRequest – the successor of the Isinteg tool

Issues concerning a single user’s mailbox malfunctions are nothing peculiar in web administrator’s everyday work. The scope of such issues is pretty wide, starting from the wrongly displayed number of public folders in mailbox view, to problems with search items or with access to folders. These issues particularly concern shared mailboxes with a high number of active users. To overcome these problems admins usually used three most popular solutions:

  1. Mailbox data export to PST files. An Exchange administrator deletes the current mailbox and creates a new one, where he/she imports the previously exported PST files.
  2. An administrator completely dismounts the whole database from the server, and then using the Isinteg tool repairs the dismounted database. Basically, this solution has two major flaws. It is time-consuming (it depends on the size of the database), and it suspends Exchange services availability not only for the malfunctioning mailbox, but for all mailboxes within the database.
  3. An administrator recovers a backed up version of the current database what results in the partial loss of the newest data.

All above mentioned solutions appeared insufficient for Exchange administrators in meeting demands of nowadays IT environments. It all has changed with the emergence of Exchange 2010 SP1, and the cmdlet called New-MailboxRepairRequest.

New-MailboxRepairRequest

These are the most important functionalities of the new cmdlet:

  • It works online with databases, so there is no need for dismounting the databases to conduct necessary repairs and error fixes.
  • It allows for making repairs in a single user mailbox or in the whole database with no necessity for its dismounting (totally online!).

The cmdlet fixes 4 types of mailbox corruptions:

  • Errors in the search folders (SearchFolder).
  • Errors that refer to the displayed number of items and their sizes in folders (AggregateCounts).
  • Errors connected with the displayed content in folders (FolderView).
  • Errors in the folder structure within a mailbox (ProvisionedFolder).

Whenever New-MailboxRepairRequest is used, access will be restricted to only this mailbox that is being currently repaired. In case there are repairs to be made on a whole database, access will be restricted to a currently processed mailbox. It is also worth to mention that the maximum number of active repair processes on a mailbox-level within a database ranges from 1 to 100. There is no single command to hold on the cmdlet’s action, however, to cease its functioning you need to dismount the database or kill its engine (Exchange Information Store).

The cmdlet goes as follows:

New-MailboxRepairRequest –Corrupted_object <name> - CorruptionType <corruption_type>

Parameters

  • Corrupted_object – Database or Mailbox; you can repair a database or a single mailbox within a database, it is impossible to use two objects in one cmdlet. You can also repair a user archive mailbox by just adding the -archive switch.
  • Corruption_type (at least one is required as described above)
    • SearchFolder
    • AggregateCounts
    • ProvisionedFolder
    • FolderView

In the cmdlet you may include:

DetectOnly – it allows to check up a mailbox or database without making any repairs

Cmdlet examples

In the below given example, we repair all possible corruption types in exemplary user7’s mailbox:

New-MailboxRepairRequest –Mailbox [email protected] –CorruptionType SearchFolder, AggregateCounts, ProvisionedFolder, FolderView

New-MailboxRepairRequest –Database „Mailbox Database 1643455454” –CorruptionType ProvisionedFolder -DetectOnly

The following cmdlet example checks up the database for any errors in the catalogue structure without making any repairs:

New-MailboxRepairRequest –Database “Mailbox Database 1643455454” –CorruptionType ProvisionedFolder –DetectOnly

The cmdlet status check

One of the things about New-MailboxRepairRequest is that it doesn’t give back any feedback information in Exchange Management Shell. Therefore, you need to look for feedback logs in the branch Application in Event Viewer, under source MSExchangeIS Mailbox Store.

Event Viewer MSExchangeIS Mailbox

The following events should be logged in:

  • 10047 A mailbox-level repair request started
  • 10064 A Public Folder repair request started
  • 10048 The repair request successfully completed
  • 10050 The mailbox repair request task skipped a mailbox
  • 10059 A database-level repair request started
  • 10062 Corruption was detected

Please note! A new cmdlet in Exchange 2013 has appeared. It allows to run a repair status check for a single mailbox or database: Get-MailboxRepairRequest.

Get-MailboxRepairRequest

Summary

The new cmdlet brings in the solution that has been awaited by many Exchange administrators for a quite long time. Now they don’t need to solve these sort of problems during off-time hours, or on weekends. The new solution surely speeds up repair processes and doesn’t affect Exchange databases availability.

Suggested reading

Tools for Microsoft 365

16 thoughts on “New-MailboxRepairRequest – the successor of the Isinteg tool


    • If it’s stuck at queued, and the job state doesn’t seem to change, it might mean that the mailbox is quarantined. Check if Disable-MailboxQuarantine "mailbox_name" fixes the problem.

  1. There is a typo under Cmdlet examples, end of first line a random ‘7’ got in there: “…user7’s mailbox:”.

    Comprehensive and concise. Very well explained.

    • Hi Bill,
      Thank you for the comment, I am glad you liked the article.
      As for user7 – that is a name, everyone in my company has a name like that.

  2. Hello Adam

    I can remember that I’ve seen the Status from an Database ( for ex. dirty Shutdown) without using eseutil .. but it was just for experimantel .. and i doesn’t know the command anymore.

    Do you know some other Commands for query the Status on a Exchange Database than the esutil one ?

    regards john

  3. Hello adam

    Thanks for the links, but this one describes the mechanism at least on the surface only for my taste …

    It will be great to know if there some Commands ,like to lock the Database from the user or whats going on in the Background elsewhere.

    Do you have an idea ?

    best regards john

  4. Hello nice article

    So when i want to make an Full Diagnostic Action for my Database.

    Is it a good idea to use eseutil too ?

    For example:

    1.Check the edb file for shutdown state:
    when it shows a dirtyshutodwn solve dirty shutdown with soft recovery .

    2. Check with the cmdlet the Database Mailboxes or the Whole Database.

    is it an practicable way ?

    or does the cmdlet makes esutil superseded

    best regards john

    • Hi John,

      Nowadays ESEUTIL should only be used as a last resort, preferably with the assistance of MS Support. Modern Exchange editions can correct most database errors on the fly. Any repairs should be performed only using the New-MailboxRepairRequest cmdlet.

      Best regards,
      Adam

    • Hello Adam

      Thanks for your Help

      Could i repair an dirty shutdown state with the New-MailboxRepairRequest cmdlet also ?

      best regards john

    • Hi John,

      A dirty shutdown is actually a last resort situation which can only be fixed with ESEUTIL. Before using it make sure you have a backup of the database and the logs – ESEUTIL may cause unexpected results. More info in my aricle.

      Best regards,
      Adam

    • Thanks adam for the infos

      i’ll do so …

      btw: is there any whitepaper or documentation about the cmd let
      How it works ?

      best regards john

  5. What happens with mailflow to the mailbox while it’s offline? Do messages get bounced, or just queue up for delivery? The only comment I’m seeing is that access is disrupted, but nothing about message delivery.

    • Hi Tom,

      TechNet does mention disruptions during mailbox repair, but my tests didn’t show anything significant. My guess is that in heavy traffic you may notice delivery delays.

      Best regards,
      Adam

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

CodeTwo sp. z o.o. sp. k. is a controller of your personal data.
See our Privacy Policy to learn more.