public void Run(IIntegrationResult result)
        {
            result.BuildProgressInformation.SignalStartRunTask("Generating Achievements");

            bool shouldIgnoreBuild =
                   result.BuildCondition == BuildCondition.ForceBuild
                || result.Status == IntegrationStatus.Cancelled
                || result.Status == IntegrationStatus.Unknown;

            if (shouldIgnoreBuild)
            {
                Log.Info("This build isn't Achievement-worthy - ignoring... (Condition: {0}; Status: {1})",
                         result.BuildCondition, result.Status);
                return;
            }

            IEnumerable<string> usernames = result.Modifications.Select(m => m.UserName).Distinct();

            Log.Debug("{0} developers involved in this build: {1}",
                      usernames.Count(), string.Join(", ", usernames.ToArray()));

            string activityTypeName = GetActivityTypeName(result);

            Dictionary<string, string> parameters =
                new Dictionary<string, string>
                    {
                        { "Url", result.ProjectUrl },
                    };

            IEnumerable<Activity> activities =
                from username in (usernames ?? Enumerable.Empty<string>())
                select new Activity()
                           {
                               ActivityType = activityTypeName,
                               ActivityParameters = parameters,
                               Timestamp = DateTime.Now,
                               Username = username,
                           };

            LogDeveloperActivityRequest request =
                new LogDeveloperActivityRequest() { Activities = activities.ToList() };

            Log.Debug("Calling the Activity Service ({0}) with a request including {1} {2} activities...",
                      ActivityServiceUrl, activities.Count(), activityTypeName);

            LogDeveloperActivityResponse response = ActivityService.LogDeveloperActivities(request);

            AchievementResult achievementResult = new AchievementResult(response);

            Log.Info("Successfully logged {0} Activities for {1} developers",
                     achievementResult.ActivityResults.Count(), usernames.Count());

            result.AddTaskResult(achievementResult);
        }
 // ReSharper restore DoNotCallOverridableMethodsInConstructor
 public LogDeveloperActivityResponse LogDeveloperActivities(LogDeveloperActivityRequest request)
 {
     LogDeveloperActivityResponse response = _serviceClient.LogDeveloperActivities(request);
     return response;
 }