Thursday, September 25, 2008

Oracle World 2008, 9/25, 10:30am

Siebel Integration Options

Web svc usage has grown exponentially, connectors have declined rapidly. Connectors are likely to be removed in future versions. CORBA on the way out as well since its been replaced by Java.

MSMQ is not being developed any further.

MQSeries is very popular with developments for dynamic queuing. Customer base moving toward JMS and Websphere MQ.

Java Business Service has growing use from customers and leverage classes deployed on app servers.

JMS is the Oracle preferred solution for Reliable Messaging. Also IBM preferred solution.

UI Data Adapter for putting a diff't front end Siebel. Rapid solution development.

Web Services is of two flavors: ASI (for CRUD basic functions) and Functional (to expose enterprise specific services and processes).

SOA Suite integration topology: JMS Messges & Web Service Calls to a SOA Suite w/ ESB

BI Publisher allows for report development that is not dependent on a new compile on srf. Has same benefits of actuate (context/view specific). Enabled via web services.

Siebel Enterprise Manager v1 proposed features:
  • ADM - EM integration
  • Multi-server install
  • Server/Enterprise cloning
  • Configuration audit & rollback

Integration evolution:

Siebel EAI has limited standards support (lots of 1.0 versions). This indicates an old stack.

Looking to move to Web Logic Server to be the outer face of Siebel EAI with wider standards support (OASIS 2004, OASIS 2006, WS_Trust 1.3, HTTP Publish/Subscribe)

Siebel EAI stack is being frozen for new functionality while Web Logic Server infrastructure is built out.

Oracle World 2008, 9/25, 9am

Enterprise 2.0: New face of CRM





"post comment"?





"the groundswell is: a social trend in which people use technologies to get things they need tfrom each other, rather than from traditional institutions like corporations" Charlene Li





HBR 2006 study: 52% have trouble populating/maintaining data, 41% getting user acceptance





social computing does not require any training





"Adaptive Path" camera analogy





Siebel 8.0 Task Based Interface, provides guidance and highlites areas to complete





ipod analogy: ipod itself is easy, simple, limited but itunes provides much more functionality





ipod them extended to CRM gadgets. most basic, most easily consumed functions. more complex interactions are done in the app and is only a click away.





gadgets are in beta (Mandeep.Bhullar@oracle.com)





If you click the phone number, the click is captured in crm w/ time of call. call service is in the cloud and rings your own mobile if it is registered in the service. All visibilty rules are applied.





Gadgets are based on Adobe Air (mac, windows, linux) , not google desktop





For the browser, igoogle or flash



Contact Gadget: your contacts, click to talk, you get voice analytics which will determine best time to call. Contacts can be categorized and tagged, social networks can be searched. Search window does predictive searching. Searches are captured as well to get trends. For example, doing a search on a problem.





Improving the interface: old way: process->data-> technology. new way: experience->features->technology = Process Centric to User Centric design





Report Less, Sell More





Radar Demo: shows contacts and when they were last contacted in a graph. quadrants include new customers, prospects, active, inactive to visually see which contacts need to be called. Amazing! Can be extended to service requests for aging service requests. had a rollo-dex interface for contacts based on Adobe Flex.























oracle has a twitter channel

given the volume of information using blogs, twitter, etc. how can it all be consumed? the demo of the oracle flex view of tag clouds to view what people are saying about your product. can also be used to look inward at what sales people are saying about deals. can also be pointed to email to scan headers and jog memory regarding conversations.

key themes: community, collaboration, content

Wednesday, September 24, 2008

Oracle World 2008, 9/24, 1pm

SARM BEST PRACTICES

Siebel Application Response Management
Should help address these questions:
*where is the bottleneck for transaction x by user y
*which screen/view/bizcomp/script/wf were involved
*how much cpu and memory was consumed
*how many times were vaious components invoked
*how has transaction processiona nd resource consumption changed from release to release

SARM consists of framework, instrumentation, and tools
Oracle Enterprise Manager - management of the entire stack (app, middle, db) became available for Siebel 7.7 and up

Siebel Transaction Diagnostic Tool
*guidance: turn on SARM, level 1 w/ no overhead
*sarm is saved into a memory buffer to alleviate disk IO
*sarm data is flushed into the siebel file system in binary which can be converted to csv post processing (command line tool)
*sarm takes 3 to 4 % cpu
*sarm calls are < 40 microseconds per call
*based on benhcmark with 500 concurrent users, 30 seconds think time, on call center

sarm parameters set on siebel server, environment variables set on web and app server
0-off
1-monitoring
2-diagnostic
buffer default: 5,000,000 bytes
flush period: 3 (mins) default
max files: 4 default
file size: default 15,000,000 bytes

level 1 is considered best practice, you want it turned on for the obj manager that end users interact with

siebel 7.5, requires a bounce of servers.. later versions do not require
siebel 8 allows you to turn it on for a specific user

Best practices:
Use SARM throughout app lifecycle
Use SARM during pre-prod load tests
Use SARM for monitoring in production
Take SARM snapshots periodically (before a change to the prod environment) for comparisons

DEMO: featuring oracle enterprise manager, to find slow performance by user CCHENG
*report generated based on filtering on start/end dates showing summary of performance of each transaction request
*each sarm request can be drilled down to get to the bottleneck but cannot get to the sql statement by drilldown, but its in progress for a future release.
*for now, use sarm id to correlate to generated sql.
*if a scripting issue, the SARM tool will indicate script name!

Oracle World 2008, 9/24, 1030 am

Partner Ecosystem for CRMOD:

active prime: real time deduplication/dq
anetnna software: mobile devices
big machines: quote building service
blueroads: lead generation
castiron: application integrations
eloqua: marketing
helpstream: self serv
hoovers connect: social networking data
inside view: social information and other news
ribbit: voicemail and softphone in action bar
right90: sales forecasting
savo: document management
vovici
white springs: sales methodology

Demo:looked at opty and launched white springs to see methodology and see contacts and their relationship on decison maker. Site has 3 tabs: methodology, stakeholder analysis, and actions.
Added new contact in CRMOD which has active prime. User was prompted with matching contacts using some fuzzy logic (cusomizable?)

Right90 offers demand forecasting (excel look/feel) change history is captured, can do a ramp up or decay on attributes about the revenue item and spread across the period

Eloqua offers lead scoring for a given program. Leads can be ranked and pushed into CRMOD. in CRMOD, you can drill into the lead and see the eloqua activities (click thru, visited site)

Case study from shoretel (nasdaq SHOR):on premise for call center: account system of record, support/case mgmt

They use CRMOD for lead/oppty management, general sfa, marketing mdf. using big machines, cast iron, and eloqua.

Big machines is a quote building service which creates orders in the back office erp w/ bidierectional status data, they use cast iron which integrates syspro with siebel bidirectionally, only took 10 days to build out. Eloqua for lead generation replaced csv manual entry. configuration/integration done in 45 days

Case study from intelenex:integrated crmod, cast iron, xactly, and big machines
xactly handles the incentive compensation

sfdc is unable to provide integration references!

Oracle World 2008, 9/24, 9 am

Real ROI: Business Case for Upgrading to Latest Release of Siebel

Siebel 7.5.3 ends Dec 10 2008

Justifying upgrade to CIO, CFO based on 5000 users, 7.5. to 8.
Cost table based on ROI calculator on ID 738922.1 on Metalink.
TCO goes from .86 to .67 to .49 (7.5 to 7.7/7.8 to 8.0/8.1) based on effort (person hour) and configuration and operations for one year.
Application Deployment Manager should decrease deployment costs by 75%
Siebel Business Rules engine (code base becomes metadata) should save 5 to 15% in costs
Siebel 8.x improves hardware ROI - 30% scalability w/ current HW
For this scenario, upgrade cost = 550k, maintenance costs go from 2.5 million/yr to 1.3 million/yr. Over 3 yrs, IT/CFO savings are 1.2 million/year. Total 3 yr savings is 3.05 million with payback in 6 months.
Based on:
  • Medium complexity has 80k to 200k lines of scrip and 20 to 40 wf, and 50 to 80 custom bc.
  • Upgrade assessment 65k to 70k
  • Upgrade execution (configure, validate, deploy) go to from 350k to 650k

Using the same use case, what else will you get?
  • Using Real-Time Decisioning in the product
  • Pricing Management
  • AIA/PIP for integration w/ CRMOD

Home Shopping Network Case Study
HSN needed to upgrade w/ no downtime. Siebel is the call center for 2k reps. Converted 400k lines of vb to escript, 30 real time interfaces, 100 batch interfaces. Two step upgrade from 6.2 to 7.8 to 8.0. eSales w/ 250k visitors a day. Business measured as $/min. 2 TB db.

Gradual migration: live w/ 6.2 and 8.0 w/ real time integration for 3 mos.

Used GoldenGate software to assist with synchronization between 2 live Siebel instances. Takes care of conflict resolution at the db layer. Both systems: active/active. This also helps with rollback since systems are both active.

Total was 26months and $8 million budget. 3 month phased rollout. They spent 7 months doing mock upgrades to tune the process. Took 3 months to do the conflict resolution and eScript migration. UAT and Int testing was 4 months. 3 upgrade consultants for 12 months. 40 FTE (Siebel, backoffice, Infrastructure)



UPS New Implementation of Siebel 8
12k call center agents. Replaced multiple call center apps with one global case management system with multiple languages (7!)

Key benefits: reduced AHT (avg handle time), improved work hand-offs and operational efficiencies leading to 21 million in savings over 5 yrs. Took advantage of:
  • Task based UI
  • Case Insensitivity
  • Enhanced Deployment tools
  • New UI look/feel for better user experience
  • Business Rules engine
  • Enhanced SOA capabilities
  • Improved stability
  • Supported path to Oracle Fusion CRM
  • 3 Phase deployment after 3 month feasibility study

Tuesday, September 23, 2008

Oracle World 2008, 9/23, 3pm and beyond!

3:00 pm:

Keynote – Paul Otellini, CEO of Intel

Otellini was pushing the idea that time is money and highlighted all of the industries that Oracle/Intel collaborate in which time = money. Key takeaway: Getting to data faster, processing transactions faster all equate to cost savings, sometimes life savings, if you are a health-care related company.

Rest of the keynote was by Thomas Kurian a vp at Oracle. He showed a lot more of the Fusion apps like BI, Beehive, Content Management and Identity Mangement. Its still somewhat “con-fusion” as far as I can tell. A lot of transitional type apps but the end state is clear: complete, open, and integrated.




Vendor Expo:

The Oracle hands-on demo of CRMOD was enlightening. Very popular booth but I got a few questions in:

How are configurations migrated from stage to prod? Unfortunately transferring configurations is manual from instance to instance.

How configurable is the look/feel? Very. All style sheet driven.

How are territories managed? Assignment manager type application.

How real-time is the analytic dashboards? They are cached for performance reasons but can be refreshed, on-demand.

Are custom objects exposable through the web service framework? Yes, they enable all CRUD functionality even for custom objects. As simple as pushing a button to generate the wsdl.

I saw some of the embedded partner apps and got a better feeling for level of customizations that can be done by listening in on some customer conversations.

Oracle Open World 2008, 9/23, 1 pm

Analytics Roadmap

Sales Analytics - improve pipeline visibilty, forecast accuracy, sales effectiveness

Prebuilt star schemas, pre-mapped metadata for quicker deployments

311 customer center testimonial: public facing bi (CPR) to track City department performance. Underscores getting analytics to the front line.

Hyperion offers desktop gadgets. OBIEE has interactive analytics for the iphone.

Oracle RTD offers predictive customer offerings based on data criteria such as web usage, timing, customer profile, similar customers. Looks to be a solid value add for web content and delivering right-content at the right-time. Self-learning product.

Future directions: pricing management, customer loyalty (profitability, member tier analysis), case analytics.

More iphone enablement!

Oracle World 2008 - 9/23, 11:30 am

Contact Center Best Practices - appears to be a program/project management session and not the technical architecture overview it should be. Very high level and theoretical so far. blah!

Oracle World 2008 - 9/23, 9am

9 am:

CRM On Demand Strategy & Roadmap

CRMOD up 55% in NA and way up through the rest of the globe (several areas over 200%)

Fastest growing in Oracle Apps

Large customers: SONY, BOA, P&G, Kodak, GE, Motorola, NASDAQ

Eloqua is a partner, Hoovers, Cast Iron also

Main areas of focus in CRMOD: Industry solutions, Social Networks, Enterprise Grade SaaS, Social CRM

Architected as "pods" of multi tenancy, rather than one large pool. Better suited for larger org needs. Also include private "pods" or single-tenancy to provide flexibility w/ maintenance windows and client needs. Pods can be kept on site, if required, with monitoring and maintenance done by Oracle. (Not sure if sfdc is doing this!)

Current release (R15) includes: sticky notes, message center, dashboards..

Upcoming releases: deal management, prebuilt CRMOD/On Premise integration, Office 2007 support, custom object analytics & web services. Also in R16, more language support w/ improved analytics and forecasting, greater extensibility and integration. PRM as well.

Industry solutions include media and insurance (must be HIPPA compliant).

Demo of CRMOD: familiar top tabs, left menu bar contains "quick shortcuts" to create accounts, leads, opptys, etc. left bar also includes favorite records and recently viewed. Also includes message center in top left corner and search/find function. Edit layout and Printer Friendly views available. Collapsible sections.
  • ActivePrime CleanEnter for DQ to force search before creating.
  • Social Network built in the Contact details to see relationships and to be introduced, similar to Linked In.
  • Ribbit offers single click softphone to dial.
  • Deal Management offers the "what if" scenario building w/ visual graph depicting results.
  • Basic functions: In line editing, drill downs, preview, search, etc..
  • Custom built objects, such as Events, can be configured to have relationships with other custom built objects.
PRM Demo looks similar to the CRMOD. Allows channel manager and partner to collaborate on oppty/orders.

Industry (insurance) Demo showed more softphone/comm tools. CTI allows the agent to work from anywhere with an internet connection.

Oracle World 2008 - 9/22

9 am:

Amazing cello musician this morning. But w/ all the red lights it was kind of creepy and intense. Keynote was by some oracle executives. Good explanation of where oracle is heading w/ fusion. Definitely looking to help folks out w/ simplifying the product landscape and building out the integrations for you on soa standards. They featured a new oracle collaboration product called Beehive. Looks like they are taking on sharepoint!

Also, Michael Phelps came on stage and answered a few questions. I wonder how much he was paid.


10 am:

I went to a session today called “Achieving Successful International CRM Deployments that Deliver Solid ROI” led by a gentleman who’s worked for BMW and HP. He listed out top reasons why CRM projects fail:

Big Bang Implementations
Lack of Exec Buy-in
No defined Measures of Success
CRM as a IT Project
CRM as a One Time Event
CRM not in line w/ Business Strategy
Lack of Focus on Processes

I couldn’t write the reasons down fast enough but based on my observations it seems that these are in line w/ how my company is taking on our new CRM project.

His rule of thumb on deployments was this: if you can’t do your phase of the CRM project in 6 months, you shouldn’t do it. The thinking was that anything longer and you risk losing momentum and over long periods of time your goals change and even (key) people on the project will change.

He suggested getting voices from local offices into one room periodically to hammer out common processes across geographies. Further, he had a great chart, which I have doodled in my notes, for showing locales where their requirements stand in relation to the rest of the enterprise.

He was big into change management and cited a Harvard Business Review study which said that 87% of CRM projects fail due to lack of change management. He summarized change management w/ a story about JFK visiting a NASA launch and when he asked a janitor what he did there, the janitor replied, “working to put a man on the moon”. Message should be strong from the top and everyone should be aware of the mission.

Other thing he suggested was keeping Oracle involved in projects. Skin in the game will keep them invested in the success of the project.

Final suggestion: use your CRM implementation as a oppty to simplify processes, rather than enable unnecessary complex processes w/ customized technology.




1pm:


I snuck into a session that I hadn’t originally pre-registered. It was a product road map for Siebel on premise and on demand and there was a heavy focus on social network capabilities.

The lecturer described social networking as “disintermediation” where the network stands between you (the business) and customer. The example he gave was a google search for a camera: you’re likely to come across user groups, user reviews, message boards, etc before you come to the brand’s website. This is the disintermediation.

He described the effect of social networks as changing B to C and B to B, to C to B and C to C, with little visibility into the conversations the customer has before he/she arrives at your door.

CRM evolution is seen at oracle as transactions (90s) to analytics (up to last year) to conversations (to 2018). So they are heavily investing in becoming a part of the conversation that disintermediates the customer and business.

They demo’d oracle on demand and show cased some new apps: Deal management, sales library, oracle pulse, and a few others. The oracle pulse was very slick: it blended transactional CRM info w/ data harvested from social networks like Ning, Linked in, etc. The key takeaway was that each of the new apps enables sharing/collaboration, blogging, creating networks within the organization, and other web 2.0 features. They also mentioned that the apps are net-new, meaning they were built from the ground up.

They also demo’d a very slick interactive interface for the iphone, which they are heavily investing in and made several comments about salesforce.com’s inability to provide the same interactivity. Apparently sfdc is screen scraping for the iphone.

Very cool stuff. A shame we are not seriously considering on demand. Would be a great hybrid solution b/c of prebuilt integrations to on premise available (described below). Sfdc can’t be built for both mom and pops and the world’s biggest companies. They’re not going to do both extremes very well.



2:30 pm

Oracle recently launched a product suite called “application integration architecture”. Its basically a prebuilt set of soa compliant connectors for a bunch of their apps (including CRM on demand). BPEL compliant with orchestration and comes loaded w/ best practice processes for common things like (order 2 cash, quote 2 order). Has a few cool features like UPK which provides users help in the context of the process, which may span multiple apps.

The CEO of corizon gave a demo of how his company uses AIA to help customers build mashups of applications. This was a very cool demo and gave a sneak peak into what is coming in the fusion suite: you can break down enterprise apps to very small reusable chunks and mash them together to create a comprehensive composite app.



4pm

I got into another social networking focused CRM session which covered more oracles new apps in depth. The lecturer cited a familiar stat: 50% of all SFA will by SaaS by 2010 (gartner).

The following apps, are great add-ons to your existing CRM (including sfdc). Also worth noting is that they all fit into the whole campaign->lead->oppty->quote->order cycle:

Sales Prospector – will take customer attributes, order history, products sold and run them through an oracle engine to come up w/ predictions for purchases. These leads can then be fed to your CRM. Available today.

Sales Library – allows you to search docs, rate, review, tag, share and upload. Again, all social network context. Available in November.

Sales Campaigns – allows you to manager contact lists, find campaigns within a social network (rate, review, share campaigns) and track effectiveness. Available November.

Deal Management – allows you to do pricing analysis, what if scenarios, price/profit analysis, analyze customer price history and offers some slick charting of pricing against your peers for a given accnt, product.

Gadgets – oracle appears to focused around google’s gadgets and being compatibile w/ google’s igoogle. Will be available in 2nd half of 2008 (soon!). appears to be a separate license. The gadget they demo’d had amazing functionality: it was a list of top accnts, each one had a button to a rss feed, a button to make an outgoing call using your cellphone!, a mashup w/ google finance to get quotes and a link on the accnt name to take you directly to the accnt record in either your on demand or on premise Siebel.

An amazing demo on the iphone using Siebel marketing and a brand loyalty app for the iphone for bath and body works. Imagine going into a store w/ your iphone, getting coupons sent to your phone, being able to redeem loyalty dollars and share the savings w/ a charity or a friend. Iphone displayed a bar code to enable the cashier to apply the discount. No need for your plastic loyalty card!



5:30 pm

This session wasn’t too good. It was more talk about the AIA suite and had a good customer testimonial from a company called Rackable. Basically the same content, but less technical, than the 2pm.

Blogging from Oracle World 2008

Look out for posts from Oracle World 2008. I'm somewhat unplugged so they'll be on slight delay.

Wednesday, September 17, 2008

Picklist Fun

I had a request today from our sys admin related to a pick list. Basically our Invoice Contact pick applet opens and takes the user to the first contact in the list, even if a contact has already been selected. If a contact has already been selected then it seems that the user should see the selected contact highlighted when they open the pick applet. A reasonable request, right?

Turns out there is a property that will do just this. On the picklist, Long List, is defaulted to Y. I believe Siebel defaults this value to improve performance on long picklists. A contact pick list is potentially very long, so you'd have to evaluate setting this property carefully.

Check out Doc ID 520691.1 on supportweb for add'l details!

Tuesday, September 9, 2008

Google Maps and Siebel

It has some limitations but the following link provides a good framework for quickly developing a view showing google maps/news for a selected Account:

http://wiki.oracle.com/page/Mashup+your+CRM+with+Google+maps+in+<+30+minutes?t=anon

I'm exploring other web sites to embed in our app and came across a product called Dipity which could have some value for something like showing Activities in a graphical manner.

Setting the Primary through EAI

We have an inbound EAI service based on a business service that processes a complex Contact message. One of the child elements in the Contact message is the personal address. We've observed that the inbound message, in an upsert, will insert a new address but not mark it as primary for the Contact. Siebel provides a property called "IsPrimaryMVG" which can be sent with the Address record as an element or attribute. However, since we cannot ask our integrated app to send this, nor should we, we have to ammend the incoming message on the fly. This was done by traversing the IOHierarchy and setting the property as follows:

/* Below Code is Required to Parse Opportunity Role & Opportunity Id from Given XML */
if (xmlOutputs.GetChildCount() > 0)
{
MessageElement = xmlOutputs.GetChild(0);
if (MessageElement.GetType() == "SiebelMessage")
{
ListElement = MessageElement.GetChild(0);
if (ListElement.GetType() == "ListOfContact")
{
ContactEle = ListElement.GetChild(0);
if (ContactEle.GetType() == "CEB WebV2 Contact Int")
{
OptyRole = ContactEle.GetProperty("Opty Role");
OptyEle = ContactEle.GetChild(0);
if (OptyEle.GetType() == "ListOf WebV2 Contact Int_Opportunity")
{
OptyIdEle = OptyEle.GetChild(0);
OpportunityId = OptyIdEle.GetProperty("Opty Id");
}
//mwd 090908 added to set address as primary
var PrimaryEle;
var AddrEle;
AddrEle = ContactEle.GetChild(1);
if (AddrEle.GetType() == "ListOf WebV2 Contact Int_Personal Address")
{
PrimaryEle = AddrEle.GetChild(0);
PrimaryEle.SetProperty("IsPrimaryMVG", "Y");
}
//end mwd 090908
}
}
}
}

Key lesson here is that the GetChild(0) is used.

Testing business service w/ XML in simulator

Figured it might be useful to write this down and share. You can use the business service simulator (Site Map -> Business Service Admin -> Business Service Simulator) to test inbound integration based on a business service without the need for a harness or html stub. This is especially useful for debugging the scripts line-by-line. Here are the steps:

1. Find the xml message that you want to test and modify the file such that the xml is all in one line (no line feeds or carriage returns!) like this (it will be pasted into a Siebel field)

2. Log into Siebel as administrator and navigate to the bus svc simulator view.

3. In the Service Methods top applet, click New and select the business service and method you want to test. In this example, I am testing the inbound Contact message.

4. In the Input Property Set applet, type “Inputs” into the Type field and paste the xml you modified in step 1 into the Value field.

5. In the top Service Methods applet click “Run”

6. If you’ve put break points in your code, you can now step through the business service!

Wednesday, September 3, 2008

bad ass upload script

One of our vague requirements was to build into Siebel some upload functionality. Basically an end user should be able to add a csv/txt attachment and have the contents of the file associated to a correspondence record as child records.

To build this, I started with the vanilla correspondence attachment buscomp. This gives us the ability to browse to a csv/txt file (or drag and drop) and have it associated to the Siebel file system. Everything else was custom:

0. add a button to read file and insert contacts
1. check the attachment for valid extension (csv or txt)
2. open the file in memory
3. read line by line
4. parse the line and write to Siebel buscomp fields
5. close the file
6. delete the temp file
7. log any errors
8. attach the log file to the same correspondence record
9. update the attachment record with file processing status

I'll go through each of these high level steps:

1. To check the validity of the file extension a simple function was added to check the attachment buscomp's extension field. If invalid, throw an error and do not proceed.
2. If the file was valid, we passed the attachment id to a business service asynchronously. This business service opens the file and does the processing. I added some nice touches such as multi-select so multiple files could be submitted from the correspondence attachment custom button but here are some key lessons from the development:

a. do not use clib functions b/c there is a known defect related to parsing special chars like accents and umlauts. Instead, use COMCreateObject("Scripting.FileSystemObject") and fso.OpenTextFile(sInputFile, 1)
b. fp.SkipLine() allows you to skip a header row, if your user specifies that one exists
c. fp.ReadLine() allows you take the entire row into memory and use "split" to parse
d. to loop through and write to the child buscomp here is some script:

for(var index = 1; index < sStringArray.length; index++)
{
trim(sStringArray[index]);
sStringArray[index].substring(0,254);
var sFieldName = "Field"+" "+index;
if (index < 11)
{
bcContactListContact.SetFieldValue(sFieldName,sStringArray[index]);
}
else
{
sStatus = "Completed with Error - Check Log for Details ";
Outputs.SetProperty("sStatus", sStatus);
Clib.fprintf(fpLog, "Contact: " + sStringArray[0] + " has too many values to load. Only the first 10 were loaded. \n");
}
}
bcContactListContact.WriteRecord();

e. to remove the temp file that is created on siebsrvr use Clib.remove(sInputFile);
f. to add a log file to the attachment buscomp use AttBC.InvokeMethod("CreateFile", sLogFile, "CorrFileName", "N");

Tuesday, May 20, 2008

CSSBusComp verus CSSBCBase

We're using the correspondence table for a custom purpose and tried to use the Correspondence BC oob. We ran into some issues w/ the bc going read-only when the status on our record was "Submitted." Turns out there was some hard-coding in the class and not an editable BC user prop. So, we changed the BC's class to CSSBusComp, which is the default for any new bus comp. Things looked ok for a while until I noticed that my calculated Name field stopped working. As mentioned in the previous post, this uses some calculated fields and the On Field Update BC user props. So I had a hard look at the config, checked VSS for changes (which was extremely tedious) and came across something in Siebel Tools' Help menu. Turns out some user props are limited to certain BC classes. On Field Update is one of those! So, once I changed the class to CSSBCBase, the calculated Name worked again. Additionally, I discovered that for audit trail to work, you must use CSSBCBase. And for those interested, CSSBCBase is derived from CSSBusComp and inherits its properties.

Monday, May 19, 2008

Using Calculated Fields to Parse Dates

We had a requirement to calculate the name of Campaign based on a few attributes. This was accomplished by using a post default of the calculated field into the stored Name field. Additionally, if any of the attributes changed, we used the On Field Update bc user prop to recalculate the Name. Pretty straightforward except that one of the fields was the Created date field that had to get parsed from the MM/DD/YYYY TIME format to something like YYYY-MM-DD. Here's how it was done:

1. Create 3 new calculated fields to grab the MM, DD, YYYY out of the date
a. Year Calc: JulianYear([Created])-4713
b. Month Calc: JulianMonth([Created])-(JulianYear([Created])*12)
c. Day Calc: Right(Left([Created],5),2)

2. String them together as:
ToChar([CEB Year Calc])+"-"+ToChar([CEB Month Calc])+"-"+(Right(Left([Created],5),2))

Figuring out the Day Calc was not straightforward w/ out-of-the-box (oob) Julian function, so I had to parse it the old fashioned way. In reality, I probably could have parsed the three date elements using Right and Left but there was a nice challenge in using Julians. I had to use some simple algebra to solve for Month since bookshelf presents it in terms of Julian Year. I also like the Julian function b/c it should handle any regional differences in date formats.

Sunday, May 18, 2008

changing the length of a field on bc

we added a custom column on a table and set the column's length to 100. however, on the bc, we only needed our field to be 10 characters. i thought that we'd only have to change the length property on the bc's field, however, unit testing allowed me type 100 chars in that field. did some research and found that a field user prop was required: Text Length Override

name: Text Length Override
value: TRUE

a long time coming

i've been working in the field since august of 2000. fresh out of undergrad with a totally unrelated degree, i landed a great job w/ some great people in boston, ma and have pretty much been learning things the hard way. i'll try to keep some notes about stuff i've learned and post any tips or tricks i come across.