diff --git a/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommand.cs b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommand.cs
new file mode 100644
index 0000000..43dc95d
--- /dev/null
+++ b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommand.cs
@@ -0,0 +1,22 @@
+namespace CMSMicroservice.Application.ClubMembershipCQ.Commands.ActivateClubMembership;
+
+///
+/// Command برای فعالسازی عضویت باشگاه مشتریان یک کاربر
+///
+public record ActivateClubMembershipCommand : IRequest
+{
+ ///
+ /// شناسه کاربر
+ ///
+ public long UserId { get; init; }
+
+ ///
+ /// تاریخ فعالسازی (اختیاری - پیشفرض: الان)
+ ///
+ public DateTimeOffset? ActivationDate { get; init; }
+
+ ///
+ /// دلیل فعالسازی (برای History)
+ ///
+ public string? Reason { get; init; }
+}
diff --git a/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandHandler.cs b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandHandler.cs
new file mode 100644
index 0000000..7af3898
--- /dev/null
+++ b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandHandler.cs
@@ -0,0 +1,84 @@
+namespace CMSMicroservice.Application.ClubMembershipCQ.Commands.ActivateClubMembership;
+
+public class ActivateClubMembershipCommandHandler : IRequestHandler
+{
+ private readonly IApplicationDbContext _context;
+
+ public ActivateClubMembershipCommandHandler(IApplicationDbContext context)
+ {
+ _context = context;
+ }
+
+ public async Task Handle(ActivateClubMembershipCommand request, CancellationToken cancellationToken)
+ {
+ // بررسی وجود کاربر
+ var userExists = await _context.Users
+ .AnyAsync(x => x.Id == request.UserId, cancellationToken);
+
+ if (!userExists)
+ {
+ throw new NotFoundException(nameof(User), request.UserId);
+ }
+
+ // بررسی عضویت فعلی
+ var existingMembership = await _context.ClubMemberships
+ .FirstOrDefaultAsync(x => x.UserId == request.UserId, cancellationToken);
+
+ ClubMembership entity;
+ bool isNewMembership = existingMembership == null;
+ var activationDate = request.ActivationDate ?? DateTimeOffset.UtcNow;
+
+ if (isNewMembership)
+ {
+ // ایجاد عضویت جدید
+ entity = new ClubMembership
+ {
+ UserId = request.UserId,
+ IsActive = true,
+ ActivatedAt = activationDate.DateTime,
+ InitialContribution = 0,
+ TotalEarned = 0
+ };
+
+ await _context.ClubMemberships.AddAsync(entity, cancellationToken);
+ }
+ else
+ {
+ // فعالسازی مجدد عضویت موجود
+ entity = existingMembership;
+
+ if (entity.IsActive)
+ {
+ // اگر از قبل فعال است، فقط تاریخ را بهروز میکنیم
+ entity.ActivatedAt = activationDate.DateTime;
+ }
+ else
+ {
+ // فعالسازی عضویت غیرفعال
+ entity.IsActive = true;
+ entity.ActivatedAt = activationDate.DateTime;
+ }
+
+ _context.ClubMemberships.Update(entity);
+ }
+
+ await _context.SaveChangesAsync(cancellationToken);
+
+ // ثبت تاریخچه
+ var history = new ClubMembershipHistory
+ {
+ ClubMembershipId = entity.Id,
+ UserId = entity.UserId,
+ OldIsActive = !isNewMembership && !existingMembership!.IsActive,
+ NewIsActive = true,
+ Action = ClubMembershipAction.Activated,
+ Reason = request.Reason ?? (isNewMembership ? "Initial activation" : "Reactivated"),
+ PerformedBy = "System" // TODO: باید از Current User گرفته شود
+ };
+
+ await _context.ClubMembershipHistories.AddAsync(history, cancellationToken);
+ await _context.SaveChangesAsync(cancellationToken);
+
+ return entity.Id;
+ }
+}
diff --git a/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandValidator.cs b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandValidator.cs
new file mode 100644
index 0000000..ce01175
--- /dev/null
+++ b/src/CMSMicroservice.Application/ClubMembershipCQ/Commands/ActivateClubMembership/ActivateClubMembershipCommandValidator.cs
@@ -0,0 +1,34 @@
+namespace CMSMicroservice.Application.ClubMembershipCQ.Commands.ActivateClubMembership;
+
+public class ActivateClubMembershipCommandValidator : AbstractValidator
+{
+ public ActivateClubMembershipCommandValidator()
+ {
+ RuleFor(x => x.UserId)
+ .GreaterThan(0)
+ .WithMessage("شناسه کاربر معتبر نیست");
+
+ RuleFor(x => x.ActivationDate)
+ .LessThanOrEqualTo(DateTimeOffset.UtcNow.AddDays(1))
+ .WithMessage("تاریخ فعالسازی نمیتواند در آینده باشد")
+ .When(x => x.ActivationDate.HasValue);
+
+ RuleFor(x => x.Reason)
+ .MaximumLength(500)
+ .WithMessage("دلیل فعالسازی نمیتواند بیشتر از 500 کاراکتر باشد")
+ .When(x => !string.IsNullOrEmpty(x.Reason));
+ }
+
+ public Func