OnlineAccountLockedEventV1v1.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.
| Field | Description |
|---|---|
event | Notification event name (OnlineAccountLocked) |
auctionId | Default value (0) |
lotId | null |
souceEventTimeStamp | UTC timestamp from source event |
sourceSystem | Source system identifier (Dotcom) |
clients[].clientId | Client identifier |
clients[].properties | Name/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)
| Placeholder | Value |
|---|---|
{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());
| Parameter | Description |
|---|---|
| Message Body | Serialized JSON payload |
| Topic | Azure Service Bus topic |
| Subject | Notification subject |
| Message Id | Unique GUID |
Step 5 - Notification Service processing
Notification Service:
- Reads the message
- Identifies the event
- Selects the appropriate email template
- Uses the
languageproperty - Uses the
urlproperty - 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" }
| Property | Description |
|---|---|
ServiceBusTopicName | Azure Service Bus topic used for publishing notification events |
BaseUrl | Base URL template used to generate password reset links |
TokenExpirationMinutes | Password reset token expiry duration (default: 10 minutes) |
PasswordResetTokenEncryptionKey | Key used to generate and validate encrypted password reset tokens |
Language mapping
| Application language | URL language |
|---|---|
zh-hans | zh-cn |
zh-hant | zh |
| Any other language | en |
Domain mapping
| Origin | Generated domain |
|---|---|
*.cn | christies.com.cn |
| Others | christies.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