HaHa!
Just kidding. It’s not a thing.
Don’t even try.
But if you do get it working, claim your MVP award and let us know how.
~ Jobs come and go. Career don’t. ~
HaHa!
Just kidding. It’s not a thing.
Don’t even try.
But if you do get it working, claim your MVP award and let us know how.
~ Jobs come and go. Career don’t. ~
As of 629 days ago today when Sitecore announced XM Cloud, it has been THE BUZZ around town, I was fortunate enough to be part of the demo team at the time and get my hands dirty with all the tech that was acquired. We were getting ready to integrate with Sitecore before anyone else. We just finished transforming PLAY! Summit from XM/XP to headless and we started headless to XM CLoud right after that. See it here at Sitecore.Demo.XmCloud.PlaySummit.
Still, after not working with XM Cloud daily, I needed to study a bit for the test. Below are my steps:
My Wishlist for Sitecore and XM Cloud:
– Better price
– Better Salespeople
– Appreciate more North American developers
– Un-dockerized code base
– Easier upgrade path from XM Ground
To pass the Sitecore XM Cloud Developer Certification Exam, you must demonstrate critical job-related knowledge, skills, and abilities regarding Sitecore XM Cloud. The eight competencies align with the essential knowledge areas for successful Sitecore XM Cloud development.
The guide below contains the eight competencies for developers certified in Sitecore XM Cloud. Click on each tab for more information and resources.
To be certified in Sitecore XM Cloud, a Developer should be able to describe the developer workflow and manage the architecture of XM Cloud. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to deploy new projects using both the Deploy Application and Sitecore CLI. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to create and manage components. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to use Sitecore Content Serialization (SCS) to manage content and item changes among a team of developers. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to handle webhooks and use the Sitecore APIs. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to create, edit, and publish page designs and components using Pages. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer should be able to configure the environment and CM user security settings, and create and manage users and roles. To meet this competency, you should be able to:
Resources:
To be certified in Sitecore XM Cloud, a developer must be able to create and manipulate items and data templates. To meet this competency, you should be able to:
Resources:
The competencies listed above and the associated practical skills are crucial for being certified as a Sitecore XM Cloud Developer. Be sure you have a thorough understanding of each one and have spent adequate time preparing for the test. If you want to see what questions might be on the certification exam, please refer to the practice questions in this study guide.
Short answer it will not work in the long run.
The first problem I faced was this pop up with group membership error when trying to start.
Found the answer on the interweb.
net localgroup "docker-users" "<user_name>" /add
To create and modify group and add user, you will also need admin access. so keep your IT department on speed dial during this as well.
Even after this, I definitely saw other errors if you don’t have full admin privileges when trying to switch to windows containers, or starting the Docker engine service and during docker compose up.
So, realistically, I would not recommend running docker if you don’t have admin rights. But if you absolutely have to, just keep nagging IT for admin 😀
Last Thursday evening out of the blue, the client asked to see the result count inside of brackets. It is a very intuitive feature that gives the searcher an indication of the big picture when searching and filtering.
The PROBLEM:
The ASK:
We were using the Coveo Atomic component, but there was no reason to not show the results inside brackets as it was the default behavior anywhere else. After much debugging, there was no indication of why the numbers were not within brackets but the client wants what the client wants. so, we took a short and simple way of implementing it using CSS.
.coveo {
.coveo-facet-value-count:before, .coveo-facet-value-count:before {
content: "(";
}
}
This solved all our problems and the client lived happily ever after.
~ Unless you are easily worried about everything, try not to stress. ~
Templates starting with an underscore are considered what kind of template:
Sitecore allows for what kind of template inheritance
What kind of template inheritance is bad?
Avoid what kind of field names?
How can you have duplicate field names?
Why would you limit available commands in the rich text editor?
What does the $name token do?
What does the $date token do?
What does the $now token do?
What is the limit on child items?
What is the limit on item versions?
When looking at the following code, what does mw and mh mean?
@Html.Sitecore().Field(“myImageField”, new {mw=120, mh=120})
What does the code above accomplish?
What does Sitecore call config groups?
What do the layers.config file do?
What’s the default order?
What are the two syntaxes for changing values?
Can Sitecore Rocks show the whole config?
What does Vertical Scaling do?
Where are server roles defined?
What are the ways to go about extending Sitecore?
What can Packages contain?
Users are installed disabled and passwords are reset, true or false?
Where are the modules found?
How are update packages defined?
What can Sitecore Rocks do to help undo a package installation?
Where are site nodes for a multisite environment stored?
Does order matter for Sitecore nodes?
Are sites added before or after the website node?
What is included in the configuration?
In Sitecore 9, is it required to inherit from the standard rendering parameter template?
Are compatible renderings a two-way setting?
Where are rendering parameters stored?
What is used to generate all links?
Why do we generate all links the same way?
Var options = LinkManager.GetDefaultUrlOptions();
LinkManager.GetItemUrl(item, options);
How does one produce translated urls?
What do wildcard items do?
What is a wildcard item?
How are navigation items typically made?
What is the recommended way of getting the sub-items in a branch?
Why does a foreach on a getchildren need Item vs var?
What is recommended as a way of preventing an item showing up in navigation?
What does it mean when Language Embedding is set to “As Needed”?
What foundation is the experience platform built on?
What makes up Sitecore XP?
What is the name of the main screen of Sitecore?
What does the view tab in the Experience Editor do?
When are data and presentation?
As of Sitecore 8.2 what service is now standalone?
What two services makeup xConnect?
What is the url for the Sitecore developer portal?
What is the url for the Sitecore Documentation Site?
What is the url for the Sitecore Developer Network?
What is the url for the Sitecore Knowledge Base?
What is Sitecore’s Youtube Channel called?
Where do you find helix information for Sitecore?
Where is Sitecore’s curated blog?
What is the two main dll’s for Sitecore?
What’s the best way to get the sitecore dlls?
It’s recommending referencing dlls from where?
Can Sitecore Rocks synch folders?
In Sitecore Rocks, what does Mode Mirror do?
In Sitecore ROcks, what does Mode Copy do?
What do you use to get current item?
Where do you put items that need to be access by a URL?
Where do you add buttons to Experience editor?
What does the edit frame do?
Where do the edit frames live?
What character is used to deliminate the field names?
What bulk operations can you do from Search in Sitecore?
What kind of model does Search use?
Name two search engines built into Sitecore?
What is the advantage of Azure Search?
Does sitecore index Data or Html?
Do all search results have urls or presentation details?
Default index configuration indexes what?
What is Sitecore’s basic unit?
What does Sitecore index?
If StorageType = “yes” is set then what?
Name three different types of content in Sitecore can store in the same index?
What is the max number of children?
WIll urls change when items are converted into a bucket?
Who should make buckets?
What means when a standard value item is a bucket?
When do you use Synch – under Buckets?
If an item is hidden, in a bucket does it need to be bucketable to be hidden?
How do you retain parent-child relationships?
How best do you get bucket items?
When does a Linq query run?
How do you do descendent-type searches?
What does GetResult give?
Custom QUery result types can be used in place of what?
Predicate builder lets you do what?
Facets have what?
Why should we use icons?
Why use buckets?
Why some items are not hidden inside a bucket?
How do you get items from a bucket that has thousands of items?
Which dll do you need to do a content search to build a menu?
Which dll do you need to get the model.rederingitem?
Where do we save the default values of an item?
Where should we save shared/common content in multi-site implementation?
Where are Sitecore indexes stored?
/data/indexes folder (I think)
What xml node is used in layers.config to set order?
You have a baby girl at home, but you want her to be potty trained?
You have a narrow garage and don’t have space to get out of your car after you park?
You just got a new phone but now you have to use Bluetooth headphones and they don’t fit inside your ear hole?
These are the problems I can’t help you with today. But I can help you by letting you know how to get a subdomain for your Content Hub instance.
~ If you put all your junk in your garage, you will have no room left for your cars. ~
Getting the entity
IEntity entity = await _connector.Client.Entities.GetAsync(long.Parse(assetId));
assetId can be a string or a long. The string is mostly used when IDs look like an alphanumeric hash. If we want an image with asset Id of 99551 then use long.
Getting a relationship with an entity
IRelation relation = entity.GetRelation("AssetTypeToAsset");
IList<long> values = relation.GetIds();
//if (values.Count == 0) then we know there is no value set, otherwise there is already a value set for that relation
Setting up a related value
IEntity imageAssetEntity = await _connector.Client.Entities.GetAsync("M.AssetType.Custom");
IChildToOneParentRelation assetEntityRelation = await entity.GetRelationAsync<IChildToOneParentRelation>("AssetTypeToAsset");
assetEntityRelation.Parent = imageAssetEntity.Id.Value;
//This will set up the selected asset entity's AssetType as Custom
Set a property for an entity
string alt = item["Alt"] ?? "";
ICultureInsensitiveProperty altProperty = entity.GetProperty<ICultureInsensitiveProperty>("Alt");
altProperty.SetValue(alt);
//This will get the Alt field value of an item from sitecore and update an asset with that value in the Alt property
I am using Content hub 4.2 and the client wants to know the asset ID, but all we have on the front end is the public key. With Anna‘s help, I got the below solution to work.
Step 1: Get the auth token
Make a POST call to https://subdomain.sitecorecontenthub.cloud/api/authenticate
JSON body should look like below
{
"user_name": "topaz.ahmed@perficient.com",
"password": "Vizient+2023"
}
This will return a token like below
{
"token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
Step 2: Search for the public link
Suppose you have a public link that looks like
https://subdomain.sitecorecontenthub.cloud/api/public/content/qwertyuiopasdfghjklzxcvbnm?v=1
make a GET call to the below URL
https://subdomain.sitecorecontenthub.cloud/api/entities/query?query=Definition.Name==’M.PublicLink’ AND FullText==’qwertyuiopasdfghjklzxcvbnm‘&skip=0&take=1
In the header of the call using the token from the previous step as X-Auth-Token
If the public link is found in Content Hub this will return JSON that looks something like this.
{
"items": [
{
"id": 44923,
"identifier": "95HiyeSDa0etMK3ZTMbofQ",
"cultures": [
"en-US"
],
"properties": {
"RelativeUrl": "eaeb36c088054d79b34636ef4e1e73dc",
"Resource": "downloadOriginal",
"ResourceType": "content",
"VersionHash": "f1fd3bd2",
"IsDisabled": false,
"ExpirationDate": null,
"Status": "Completed",
"Progress": "The link is currently active.",
"FileKey": "local-3dc41bebf9eb4788a4e85248efaffb6e",
"ConversionConfiguration": null,
"PublishStatus": null,
"PublishStatusDetails": null
},
"relations": {
"FileToPublicLink": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/FileToPublicLink"
},
"AssetToPublicLink": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/AssetToPublicLink"
},
"ThemeToPublicLinks": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/ThemeToPublicLinks"
},
"OrderToPublicLink": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/OrderToPublicLink"
},
"PageToPublicLink": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/PageToPublicLink"
},
"PublicLinkToWhereUsed": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/PublicLinkToWhereUsed"
},
"PublicLinkToUsage": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/PublicLinkToUsage"
}
},
"created_by": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/6729",
"title": "The user who created the entity"
},
"created_on": "2023-02-28T16:11:16.4232379Z",
"modified_by": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/6",
"title": "The user who last modified the entity"
},
"modified_on": "2023-02-28T16:11:20.7346984Z",
"entitydefinition": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entitydefinitions/M.PublicLink",
"title": "The entity definition for this entity"
},
"copy": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/copy",
"title": "Copy this entity"
},
"permissions": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/permissions",
"title": "The permissions on this entity"
},
"lifecycle": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/lifecycle",
"title": "The lifecycle action for this entity."
},
"saved_selections": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/savedselections",
"title": "The saved selections this entity belongs to"
},
"roles": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/roles",
"title": "Roles for this entity"
},
"annotations": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/annotations",
"title": "Annotations for this entity"
},
"is_root_taxonomy_item": false,
"is_path_root": false,
"inherits_security": true,
"is_system_owned": false,
"version": 2,
"self": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923"
},
"renditions": {},
"public_link": "https://<subdomain>.sitecorecontenthub.cloud/api/public/content/eaeb36c088054d79b34636ef4e1e73dc?v=f1fd3bd2"
}
],
"total_items": 1,
"returned_items": 1,
"offset": 0,
"self": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/query?skip=0&take=1&query=Definition.Name%3D%3D%27M.PublicLink%27%20AND%20FullText%3D%3D%27eaeb36c088054d79b34636ef4e1e73dc%27",
"title": "This collection"
}
}
Find the URL in the AssetToPublicLink relation.
Step 3: Find the asset
Grab the AssetToPublicLink URL from. use the same header as above and make a GET request.
you will a response like below
{
"parents": [
{
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/66666"
}
],
"inherits_security": true,
"self": {
"href": "https://<subdomain>.sitecorecontenthub.cloud/api/entities/44923/relations/AssetToPublicLink"
}
}
And there you go. 66666 is the Asset ID.
Enjoy it while it lasts, I mean until a new version of the API gets released and things change.
~ UPS is better than FEDEX. ~