Wednesday, May 30, 2012

IIS–migrating site settings from one server to another

Here is a simple way to migrate your sites and app-pools from one server to another (I was setting up a new dev machine for myself)

Export app-pools and sites from source machine:

%windir%\system32\inetsrv\appcmd list apppool /config /xml > c:\apppools.xml

%windir%\system32\inetsrv\appcmd list site /config /xml > c:\sites.xml

Import app-pools and sites onto destination machine:

%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml

%windir%\system32\inetsrv\appcmd add site /in < c:\sites.xml

Note:

When you import the app-pool, you will need to edit the apppools.xml file to remove all those app-pools that have already been defined on your destination computer (eg: DefaultAppPool)

When you import the sites, you may get errors, just delete the sites that cause the errors and reimport the sites.xml file.

Note 2:

If you need to export only a single site use the following command:

appcmd list SITE /site.name:SITENAME /config /xml > c:\SITENAME.xml

Wednesday, May 16, 2012

Biztalk–pipeline.exe error: System cannot find the file specified

If the error is being thrown from mscorlib, then check the path to the pipeline (btp) file. Also check the path to the input file. (I normally provide the full path to the files).

If the error is being thrown from your custom dll, then make sure that any libraries that you are referencing are installed in the GAC.

Error message:

Message:        The system cannot find the file specified.
HRESULT:        80070002

Monday, May 07, 2012

BTSScnSSOApplicationConfig–Storing application configuration in BizTalk SSO

There are 2 tools that you use to manage your application data: SsoManage.exe and BTSScnSSOApplicationConfig.exe.

SsoManage.exe can be found at “C:\Program Files\Common Files\Enterprise Single Sign-On”

But for testProperty, you need to actually build it. Do this by browsing to “BT Server\MSI\Program Files\SDK\Scenarios\Common\SSOApplicationConfig\bin” folder (the folder is extracted when you unzip the Developer edition of BizTalk).

Once in the SSOApplicationConfig folder, run “Setup.Bat”, which will build “BTSScnSSOApplicationConfig.exe” for you.

Commands:

SsoManage:

SsoManage uses an xml file to define an application and a list of config properties. Here is an example:

<?xml version="1.0" encoding="utf-8"?>
<sso>
    <application name="MyTestApp">
        <description>My first app</description>
        <appUserAccount>BizTalk Application Users</appUserAccount>
        <appAdminAccount>BizTalk Server Administrators</appAdminAccount>
        <field ordinal="0" label="dummyDoNotUseOrDelete" masked="no" />
        <field ordinal="1" label="testProperty" masked="no" />
        <flags configStoreApp="yes" allowLocalAccounts="yes" enableApp="yes" />
    </application>
</sso>

You import the XML using the SsoManage –CreateApp “xmlfile” command.

BTSScnSSOApplicationConfig:

And you set property values using:

btsscnssoapplicationconfig -set MyTestApp "ConfigProperties" "testProperty" "testConnectionString"

And you get property values using:

btsscnssoapplicationconfig -get MyTestApp "ConfigProperties" "testProperty"

Using DebugView with BizTalk for debugging

DebugView is used to view trace messages output by an application on Windows. (get it from:http://technet.microsoft.com/en-us/sysinternals/bb896647).

Once you have downloaded and have DebugView running, you need to instrument your BizTalk process to perform tracing. The easiest way to do this, is to insert an Expression shape onto your orchestration and add the following code into the expression:

System.Diagnostics.Trace.WriteLine("Hello World");

In DebugView, make sure that you have capturing enabled for Global Win32 (“Capture” ==> “Capture Global Win32”). When you start the capture, you should see trace information.

Setting up GacUtil as part of your post build step

Here is a simple set of commands to get GacUtil to run as part of the post-build step (via the project properties dialog)

set var="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\gacutil.exe" /i "$(TargetPath)" /f
echo running gacutil
echo %var%

Friday, April 27, 2012

Entity type codes in CRM Dynamics

You can get the entity type codes on MSDN. (http://msdn.microsoft.com/en-us/library/bb887791.aspx, note this is from CRM 4.0 documentation, but valid for CRM 2011 too)

Another way you can get them is through the CRM database using the following query:

SELECT ObjectTypeCode,Name
FROM
ENTITYVIEW
order BY ObjectTypeCode

The above is the only way to get entity type-codes for custom entities.

1    Account
2    Contact
3    Opportunity
4    Lead
5    Annotation
6    BusinessUnitMap
7    Owner
8    SystemUser
9    Team
10    BusinessUnit
11    PrincipalObjectAccess
12    RolePrivileges
13    SystemUserLicenses
14    SystemUserPrincipals
15    SystemUserRoles
16    AccountLeads
17    ContactInvoices
18    ContactQuotes
19    ContactOrders
20    ServiceContractContacts
21    ProductSalesLiterature
22    ContactLeads
23    TeamMembership
24    LeadCompetitors
25    OpportunityCompetitors
26    CompetitorSalesLiterature
27    LeadProduct
28    RoleTemplatePrivileges
29    Subscription
30    FilterTemplate
31    PrivilegeObjectTypeCodes
32    SalesProcessInstance
33    SubscriptionSyncInfo
35    SubscriptionTrackingDeletedObject
36    ClientUpdate
37    SubscriptionManuallyTrackedObject
40    TeamRoles
41    PrincipalEntityMap
42    SystemUserBusinessUnitEntityMap
43    PrincipalAttributeAccessMap
44    PrincipalObjectAttributeAccess
112    Incident
123    Competitor
126    DocumentIndex
127    KbArticle
129    Subject
132    BusinessUnitNewsArticle
135    ActivityParty
150    UserSettings
1001    ActivityMimeAttachment
1002    Attachment
1003    InternalAddress
1004    CompetitorAddress
1006    CompetitorProduct
1010    Contract
1011    ContractDetail
1013    Discount
1016    KbArticleTemplate
1017    LeadAddress
1019    Organization
1021    OrganizationUI
1022    PriceLevel
1023    Privilege
1024    Product
1025    ProductAssociation
1026    ProductPriceLevel
1028    ProductSubstitute
1030    SystemForm
1031    UserForm
1036    Role
1037    RoleTemplate
1038    SalesLiterature
1039    SavedQuery
1043    StringMap
1055    UoM
1056    UoMSchedule
1070    SalesLiteratureItem
1071    CustomerAddress
1072    SubscriptionClients
1075    StatusMap
1080    DiscountType
1082    KbArticleComment
1083    OpportunityProduct
1084    Quote
1085    QuoteDetail
1086    UserFiscalCalendar
1088    SalesOrder
1089    SalesOrderDetail
1090    Invoice
1091    InvoiceDetail
1111    SavedQueryVisualization
1112    UserQueryVisualization
1113    RibbonTabToCommandMap
1115    RibbonContextGroup
1116    RibbonCommand
1117    RibbonRule
1120    RibbonCustomization
1130    RibbonDiff
1140    ReplicationBacklog
1200    FieldSecurityProfile
1201    FieldPermission
1202    SystemUserProfiles
1203    TeamProfiles
2000    AnnualFiscalCalendar
2001    SemiAnnualFiscalCalendar
2002    QuarterlyFiscalCalendar
2003    MonthlyFiscalCalendar
2004    FixedMonthlyFiscalCalendar
2010    Template
2011    ContractTemplate
2012    UnresolvedAddress
2013    Territory
2020    Queue
2027    License
2029    QueueItem
2500    UserEntityUISettings
2501    UserEntityInstanceData
3000    IntegrationStatus
3231    ConnectionRole
3232    ConnectionRoleAssociation
3233    ConnectionRoleObjectTypeCode
3234    Connection
4000    Equipment
4001    Service
4002    Resource
4003    Calendar
4004    CalendarRule
4005    ResourceGroup
4006    ResourceSpec
4007    ConstraintBasedGroup
4009    Site
4010    ResourceGroupExpansion
4011    InterProcessLock
4023    EmailHash
4101    DisplayStringMap
4102    DisplayString
4110    Notification
4200    ActivityPointer
4201    Appointment
4202    Email
4204    Fax
4206    IncidentResolution
4207    Letter
4208    OpportunityClose
4209    OrderClose
4210    PhoneCall
4211    QuoteClose
4212    Task
4214    ServiceAppointment
4215    Commitment
4230    UserQuery
4250    RecurrenceRule
4251    RecurringAppointmentMaster
4299    EmailSearch
4300    List
4301    ListMember
4400    Campaign
4401    CampaignResponse
4402    CampaignActivity
4403    CampaignItem
4404    CampaignActivityItem
4405    BulkOperationLog
4406    BulkOperation
4410    Import
4411    ImportMap
4412    ImportFile
4413    ImportData
4414    DuplicateRule
4415    DuplicateRecord
4416    DuplicateRuleCondition
4417    ColumnMapping
4418    PickListMapping
4419    LookUpMapping
4420    OwnerMapping
4423    ImportLog
4424    BulkDeleteOperation
4425    BulkDeleteFailure
4426    TransformationMapping
4427    TransformationParameterMapping
4428    ImportEntityMapping
4500    RelationshipRole
4501    RelationshipRoleMap
4502    CustomerRelationship
4503    CustomerOpportunityRole
4567    Audit
4600    EntityMap
4601    AttributeMap
4602    PluginType
4603    PluginTypeStatistic
4605    PluginAssembly
4606    SdkMessage
4607    SdkMessageFilter
4608    SdkMessageProcessingStep
4609    SdkMessageRequest
4610    SdkMessageResponse
4611    SdkMessageResponseField
4613    SdkMessagePair
4614    SdkMessageRequestField
4615    SdkMessageProcessingStepImage
4616    SdkMessageProcessingStepSecureConfig
4618    ServiceEndpoint
4700    AsyncOperation
4702    WorkflowWaitSubscription
4703    Workflow
4704    WorkflowDependency
4705    IsvConfig
4706    WorkflowLog
4707    ApplicationFile
4708    OrganizationStatistic
4709    SiteMap
4710    ProcessSession
4800    WebWizard
4802    WizardPage
4803    WizardAccessPrivilege
4810    TimeZoneDefinition
4811    TimeZoneRule
4812    TimeZoneLocalizedName
7100    Solution
7101    Publisher
7102    PublisherAddress
7103    SolutionComponent
7105    Dependency
7106    DependencyNode
7107    InvalidDependency
8000    Post
8001    PostRole
8002    PostRegarding
8003    PostFollow
8005    PostComment
8006    PostLike
9100    Report
9101    ReportEntity
9102    ReportCategory
9103    ReportVisibility
9104    ReportLink
9105    TransactionCurrency
9106    MailMergeTemplate
9107    ImportJob
9333    WebResource
9502    SharePointSite
9508    SharePointDocumentLocation
9600    Goal
9602    GoalRollupQuery
9603    Metric
9604    RollupField

Thursday, April 19, 2012

Dynamics CRM–Add new from sub grid causes Insufficient Permissions error

If you get the “Insufficient Permissions” error when clicking on “Add New” from within a sub-grid of an entity (eg: you are in the form for an Account entity, and you click on Opportunity node and try and create a new opportunity), then you probably are missing read permissions on the “Attribute Map”.
Note: If you turn on tracing, you will see the error: “Error Details: Principal user (Id=GUID, type=8) is missing prvReadAttributeMap privilege”.

To get around this issue, you need to check the “Security Role” that that person is in and make sure that under the “Customization” tab, the “Attribute Map” entity has at least “Read” access.

image

Wednesday, April 18, 2012

CRM tracing

CRM tracing can be enabled via the registry. Here is the script:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM]
"TraceEnabled"=dword:00000001
"TraceRefresh"=dword:00000001

Copy the above code into a text file and rename the file to “.reg”. Run the file and tracing will be enabled.

The trace files are written to the folder: “C:\Program Files\Microsoft Dynamics CRM\Trace”.

To disable tracing use the following code:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM]
"TraceEnabled"=dword:00000000
"TraceRefresh"=dword:00000000

You should be able to enable disable tracing through the use of Powershell scripts, but I could never get it working. Here is the code I wrote (that doesn’t seem to work):

Add-PSSnapin Microsoft.Crm.PowerShell

$input = Read-Host "Enable/Disable tracing (e/d)";

Write-Host "Running....";

if ($input.ToUpper() -eq "E")
{
    $setting = Get-CrmSetting TraceSettings
    $setting.Enabled="True";
    $setting.Categories="*:Verbose";
    Set-CrmSetting $setting;
    Write-Host "Trace folder: c:\Program Files\Microsoft Dynamics CRM\Trace"
}
elseif ($input.ToUpper() -eq "D")
{
    $setting = Get-CrmSetting TraceSettings
    $setting.Enabled="False";
    Set-CrmSetting $setting;
}
Write-Host "Tracesettings: ";
Get-CrmSetting TraceSettings;

Read-Host "Press any key to continue....";

Tuesday, April 17, 2012

DPM 2012–Powershell scripts

To run DPM 2012 powershell scripts from machines other than the DPM server, you need to install the DPM Remote Administration component:

image

And for the scripts to run, you need to import the DPM powershell module using the following script:

$installPath = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft Data Protection Manager\Setup" "UIInstallPath").UIInstallPath
$dpmModuleFullPath = $installPath + "Modules\DataProtectionManager\DataProtectionManager.psd1"
Import-Module $dpmModuleFullPath

Sunday, April 15, 2012

Car seat inspection stations

I was looking for baby car seat inspection stations in Douglas County in Colorado and came across the NHTSA’s Inspection Station Location web-page, which is a very useful resource to find inspection stations across the country.

http://www.nhtsa.gov/cps/cpsfitting/index.cfm

Also, here is the list of the currently rated car-seats by the NHTSA. If you use the link, you can sort/manipulate/duplicate the worksheet directly: https://docs.google.com/spreadsheet/ccc?key=0AjvtUeIvT94wdDFlWThFV3c3RUZsVENtcFVaNkhRenc