Pages

22 August, 2025

Coveo for Sitecore - {"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}

Recently, one of our client reported frequent error logs from Coveo. It was mostly for the Coveo view analytics request which returns bad request with the below error. 

View Request: /coveo/rest/ua/v15/analytics/view?visitor=

{"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}

We enabled the Coveo for Sitecore debug logs in \App_Config\Include\Coveo\Coveo.SearchProvider.Custom.config file. 


By enabling the debug log, it spit a huge amount of data to analyze. Upon checking one of the failure, we found the request header Referrer was having the URL with the correct format. 


We also found that user agent was always Android and that too version 9 or 10 which is pretty old. Either someone is using an old phone or someone is sending malicious requests using old user agents. 

When reaching out to Coveo support, they provided an assembly which can spit the payload also in the logs. After placing the assembly, we analyzed the payload and the referrer attribute was having Google App user agent. This referrer attribute which is in Coveo payload is different from the actual request. 

"referrer":"android-app://com.google.android.googlequicksearchbox/"

This is not having a right URL format so Coveo is responding with bad request. This Coveo payload referrer is injected by Coveo JavaScript framework. 

We do have Cloudflare as our edge layer but adding a rule to transform the referrer header may not work for Coveo payload. All the data is sent to Coveo support for further analysis. Waiting for their response. 

Regarding this referrer URL, Google provides the following information.

The android-app://com.google.android.googlequicksearchbox/ referrer indicates that a user has arrived on your site from the Google Search app on an Android device.
  • This happens when a user clicks a search result link from within the Google Search app, rather than from a standard web browser.

  • The android-app:// URI scheme identifies the referrer as an Android application.

  • com.google.android.googlequicksearchbox is the unique package name for the Google Search app on Android.

  • This traffic is essentially organic search traffic, and should be classified as such in your analytics.

25 April, 2025

XM to XM Cloud Migration tool - 2.1 - Using Command Line (CLI)

XM to XM Cloud Migration tool has two ways to use. GUI and CLI. In this blog post, we will go through CLI. 

CLI uses the same appsettings.json file which was created using GUI or it can be manually created for CLI usage. 

Content Command


Executing .\XMMigration.exe content will use the existing appsettings config and migrate the content.



Similarly, CLI can be used to migrate the users. In the below section, all the available commands and sub commands are listed.

Show help and usage information

 -?, -h, --help

Users Command


Retrieve domains from source instance. 
--retrieve-domains

Migrate users by passing domains (comma separated).
--migrate-userdomains <migrate-userdomains>

Username to Sitecore CM login of source instance.
--source-username <source-username>

Password to Sitecore CM login of source instance.
--source-password <source-password>

Show help and usage information.
-?, -h, --help


As a sample, to retrieve all the users under Sitecore domain, 

.\XMMigration.exe users --migrate-userdomains sitecore

Happy Migrating!!!

03 April, 2025

XM to XM Cloud Migration tool - 2.1 - Using GUI

XM to XM Cloud Migration tool has two ways to use. GUI and CLI. In this blog post, we will go through GUI. 

When we open the GUI app, it gives an option to choose Content and Media and/or Users. When users are selected to migrate, it will take the user email and invite them to the Sitecore Cloud Portal. 


In the next screen, we have the options to enter the Source CM Url, and an admin username and password. 


In the next screen, target XM Cloud details are provided. XM Cloud Environment ID, CM base URL, Client ID and Client Secret. In this screen, there is a clear instruction on where to get these details in XM Cloud application. Please note that credentials should be Organization credentials as it needs that level access to invite the users to the Cloud portal. 


If the source environment details are correct, then we will see the source content tree in the next screen. We can select the content, media, templates. Please avoid any items which are available out of the box in the target system. 

When we select Templates and Content, this tool automatically changes the order to migrate Templates first and then migrate the Content. 


In the next screen, if all the details are valid, we will get the success confirmation. If not, we will get failure to connect details.




Once we click on Migrate, tool will start doing the magic of extracting the content from the source environment as Protobuf method as it is a faster serialization mechanism, split it into small batches (RAIF) and migrate it to XM Cloud.


If everything goes well, we will get the success message and content will be migrated to the XM Cloud.


Appsettings.json

Whatever value which is entered via GUI are stored in Appsettings.json file. The same file can be used for migrating the content using CLI. We will discuss in another blog post on CLI. 

Happy Migrating!!!

blockquote { margin: 0; } blockquote p { padding: 15px; background: #eee; border-radius: 5px; } blockquote p::before { content: '\201C'; } blockquote p::after { content: '\201D'; }