Sample: Work with Attributes:
'via Blog this'
Tuesday, 30 October 2012
Monday, 8 October 2012
CRM Masthead Customization for Multiple Organizations
CRM Masthead Customization for Multiple Organizations
A few weeks ago, a blog was posted by David Sutton called CRM Masthead Customization, and it was explaining how to customize the masthead in CRM. However if you have multiple Organizations in your CRM environment, the masthead will be added to all Organizations, rather than having a unique masthead for each Organization.Sebastiaan Klaver from Herke ICT Group came up with a solution to this, so that you can have different mastheads for each Organization in your CRM environment.
Sebastiaans method is described below:
To customize the header for MSCRM I used this blog post:
http://www.magnetism.co.nz/blog/10-05-10/CRM_Masthead_Customization.aspx
But i wanted to go further and have a custom masthead logo for each organization in my MSCRM enterprise environment.
To accomplish this you have to complete the following steps:
Create the new header images.
Locate the header definitions in the MSCRM CSS file.
In my environment it was located under e:\inetpub\wwwroot\_common\styles\global-dynamic-styles.css.aspx
There are 2 places that you will need to edit the CSS file; 1 for the background image and 1 for the logo.
- Background-image is defined under “TABLE.ms-crm-MastHead”
- Logo-image is defined under “TD.ms-crm-MastHead-Logo”
To change the CRM logo for each organization, I added an if statement to check the URL, and lookup the organization name which is always displayed in the URL.
Add another else if statement for each MSCRM-organization for both the TABLE and TD.
(In my environment I only changed the logo, but you can do the same for the background.)
Example:
TD.ms-crm-MastHead-Logo
{
height: 58px;
background-repeat: no-repeat;
padding: 0px 15px;
<% if (CrmStyles.IsRightToLeft) { %>
background-position: top right;
background-image: url(/_imgs/masthead_rtl.jpg);
<% } else if (Request.Url.AbsoluteUri.Contains("orgname")) { %>
background-position: top left;
background-image: url(/_imgs/masthead_orgname.jpg);
<% } else { %>
background-position: top left;
background-image: url(/_imgs/masthead.jpg);
<% } %>
}
The code in bold and italics will need to be added where it is shown above, where orgname will be the name of the Organization, and where it has /_imgs/masthead_orgname.jpg will be new location of the masthead logo.
To change the background as well, do the same for the background image in TABLE.ms-crm-MastHead, and specify the background image location.
The header image will change after pressing CRTL+F5 in CRM.
The header image in the sign in page (if using IFD) will also change.
Of course this solution is not officially supported by Microsoft, but I think it’s a good way to play around and give MSCRM a more personal flavor ;-)
Monday, 17 September 2012
rpi-update
https://raw.github.com/Hexxeh/rpi-update/master/rpi-update
#!/bin/bash set -o nounset set -o errexit UPDATE=${UPDATE:-1} UPDATE_URI="https://github.com/Hexxeh/rpi-update/raw/master/rpi-update" ROOT_PATH=${ROOT_PATH:-"/"} BOOT_PATH=${BOOT_PATH:-"/boot"} SKIP_KERNEL=${SKIP_KERNEL:-0} FW_REPO="git://github.com/Hexxeh/rpi-firmware.git" FW_REPOLOCAL="${ROOT_PATH}/root/.rpi-firmware" FW_PATH="${BOOT_PATH}" FW_MODPATH="${ROOT_PATH}/lib/modules" FW_RAM=${1:-0} GITCMD="git --git-dir=\"${FW_REPOLOCAL}/.git\" --work-tree=\"${FW_REPOLOCAL}\"" function detect_split() { if [[ -f "$FW_PATH/start.elf" && ${FW_RAM} -eq 0 ]]; then echo "Autodetecting memory split" FW_RAM=240 for R in 128 192 224 240 do if [[ -f "$FW_PATH/arm${R}_start.elf" ]] then if diff "$FW_PATH/arm${R}_start.elf" "$FW_PATH/start.elf" >/dev/null then FW_RAM=$R break fi fi done fi FW_GPU=$((256-FW_RAM)) } function update_self() { echo "Performing self-update" _tempFileName="$0.tmp" if ! wget --quiet --output-document="${_tempFileName}" "${UPDATE_URI}"; then echo "Failed to download update for rpi-update!" echo "Make sure you have ca-certificates installed and that the time is set correctly" exit 1 fi OCTAL_MODE=$(stat -c '%a' "$0") if ! chmod ${OCTAL_MODE} "${_tempFileName}" ; then echo "Failed: Error while trying to set mode on ${_tempFileName}" exit 1 fi cat > /tmp/updateScript.sh << EOF #!/bin/bash if mv "${_tempFileName}" "$0"; then rm -- "\$0" exec env UPDATE=0 /bin/bash "$0" "$FW_RAM" else echo "Failed!" fi EOF exec /bin/bash /tmp/updateScript.sh } function update_modules { if [[ ${SKIP_KERNEL} -eq 0 ]]; then cp -R "${FW_REPOLOCAL}/modules/"* "${FW_MODPATH}/" find "${FW_REPOLOCAL}/modules" -mindepth 1 -maxdepth 1 -type d | while read DIR; do depmod -b "${ROOT_PATH}" -a $(basename "${DIR}") done fi } function update_sdk { if [[ -f /etc/init.d/vcfiled ]]; then /etc/init.d/vcfiled stop fi ELFOUTPUT=$(readelf -a "${ROOT_PATH}/bin/bash") if [ "${ELFOUTPUT}" != "${ELFOUTPUT/VFP_args/}" ]; then echo "Using HardFP libraries" cp -R "${FW_REPOLOCAL}/vc/hardfp/"* "${ROOT_PATH}/" else echo "Using SoftFP libraries" cp -R "${FW_REPOLOCAL}/vc/softfp/"* "${ROOT_PATH}/" fi cp -R "${FW_REPOLOCAL}/vc/sdk/"* "${ROOT_PATH}/" if [[ -f /etc/init.d/vcfiled ]]; then /etc/init.d/vcfiled start fi } function set_split { cp "${FW_PATH}/arm${FW_RAM}_start.elf" "${FW_PATH}/start.elf" } function update_firmware { cp "${FW_REPOLOCAL}/"*.elf "${FW_PATH}/" cp "${FW_REPOLOCAL}/"*.bin "${FW_PATH}/" if [[ ${SKIP_KERNEL} -eq 0 ]]; then cp "${FW_REPOLOCAL}/"*.img "${FW_PATH}/" else echo "Skipping kernel/modules updated as requested" fi } function finalise { ldconfig -r "${ROOT_PATH}" eval ${GITCMD} rev-parse master > "${FW_PATH}/.firmware_revision" sync } function download_repo { echo "Setting up firmware (this will take a few minutes)" mkdir -p "${FW_REPOLOCAL}" git clone "${FW_REPO}" "${FW_REPOLOCAL}" --depth=1 --quiet RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then echo "Failed to download new firmware files" exit 1 fi } function update_repo { echo "Updating firmware (this will take a few minutes)" eval ${GITCMD} fetch --quiet RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then echo "Failed to download updated firmware files" exit 1 fi eval ${GITCMD} merge origin/master -m "automerge" --quiet RETVAL=$? if [[ ${RETVAL} -ne 0 ]]; then echo "Failed to download updated firmware files" exit 1 fi } function do_backup { cp -a "${FW_PATH}" "${FW_PATH}.bak" cp -a "${FW_MODPATH}" "${FW_MODPATH}.bak" } function do_update { update_firmware update_modules update_sdk set_split finalise echo "If no errors appeared, your firmware was successfully $1" if [[ "${ROOT_PATH}" == "/" ]]; then echo "A reboot is needed to activate the new firmware" fi } if [[ ${EUID} -ne 0 ]]; then echo "This tool must be run as root" exit 1 fi if [[ ${UPDATE} -ne 0 ]]; then echo "Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS" update_self fi if [[ ( "${ROOT_PATH}" == "/" && "${BOOT_PATH}" != "/boot" ) ]] || [[ ( "${BOOT_PATH}" == "/boot" && "${ROOT_PATH}" != "/" ) ]]; then echo "You need to specify both ROOT_PATH and BOOT_PATH, or neither" exit 1 fi if [[ ! -d "${FW_PATH}" ]]; then echo "${FW_PATH} doesn't exist" exit 1 fi if [[ ! -f "${FW_PATH}/start.elf" ]]; then echo "${FW_PATH}/start.elf doesn't exist." exit 1 fi if [[ ! -d "${FW_MODPATH}" ]]; then echo "${FW_MODPATH} doesn't exist" exit 1 fi command -v git >/dev/null 2>&1 || { echo "This tool requires you have Git installed, please install it first" echo "In Debian, try: sudo apt-get install git-core" echo "In Arch, try: pacman -S git" exit 1 } command -v readelf >/dev/null 2>&1 || { echo "This tool requires you have readelf installed, please install it first" echo "In Debian, try: sudo apt-get install binutils" echo "In Arch, try: pacman -S binutils" exit 1 } detect_split if [[ ${FW_RAM} -ne 240 ]] &&[[ ${FW_RAM} -ne 224 ]] && [[ ${FW_RAM} -ne 192 ]] && [[ ${FW_RAM} -ne 128 ]]; then echo "RAM value must be one of: 240, 224, 192, 128" exit 1 fi echo "Using ARM/GPU memory split of ${FW_RAM}MB/${FW_GPU}MB" if [[ -f "${FW_REPOLOCAL}/.git/config" ]]; then update_repo if [[ -f "${FW_PATH}/.firmware_revision" ]] && [[ $(cat "${FW_PATH}/.firmware_revision") == $(eval ${GITCMD} rev-parse master) ]]; then echo "Your firmware is already up to date" set_split finalise else do_update "updated" fi else echo "We're running for the first time" download_repo do_backup do_update "setup" fi
Raspberry pi - Update
- CODE: SELECT ALL
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install git-core
sudo rpi-update
sudo reboot
Monday, 10 September 2012
Unmanage CRM 2011 solution
-- Update the "managed" flag in the database
-- List the managed solutions
select isvisible,IsManaged,Description,UniqueName,* from Solution
where IsManaged = 1 and IsVisible = 1
--
begin transaction
update Solution
set IsManaged = 0
where UniqueName = <solution name to change>
commit transaction
-- List the managed solutions
select isvisible,IsManaged,Description,UniqueName,* from Solution
where IsManaged = 1 and IsVisible = 1
--
begin transaction
update Solution
set IsManaged = 0
where UniqueName = <solution name to change>
commit transaction
Friday, 7 September 2012
Load an external JavaScript file CRM 2011/4
try {
var docs = document.getElementById('eb.script.201200906');
if (docs == null) {
var script = document.createElement('script');
script.id = 'eb.script.201200906';
script.language = 'javascript';
script.src = '/ISV/EB/ScriptFile.js';
document.getElementsByTagName('head')[0].appendChild(script);
var f = function () {
if (event.srcElement.readyState == 'loaded' || event.srcElement.readyState == 'complete')
ScriptStart(); // Entry function
}
script.attachEvent('onreadystatechange', f);
}
}
catch (err) { }
Wednesday, 5 September 2012
CRM 2011: Accessing hidden mappings opportunity/quote/order/invoice
declare @maPID AS NVARCHAR(50)
declare @maPORT as int ; set @maPORT = 5555
-- -------------------------------------------------------
SET @maPID = (SELECT EntityMapId FROM EntityMapBase
WHERE TargetEntityName='quotedetail' AND SourceEntityName='opportunityproduct')
print 'http://' + @@Servername + ':' +
cast(@maPORT as nvarchar(30)) + '/Tools/SystemCustomization/Relationships/Mappings/mappingList.aspx?mappingId=' + @mapid
-- -------------------------------------------------------
SET @maPID = (SELECT EntityMapId FROM EntityMapBase
WHERE TargetEntityName='salesorderdetail' AND SourceEntityName='quotedetail')
print 'http://' + @@Servername + ':' +
cast(@maPORT as nvarchar(30)) + '/Tools/SystemCustomization/Relationships/Mappings/mappingList.aspx?mappingId=' + @mapid
-- -------------------------------------------------------
SET @maPID = (SELECT EntityMapId FROM EntityMapBase
WHERE TargetEntityName='invoicedetail' AND SourceEntityName='salesorderdetail')
print 'http://' + @@Servername + ':' +
cast(@maPORT as nvarchar(30)) + '/Tools/SystemCustomization/Relationships/Mappings/mappingList.aspx?mappingId=' + @mapid
Friday, 25 May 2012
http://mscrmuk.blogspot.com.au/2012/04/crm-email-router-errors-with-adfs.html
- Use regedit to go to the HKLM\System\CurrentControlSet\Services\MSCRMEmail key
- Add a Multi-string (REG_MULTI_SZ) value 'DependOnService'
- Set the value to adfssrv (or add this value if there were already a dependency)
Subscribe to:
Posts (Atom)