Welcome! This is my personal blog about Web technologies, software development, open source and other related topics
The ideas and opinions expressed here are solely mine and don't represent those of others, either individuals or companies.The code snippets or references to software products or analogous are to be used without any warranty of any kind. If you enjoy the content, feel free to share it and re-use it as long as you provide a link to the original post.
A decorator class has a special class method __call__(). This method is responsible for supporting a case when an object is called. The advantage of decorator class over function is they bring the OOP feature such as inherirtance etc.
In the below code snippet the the decorated function is assigned to the self.func i.e. to the decorator. The decorator class itself calls the decorated function.
Passing a message to the decorator class. Here the message is passed from the LogDecorator and initailised in the class constructor.
The calling method is accessible in the __call__() method.
Returns detailed information for a specific transferred item, including all captured metadata and localized/versioned field information for the given itemId, database, and source.
Use this endpoint to inspect the complete details of an individual transferred item, including its field values, versions, and metadata.
Example – https://your-xmc-instance.sitecorecloud.io/sitecore/api/content/transfer/v1/transfers/1ec8122c-a25e-49b0-a0fb-bd47dfccdf8b/chunksets/30fca7fa-0775-436f-957e-71b74b1ef6ef/complete
Example – https://your-xmc-instance.sitecorecloud.io/sitecore/shell/api/v3/ItemsTransfer/transfers/databases/master/sources?blobName=contentTransfer-1ec8122c-a25e-49b0-a0fb-bd47dfccdf8b-30fca7fa-0775-436f-957e-71b74b1ef6ef.raif
Headers-
Authorization – token
Response–
202 – Accepted
Verify the blob and you should see the BlobState changed to – Transferred. The earlier state was Uploaded
If transfer has issues ths state will be – TransferredWithErrors
Example – https://your-xmc-instance.sitecorecloud.io/sitecore/api/content/transfer/v1/transfers/1ec8122c-a25e-49b0-a0fb-bd47dfccdf8b/chunksets/d71458d7-db08-4a74-a125-0d7d4eabf491/chunks/0
Effective 7 July 2026, the Package Designer is no longer available in Sitecore AI. As a result, creating and installing Sitecore packages through the Sitecore Client is no longer supported.
For many years, the Package Designer was one of the most widely used, simplest, and most reliable methods for transferring content between Sitecore environments. However, Sitecore has long provided an alternative through the Sitecore CLI, which supports content serialization and deployment in a more modern, automation-friendly manner.
With the removal of the Package Designer, organizations are encouraged to adopt the Sitecore CLI and the newer Content Transfer and Item Transfer APIs for moving content between Sitecore AI environments.
With the content transfer API uses chunked streaming there is no need to break large migrations into multiple smaller packages formelry we used to do this with the zip package. With the new approach a .raif file is created with the no manual file download or upload.
SOURCE ENVIRONMENT
+--------------------------------+
| Sitecore CM (Source) |
| |
| Content Transfer API |
+---------------+----------------+
|
1. Create Transfer
|
▼
Transfer Service
|
2. Export Content
|
▼
Chunk Set Created
|
3. Download Chunks
|
▼
-----------------------
Content Transfer (Chunked Streaming)
-----------------------
4. Upload Chunks
|
▼
DESTINATION ENVIRONMENT
+--------------------------------+
| Content Transfer API |
+---------------+----------------+
|
5. Complete Chunk Set
|
▼
RAIF File Generated
|
6. Verify Blob Exists
GET /sources/blobs
|
▼
Item Transfer API
|
7. Start Import
|
▼
Import Processing
|
▼
Sitecore Master Database
|
▼
Content Available
Guest data extensions enable your organization to store any additional information around customer interactions, beyond the predefined Sitecore CDP guest attributes
While creating Guest the response provide the gust ref. Using this reference we can add data extension to the guest. See screen below to get the various ways to get gust referece-
You can also get the ref from portal for the respective guest (set the debug mode)-
Go to Portal and Guest page. Search the gust with name-
Click on the settings button (only available in debug mode). Note the reference of guest.
Ensure request is sent using Basic Auth where User Name is the Client Key and Password is Api Token. Take the credentials from portal (API Access menu option).
Response-
Check the extension data in portal, under properties tab-
You can create multiple gust extension for given guest, although it is recommended to have one-
Evaluating a CDP platform is very crucial. An informed decision has to be taken while selecting a CDP platform based on necessary information from various stakeholders in an organization.
Feedback from peers or other factors may influence the preferences for certain vendors. Understanding business goals and required use cases and scenarios better uunderstands which platforms better suits your organization.
The following steps could help you to choose a CDP platform based on the inputs from the team players that better fits the organization goals.
All businesses has the priorities between teams, departments, timelines, systems and success metrics. A list of company objectives can be acquired by series of interviewsbetween various stakeholders including leadership groups, key team members and partners. Also a technical features or requirements come into play for theses stake holders.
While acquiring a CDP platform you have to also see if you have team and process in place to support the initiactive along side the technology.
These are some of the business goals that a company should consider while acquiring the CDP platform-
Conslidating Customer Data– Collecting a customer data from various sources such as email, website, social media and purchase history and unifing the customer profile that can be used for better decision making, customer segmentation and personalization.
Improving marketing & advertising performance – More targeted and relevant marketing and advertising campaigns can be created by better understanding customer preferences and behaviours abd their needs.
Personalize customer expereinces – Creating a personalized expereince for the customers across various cahnnels by a CDP with the collected data to increase the customer loyalty, satisfaction and retention.
Increase Sales – Business can identify cross sell and up-sell opportunities using insights provided by CDP where a customer is interested in an offer or service which results in incresed customer statisfaction and loylaity, ultimately increasing sales.
Offer strongest match products or services to customer – Business can identify and offer services a customer are most likely interested in product and services using CDP. This helps in customer retention and increase in revenue.
Avaliability of data – Another factor to consider is to see if the data taht will used in the CDP originates in the organization.
Although the choosen CDP platform best fits for the business goals it mainly the people and proccess makes a biger difference in determining the success or failure of the CDP implementaion. Understaing which people, departments or teams will need access to platform and theis usage is crucial before acquiring the CDP platform. Apart from thsi training s to the teams invloved and how their day to day work changes with thew new platform should be given including the tehcnology team for security and technical support.
Hence here are some of the CDP requirements needs to be considered-
CDP platform integrates with the comapny systems – CDP can integrate with other ssytems such as CRM, narketing automation and ecommerce platforms to get the complete view of customer and enable seamless data flow across different departments.
Real-time data processing is possible – Business should be able to respond to customer quickly on their behaviour and personlaised expereince . CDP should be able to process this seamlessly.
Able to structure organization data – Data in the organization may not be structured and come from multiple channels. CDP should be able to organize data in a structured way.
Audience Segmentation – Based on customer location, behaviour and interests, CDP should be able to segment the data. These helps in creating a targetd campaigns and peronlaized messages that relates to specific groups or customers.
Customer journey orchestration – Customer journey orchestration (CJO) is the process of coordinating a customer’s experience in real-time, and driving the customer’s individualized experiences from their first interaction with your brand through purchase and lifetime support.
Data Exports to marketing & advertising platforms – CDP can export customer data to marketing and advertising platforms such as Google Ads, Facebook. This helps in creating an effective campaigns and reach customers across different channels.
Compliance specifically security and privacy – CDP ensures GDPR and CCPA compliance. This helps to build trusts with customers that their personal data is secured and compiant. This avoids any legal issues.
Sitecore CDP allows you to collect, connect and activate customer dataacross all the digital channels for the organization
This guide explains how to create and configure authorization for an automation client in Sitecore AI. It covers the prerequisites, steps to register or configure the client, generating the required credentials, assigning appropriate permissions, and validating authentication. By following this guide, you will enable automation tools, scripts, or external applications to securely authenticate with Sitecore AI APIs while adhering to security best practices and the principle of least privilege.
Create the Client credetntials
To generate the environment specific client credentitals select the project and the environment the Client ID and secret to be created for.
Client ID and secret is deplayed. Client secret cannot be shown again, so note this for future use.
Generating JWT token for automation client
Url – https://auth.sitecorecloud.io/oauth/token
client_id – Use your client id
client_secret – use your client secret
audience – https://api.sitecorecloud.io
Use following cuRL command to run the get the token for this client-
In this blog post we saw how to use Sitecore Grpahql Search query to filter the items.
But search query has issues with results getting same items with different version in Preview mode. This works fine for the published item (edge) as a single version of item is published.
I created a new version of the same item-
Using the same query
# Write your query or mutation here
query SearchQuery($pageSize: Int = 10, ) {
search(
where: {
AND: [
{
name: "_path"
value: "{B08684BB-3CB0-4DFE-A378-054E26ECC5AE}"
operator: CONTAINS
}
{ name: "ProductId", value: "bali-power-bank-3000mah" }
]
}
first: $pageSize
) {
total
results {
id
name
version
url {
path
}
... on Product{
productId{value}
productFeature{value}
}
}
}
}
See the output results in same item with versions available in Sitecore-
{
"data": {
"search": {
"total": 2,
"results": [
{
"id": "8716FE4AD58345589AB04369C39F5CC0",
"name": "bali-power-bank-3000mah",
"version": 2,
"url": {
"path": "/Data/Commerce-Data/Product-Data/bali-power-bank-3000mah"
},
"productId": {
"value": "bali-power-bank-3000mah"
},
"productFeature": {
"value": "UPDATE - official-camera - Product Feature. JIGA power bank is a high-quality battery pack, with all-day powerThe power bank can charge your phone at least 3-5 times,the perfect partner for gamers, camping and business trips."
}
},
{
"id": "8716FE4AD58345589AB04369C39F5CC0",
"name": "bali-power-bank-3000mah",
"version": 1,
"url": {
"path": "/Data/Commerce-Data/Product-Data/bali-power-bank-3000mah"
},
"productId": {
"value": "bali-power-bank-3000mah"
},
"productFeature": {
"value": "official-camera - Product Feature. JIGA power bank is a high-quality battery pack, with all-day powerThe power bank can charge your phone at least 3-5 times,the perfect partner for gamers, camping and business trips."
}
}
]
}
}
}
See the highlighted fields in result. Same ID, multiple result set with different versions. Unfortunately, there is no option here to get the latest version. Sitecore has clarified this and raised a bug for same as of October 2025. this might be resolved in future. The related public reference number is DEVEX-2992.
How to solve this issue- This needs to be handled in headless app.
Headless app needs to filter this for each item and should pick only latest version from the result set for the same item.