Monday, January 24, 2011
Wednesday, January 19, 2011
Java- Connect MS CRM Using CrmDiscoveryService
Type | Value | Description |
AD | 0 | Specifies Active Directory authentication. |
Passport | 1 | Specifies Windows Live ID authentication. |
Spla | 2 | Specifies Internet-Facing Deployment authentication |
1. Active Directory authentication.
try{
String username = "domain\\user";
String password = "password";
String authType = "AD";
String OrganizationName = "orgName";
String hostBame = "http://xxx.xxx.x.xxx";
String CrmDiscoveryURL = hostBame + "/MSCRMServices/2007/"+ authType + "/CrmDiscoveryService.asmx";
CrmDiscoveryURL = CrmDiscoveryURL.toLowerCase();
CrmDiscoveryServiceLocator discoveryServiceLoc = new CrmDiscoveryServiceLocator();
discoveryServiceLoc.setCrmDiscoveryServiceSoapEndpointAddress(CrmDiscoveryURL);
CrmDiscoveryService discoveryService = (CrmDiscoveryService) discoveryServiceLoc;
CrmDiscoveryServiceSoapStub discoveryServiceSoap = (CrmDiscoveryServiceSoapStub) discoveryService.getCrmDiscoveryServiceSoap();
discoveryServiceSoap.setUsername(username);
discoveryServiceSoap.setPassword(password);
RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest();
orgRequest.setUserId(username);
orgRequest.setPassword(password);
RetrieveOrganizationsResponse orgResp = (RetrieveOrganizationsResponse) discoveryServiceSoap.execute(orgRequest);
OrganizationDetail orgInfo = null;
com.microsoft.schemas.crm._2007.CrmDiscoveryService.ArrayOfOrganizationDetail arrayOfDetail= orgResp.getOrganizationDetails();
OrganizationDetail[] orgdetails = arrayOfDetail.getOrganizationDetail();
for (int i = 0; i < orgdetails.length; i++) {
System.out.println("orgdetails[i].getOrganizationName() = "+ orgdetails[i].getOrganizationName());
if (orgdetails[i].getOrganizationName().equalsIgnoreCase(OrganizationName)) {
orgInfo = orgdetails[i];
break;
}
}
int AD = 0;
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.setAuthenticationType(AD);
token.setOrganizationName(OrganizationName);
String CrmServiceUrl = orgInfo.getCrmServiceUrl();
CrmServiceSoapStub adminBinding = (CrmServiceSoapStub) new CrmServiceLocator().getCrmServiceSoap(new URL(CrmServiceUrl));
adminBinding.setHeader("http://schemas.microsoft.com/crm/2007/WebServices","CrmAuthenticationToken", token);
adminBinding.setUsername(username);
adminBinding.setPassword(password);
WhoAmIRequest whoRequest = new WhoAmIRequest();
WhoAmIResponse whoResp = (WhoAmIResponse) adminBinding.execute(whoRequest);
String UserId = whoResp.getUserId();
System.out.println("userid = "+ UserId);
}catch(Exception e){
e.printStackTrace();
}
2. Passport Authentication
Sample code
String authType = "Passport";
CrmDiscoveryServiceLocator discoveryServiceLoc = new CrmDiscoveryServiceLocator();
discoveryServiceLoc.setCrmDiscoveryServiceSoapEndpointAddress("http://" + hostName + "/MSCRMServices/2007/" + authType + "/CrmDiscoveryService.asmx");
CrmDiscoveryService discoveryService = (CrmDiscoveryService) discoveryServiceLoc;
CrmDiscoveryServiceSoapStub discoveryServiceSoap = (CrmDiscoveryServiceSoapStub) discoveryService.getCrmDiscoveryServiceSoap();
// Retrieve Policy Request
RetrievePolicyRequest policyRequest = new RetrievePolicyRequest();
RetrievePolicyResponse policyResponse = (RetrievePolicyResponse) discoveryServiceSoap.execute(policyRequest);
String passportTicket = getPassportTicket(policyResponse.getPolicy(),userName, password);
RetrieveCrmTicketRequest crmTicketRequest = new RetrieveCrmTicketRequest();
crmTicketRequest.setOrganizationName(organization);
crmTicketRequest.setPassportTicket(passportTicket);
crmTicketResponse = (RetrieveCrmTicketResponse) discoveryServiceSoap.execute(crmTicketRequest);
if (crmTicketResponse != null) {
CrmAuthenticationToken token = new CrmAuthenticationToken();
int PASSPORT = 1;
token.setAuthenticationType(
PASSPORT
);
token.setCallerId("00000000-0000-0000-0000-000000000000");
token.setOrganizationName(crmTicketResponse.getOrganizationDetail().getOrganizationName());
token.setCrmTicket(crmTicketResponse.getCrmTicket());
String crmServiceUrl = crmTicketResponse.getOrganizationDetail().getCrmServiceUrl();// we can store it in db w.r.t user,pass,org and retrieve
CrmServiceSoapStub crmServiceSoapStub = (CrmServiceSoapStub) new CrmServiceLocator().getCrmServiceSoap(new URL(crmServiceUrl));
crmServiceSoapStub.setHeader("http://schemas.microsoft.com/crm/2007/WebServices","CrmAuthenticationToken", token);
WhoAmIRequest whoRequest = new WhoAmIRequest();
whoRequest.setOptionalParameters(new OptionalParameter[] {});
WhoAmIResponse whoResp = (WhoAmIResponse) crmServiceSoapStub.execute(whoRequest);
System.out.println("----------getUserId()----------------->"+ whoResp.getOrganizationId());
}
private String getPassportTicket(String policy, String userName, String password) {
String ticket= null;
try{
String passportDomain = "crm.dynamics.com";//partner
String environment = "Production";
ticket = new MSLogonManager().logon(userName, password, passportDomain, policy, environment);
System.out.println("ticket = "+ticket);
}catch(Exception e){
e.printStackTrace();
}
return ticket;
}
3. IFD Authentication
String hostBame = "https://xx.xxxx.xxx";
String OrganizationName = "orgName";
String username = "usernam";
String password = "password";
String CrmDiscoveryURL = hostBame+"/mscrmservices/2007/spla/crmdiscoveryservice.asmx";
CrmDiscoveryServiceLocator discoveryServiceLoc = new CrmDiscoveryServiceLocator();
discoveryServiceLoc.setCrmDiscoveryServiceSoapEndpointAddress(CrmDiscoveryURL);
CrmDiscoveryService discoveryService = (CrmDiscoveryService) discoveryServiceLoc;
CrmDiscoveryServiceSoapStub discoveryServiceSoap = (CrmDiscoveryServiceSoapStub) discoveryService.getCrmDiscoveryServiceSoap();
discoveryServiceSoap.setUsername(username);
discoveryServiceSoap.setPassword(password);
RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest();
orgRequest.setUserId(username);
orgRequest.setPassword(password);
RetrieveOrganizationsResponse orgResp = (RetrieveOrganizationsResponse) discoveryServiceSoap.execute(orgRequest);
OrganizationDetail orgInfo = null;
com.microsoft.schemas.crm._2007.CrmDiscoveryService.ArrayOfOrganizationDetail arrayOfDetail = orgResp.getOrganizationDetails();
OrganizationDetail[] orgdetails = arrayOfDetail.getOrganizationDetail();
for (int i = 0; i < orgdetails.length; i++) {
System.out.println(" getIFDBindingToCrm orgdetails[i].getOrganizationName() "+ orgdetails[i].getOrganizationName());
if (orgdetails[i].getOrganizationName().equalsIgnoreCase(OrganizationName)) {
orgInfo = orgdetails[i];
break;
}
}
RetrieveCrmTicketRequest crmTicketRequest = new RetrieveCrmTicketRequest();
crmTicketRequest.setOrganizationName(OrganizationName);//orgInfo.getOrganizationName());
crmTicketRequest.setUserId(username);
crmTicketRequest.setPassword(password);
RetrieveCrmTicketResponse crmTicketResponse = (RetrieveCrmTicketResponse) discoveryServiceSoap.execute(crmTicketRequest);
if (crmTicketResponse != null) {//
int IFD = 2;
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.setAuthenticationType(IFD);
token.setOrganizationName(orgInfo.getOrganizationName());
token.setCrmTicket(crmTicketResponse.getCrmTicket());
String CrmServiceUrl = orgInfo.getCrmServiceUrl();
System.out.println("CrmServiceUrl-" + CrmServiceUrl);
CrmServiceSoapStub adminBinding = (CrmServiceSoapStub) new CrmServiceLocator().getCrmServiceSoap(new URL(CrmServiceUrl));
adminBinding.setHeader("http://schemas.microsoft.com/crm/2007/WebServices","CrmAuthenticationToken", token);
adminBinding.setUsername(username);
adminBinding.setPassword(password);
WhoAmIRequest whoRequest = new WhoAmIRequest();
WhoAmIResponse whoResp = (WhoAmIResponse) adminBinding.execute(whoRequest);
String UserId = whoResp.getUserId();
System.out.println("UserId="+UserId);
}
--------
Edited: Mar 20, 2013
In the above code, we have used the MSLogonManager class(its the bridge to dll file which is created using .net sdk) to get the ticket.
Another way to get the ticket is:
#2. we can create a proxy service that handles auth and the connection and get the ticket using the CRM services in .NET and then you define your web service SOAP interface you want Java to use.
#3. Use the following xml request.. this is get by http tracker
private String getPassportTicket(String policy, String userName, String password) {
String
ticket
= null;
try{
URL url = new URL( "https://login.live.com/RST2.srf" );
HttpURLConnection rc = (HttpURLConnection)url.openConnection();
rc.setRequestMethod("POST");
rc.setDoOutput( true );
rc.setDoInput( true );
rc.setRequestProperty( "Content-Type", "text/xml; charset=utf-8" );
String reqStr = new String(" "xmlns:wst=\"http://schemas.xmlsoap.org/ws/2005/02/trust\"> "+
" "+
"http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue "+
"HTTPS://login.live.com:443//RST2.srf "+
""+
""+userName+" "+
""+password+" "+
" "+
" "+
" "+
""+
""+
"http://schemas.xmlsoap.org/ws/2005/02/trust/Issue "+
""+
""+
"passportDomain "+
" "+
" "+
" "+
" "+
" "+
" ");
int len = reqStr.length();
rc.setRequestProperty( "Content-Length", Integer.toString( len ) );
rc.connect();
OutputStreamWriter out = new OutputStreamWriter( rc.getOutputStream() );
out.write( reqStr, 0, len );
out.flush();
InputStreamReader read = new InputStreamReader( rc.getInputStream() );
StringBuffer sb = new StringBuffer();
int ch = read.read();
while( ch != -1 ){
sb.append((char)ch);
ch = read.read();
}
String response = sb.toString();
read.close();
rc.disconnect();
ticket = response.substring(response.indexOf("")+ "".length(),
response.indexOf(" "));
System.out.println("passportTicket = "+result);
return ticket;
}
Monday, January 17, 2011
Microsoft Dynamics CRM 2011 beta (5.0) Released
Version is 05.00.9585.101
Date Published : 9/17/2010
The Microsoft Dynamics CRM 2011 Beta is available for download and evaluation. Product keys are provided in the Readme file.
More Details Go To Microsoft Dynamics CRM 2011 Beta
Date Published : 9/17/2010
The Microsoft Dynamics CRM 2011 Beta is available for download and evaluation. Product keys are provided in the Readme file.
More Details Go To Microsoft Dynamics CRM 2011 Beta
Wednesday, January 12, 2011
Blackberry failed to associate with the network
This error comes when try to set up WiFi on a blackberry bold device.
Solved by applying the following solution from blackberry forums
"the first thing to do is a battery pop reboot. With power ON, remove the back cover and pull out the battery. Wait about a minute then replace the battery and cover. Power up and wait patiently through the long reboot -- ~5 minutes. See if things have returned to good operation."
Solved by applying the following solution from blackberry forums
"the first thing to do is a battery pop reboot. With power ON, remove the back cover and pull out the battery. Wait about a minute then replace the battery and cover. Power up and wait patiently through the long reboot -- ~5 minutes. See if things have returned to good operation."
Blackberry device failed to acquire an IP address
This error comes when try to set up WiFi on a blackberry bold device.
Solved by applying the following solution from blackberry forums
"the first thing to do is a battery pop reboot. With power ON, remove the back cover and pull out the battery. Wait about a minute then replace the battery and cover. Power up and wait patiently through the long reboot -- ~5 minutes. See if things have returned to good operation."
Edit: Feb 9, 2011
Today I faced this same issue again and the above solution didn't work for me :(
After few tries, I tried with restarting the wifi modem and try to connect wifi from device.. Then its connected sucessfully..:))
Solved by applying the following solution from blackberry forums
"the first thing to do is a battery pop reboot. With power ON, remove the back cover and pull out the battery. Wait about a minute then replace the battery and cover. Power up and wait patiently through the long reboot -- ~5 minutes. See if things have returned to good operation."
Edit: Feb 9, 2011
Today I faced this same issue again and the above solution didn't work for me :(
After few tries, I tried with restarting the wifi modem and try to connect wifi from device.. Then its connected sucessfully..:))
How to restart blackberry bold
ALT + Right aA^ + DEL
Monday, January 3, 2011
Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/usr/lib/info/dns.so (file not found).
Solved this warning by copy-paste the same file from "4.2 (8C134)" folder
Subscribe to:
Posts (Atom)