OnlineAccountLockedEventV1
v1.0.0

Gets triggered when user account reaches lockout criteria.
When firing this event make sure you set the `correlationId` in the headers. Our schemas have standard metadata make sure you read and follow it.

Details

This event is triggered when an online account is locked. The Client Service publishes a notification message to Azure Service Bus for downstream processing by Notification Service.

End-to-end publishing flow

Step 1 - Create notification payload

A notification payload is created containing all information required by Notification Service.

FieldDescription
eventNotification event name (OnlineAccountLocked)
auctionIdDefault value (0)
lotIdnull
souceEventTimeStampUTC timestamp from source event
sourceSystemSource system identifier (Dotcom)
clients[].clientIdClient identifier
clients[].propertiesName/value metadata including language and url

Example payload:

{
  "event": "OnlineAccountLocked",
  "auctionId": 0,
  "lotId": null,
  "souceEventTimeStamp": "0001-01-01T00:00:00",
  "sourceSystem": "Dotcom",
  "clients": [
    {
      "clientId": 44373322,
      "properties": [
        {
          "name": "language",
          "value": "en"
        },
        {
          "name": "url",
          "value": "https://staging.christies.com/mychristies/my_settings_password.aspx?e=2615fc277fa09a735774ec4d377a8dae754dfd8acda2560418bfd0750ae0835a8aa6887b165c888f91151798fe8f147bf871c6&lid=1&sc_lang=en"
        }
      ]
    }
  ]
}

Step 2 - Generate password reset URL

The URL is generated dynamically using:

string.Format(BaseUrl, domain, language, token)
PlaceholderValue
{0}com or com.cn
{1}Signup language
{2}Encrypted password reset token

Example generated URL:

https://mychristies-dev.christies.com/en/my-christies/change-password?t=EncryptedToken

Step 3 - Serialize message

The payload is serialized into JSON using camelCase naming convention.

JsonSerializer.Serialize(messagePayload, _camelCaseOptions);

Step 4 - Publish message to Azure Service Bus

The serialized JSON is published to Azure Service Bus.

await _serviceBusMessagingService.PublishMessageAsync(
    messageBody,
    ServiceBusTopicName,
    MessageSubject,
    Guid.NewGuid().ToString());
ParameterDescription
Message BodySerialized JSON payload
TopicAzure Service Bus topic
SubjectNotification subject
Message IdUnique GUID

Step 5 - Notification Service processing

Notification Service:

  • Reads the message
  • Identifies the event
  • Selects the appropriate email template
  • Uses the language property
  • Uses the url property
  • Sends the email

PasswordResetEmailOptions configuration

Notification publishing configuration is maintained in appsettings.json.

"PasswordResetEmail": {
  "ServiceBusTopicName": "sbt-event-client",
  "BaseUrl": "https://mychristies-dev.christies.{0}/{1}/my-christies/change-password?t={2}",
  "TokenExpirationMinutes": "10",
  "PasswordResetTokenEncryptionKey": "Test1234"
}
PropertyDescription
ServiceBusTopicNameAzure Service Bus topic used for publishing notification events
BaseUrlBase URL template used to generate password reset links
TokenExpirationMinutesPassword reset token expiry duration (default: 10 minutes)
PasswordResetTokenEncryptionKeyKey used to generate and validate encrypted password reset tokens

Language mapping

Application languageURL language
zh-hanszh-cn
zh-hantzh
Any other languageen

Domain mapping

OriginGenerated domain
*.cnchristies.com.cn
Otherschristies.com

Azure Service Bus topic

sbt-event-client

Client Service publishes this event to the topic, and Notification Service subscribes to the topic to send the email.

Consumer / Producer Diagram

OnlineAccountLockedEventV1 Schema (json)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "OnlineAccountLockedEventV1",
  "type": "object",
  "properties": {
    "event": {
      "type": "string"
    },
    "auctionId": {
      "type": "integer"
    },
    "lotId": {
      "type": ["integer", "null"]
    },
    "souceEventTimeStamp": {
      "type": "string",
      "format": "date-time"
    },
    "sourceSystem": {
      "type": "string"
    },
    "clients": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "integer"
          },
          "properties": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                }
              },
              "required": ["name", "value"]
            }
          }
        },
        "required": ["clientId", "properties"]
      }
    }
  },
  "required": [
    "event",
    "auctionId",
    "lotId",
    "souceEventTimeStamp",
    "sourceSystem",
    "clients"
  ]
}
Edit this pageLast updated on 2026/8/25