What is Hangfire?

The Hangfire is an open-source .net package. It allows you to run scheduled jobs with limited amount of administrative cost. Just like Windows Scheduler, Windows Service deployment is not easy, but with the help of Hangfire you can run different types of background jobs such as one time jobs (aka fire and forget), recurring jobs.

Hangfire also provides you a dashboard that represent various information such as job status report, graph, exception details etc…

How to use Hangfire?

There are many good articles on how to use and setup Hangfire. However, I suggest you to read this book from the Author: https://media.readthedocs.org/pdf/hangfire/latest/hangfire.pdf

Extra Bit

Since I have successfully implemented the same in my job, I would like to preserve my learning in this blog, along with my good looking sketch notes.

Take Away:

  • If you are planning to use for an Enterprise Platform, I suggest you to buy Hangfire Pro version, which comes with dedicated support, performance counter and other improved benefits such as Redis database support.
  • Hangfire logs a lot. Hence, I suggest you to either implement your own LogProvider for the Hangfire or if you are using a log framework such as NUnit then don’t forget to set a filter on severity level.
  • If you are using Hangfire with the Microsoft SQL Server then you might want to assess the default polling time, which is every 15 seconds.
  • By default Hangfire dashboard is accessible for localhost. You can enable or disable for production, but don’t forget to set some sort of an Authentication mechanism. The good thing is, if you don’t want Windows or Basic Authentication, you can provide your own implementation.
  • If you can afford to have a separate Hangfire database, then please create a dedicated database for your Hangfire instance. It will give you an opportunity to scale, and share the same Hangfire instance with many other projects. Otherwise, you can stick to a separate database schema.
  • Hangfire is awesome because you don’t need any server access like in the case of Windows Scheduler or Windows Services.

Like I said before you can use this sketch note for your reference.



Bruce Tuckman's – Team Building Model

Bruce tuckman Model



tuckman’s forming storming norming performing four-stage model

The progression is:

Here are the features of each phase:

forming – stage 1

High dependence on leader for guidance and direction. Little agreement on team aims other than received from leader. Individual roles and responsibilities are unclear. Leader must be prepared to answer lots of questions about the team’s purpose, objectives and external relationships. Processes are often ignored. Members test tolerance of system and leader. Leader directs (similar to Situational Leadership® ‘Telling’ mode).

storming – stage 2

Decisions don’t come easily within group. Team members vie for position as they attempt to establish themselves in relation to other team members and the leader, who might receive challenges from team members. Clarity of purpose increases but plenty of uncertainties persist. Cliques and factions form and there may be power struggles. The team needs to be focused on its goals to avoid becoming distracted by relationships and emotional issues. Compromises may be required to enable progress. Leader coaches (similar to Situational Leadership® ‘Selling’ mode).

norming – stage 3

Agreement and consensus is largely forms among team, who respond well to facilitation by leader. Roles and responsibilities are clear and accepted. Big decisions are made by group agreement. Smaller decisions may be delegated to individuals or small teams within group. Commitment and unity is strong. The team may engage in fun and social activities. The team discusses and develops its processes and working style. There is general respect for the leader and some of leadership is more shared by the team. Leader facilitates and enables (similar to the Situational Leadership® ‘Participating’ mode).

performing – stage 4

The team is more strategically aware; the team knows clearly why it is doing what it is doing. The team has a shared vision and is able to stand on its own feet with no interference or participation from the leader. There is a focus on over-achieving goals, and the team makes most of the decisions against criteria agreed with the leader. The team has a high degree of autonomy. Disagreements occur but now they are resolved within the team positively and necessary changes to processes and structure are made by the team. The team is able to work towards achieving the goal, and also to attend to relationship, style and process issues along the way. team members look after each other. The team requires delegated tasks and projects from the leader. The team does not need to be instructed or assisted. Team members might ask for assistance from the leader with personal and interpersonal development. Leader delegates and oversees (similar to the Situational Leadership® ‘Delegating’ mode).



Reference :


Book: Professional Scrum Development with Microsoft Visual Studio 2012.

Why you should use Apple TV for your next presentation?

Why you should use Apple TV for your next presentation?


Is it not great that I can just use my mobile phone to start the presentation and do everything without any wire?

Well, here I have just bought the product called “Apple Tv”; it is just fantastic that I can connect any IPAD, IPHONE (where the device has got the presentation/ document). The main benefit I find is that I don’t need to know how to operate other’s device or find the way to transfer the document to present.

Why you should use Apple TV?

  • Handcuffing Wiring someone to a projector or TV is the pits
  • There are cable compatibility issues
  • It takes time and is inconvenient
  • If you’re still using VGA or less, the quality is awful
  • Tablets can’t be connected without even more adapters
  • Audio remains at the device
  • Changing presenters is another fiasco

While you can still go wireless using a projector, here is why you should go with TV over projector:

  • Good projectors are more expensive than good TV’s today
  • Projectors commonly have resolution restrictions (think huge icons,small workspace)
  • Projectors have long warmup times, leveling, and focusing issues
  • Projectors are very sensitive to lighting conditions
  • Projection screens are a pain, using a wall is not ideal


I must say that the IPAD + Apple TV + iCloud is the perfect combination for your presentation anywhere.

Office 365 – Exchange Online Forward Migration

Problem: That X has created around 200+ forwards that are linked to an external contact – exemployee@papu.com
However, exemployee@papu.com is mail account now.

1. What we need to write in the script is find all forwards where there is 0 membership
2. Add an exexmployee


$amount = @()

## Get all distribution group for interpro.com.au
$groups = Get-DistributionGroup | where {$_.PrimarySmtpAddress -like “*@papu.com”}
## Loop through and add for exemployee@
foreach ($a in $groups)
$count = @()
$count = ([array](Get-DistributionGroupMember –identity $a.Identity)).Count
if ($count –lt 1 ) {
Add-DistributionGroupMember -Identity $a.Identity -Member “exemployee@papu.com”
Write-Output $a.Identity




  • http://help.outlook.com/en-us/140/cc952755.aspx
  • http://community.office365.com/en-us/f/161/p/16010/73984.aspx#73984
  • http://help.outlook.com/en-gb/140/dd575549.aspx#DistributionGroups




Moving IMAP To Exchange (Office 365)

Date 22-March-2012Another achievement of technical life where I’d to move one of the company to Office 365 completely. At present they will be using only the exchange component however, moving forward this will bring us to define office 365 through Domain Controller Integration.Overall – Good exposure to http://portal.microsoftonline.com/ and also to http://mail.office365.comProblem solved:

Roaming profile is being achieved; making PST file back redundant.
The PST lock/ unlock issue fixed.

What was my role overall?

  • Planning and financial Analysis – wrote a step-by-step procedure for the staff to run through for transferring IMAP account to 365.
  • Train a staff member of size 5.
  • Demonstrating forwarding through email grouping in office 365/ exchange.
  • Moving and migrating existing emails to Office 365
  • Main point of contact for any challenges – following are the challenges I’d to face:
    • Finding a way of maintaining contact – suggestions as you type in; through C:UsersamitmappdatalocalmicrosoftOutlookRoamCacheStream_Autocomplete*.dat
    • Moving calendar et al from PST to Exchange – when system is hanging again and again.
    • Rollback procedure/ backup on hotmail as well as to our IMAP server infrastructure.
  • Point of contact for 12 members (sales staff) and 7 (back office)

Here is the crux of my analysis.

Migration setups from IMAP to Office 365 Exchange

We will understand about how to migrate papu.com (name made) to Office 365 (also called Exchange/ exchange 365).
We are assuming that Papu.com has been hosted under our IMAP serve. We have decided that the exchange 365 will be our primary mail service provider and IMAP as a secondary.
We are going to learn about actions into two two parts:
The first part is – domain action This actions needs to be done when we are migrating domain for the first time.
The second part is – user actionThis action needs to be done when we are migrating a user (email) account to that domain.

Domain Actions

  • Go to DNS Servers > Bind DNS > Search for Papu.com > Mail Server.
  • Change TTL for all entries to 3600 (which is 1 hour)
  • Go back to Bind DNS Option and Apply settings

It has been strongly advised that the above TTL changes should be done 1 day before migration.

Note: You need to have an Admin access to https://portal.microsoftonline.com/

  • Get a list of User account from Exim system (for actual email accounts) and for forward/ alias please go to Qmail.
  • Have this excel sheet thoroughly reviewed.

User Actions
We strongly advise that if we have more than 3 accounts for the migration then we use a feature called Bulk Account creation from Microsoft. Please read more details here: http://onlinehelp.microsoft.com/en-us/office365-enterprises/ff637601.aspx

Any new account that we create must be advised to support@. Hence, in the last step please do mention this email address where a temporary password will be sent by Microsoft Exchange.

  • Check support@ and you will have received account details.
  • Login as that user online (http://mail.office365.com) and reset the password.
  • Track this password in the same excel sheet that we have prepared above.

Outlook Changes

  • Create an account in the outlook.
  • Export – existing IMAP Outlook to a PST file
    • FileOpen menu
    • click on Import ( I have no idea why they have not mentioned it does export too 🙂 ) and then follow the wizard to EXPORT to PST file
  • Import – This PST file should be imported into Outlook Exchange account.
  • Select signature from file – options
  • Delete old account from office 365 – if any.
  • If you have deleted an old account for that user then you must also modify their account registration details for Microsoft Office – desktop application.

After all user account has been created

  • Use Exchange, email migration tool through Manage > Users & Group for migrating records.

You would need a CSV file in the following format: The format should be: EmailAddress, UserName, Password
Note here that the password is an IMAP account password.

  • Modify IMAP DNS settings. – refer an attached document.
  • Wait for testing to be finished.
  • And then detach old PST file from each desktop outlook.