BusinessObjects Board

Migration of webi reports to other environments

In our prod environment ,all our webi reports are saved in there personel folders and some of them saved to corporate documents.

Now we want to migrate the webi reports to other environment. ie back up to production environment.

All webi reports were developed by users by them selves.

How can we migrate / transfer them to other environmnt.


silvi (BOB member since 2005-08-05)

All you can do is copy the files from the storage directory as personal file from one system to another. Then you have to open them up in the destination system and publish them from there.

It’s a really sucky process.


Steve Krandel :us: (BOB member since 2002-06-25)

Hi Guys,

We are currently migrating reports from our 61b environment to 651. We have like over 1000+ reports and we are having to save each one down manually and copying over the folder at the unix level to 651. This was done in a test environment under the supervision of a BO Consultant as well.

Question @ Steve…

Im just curious, on the bigger set ups (multiple clusters running on multiple servers) and if we where talking of a setup with a huge amount of reports and a massive user base, surely there would have to be a simpler process to migrate documents? Havent really looked into how BO stores webi docs, but ive had a root round the directories in UNIX, but nothing that corresponds to documents in the corp docs. Where would the actually document (that is displayed in corp docs) be stored and how would it be referenced by BO Repository? Think if I can understand this, maybe figure out some sort of way to stream line this whole process…

Agreed, it is very very tedious!

Regards,

Imran


IMY (BOB member since 2005-07-20)

Corporate documents are stored in the repository database, personal documents are stored as files on the web server.
However, there are copies of the corporate documents also in the storage folders.

To copy files from one environment to the other, you can write a script.
Wo do it that way here from test-> acceptance -> production

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Hi Gerard,

Many thanks for the reply. Is it possible in that case, that we can move over the current BO 61b repository into a new oracle instance and upgrade this to 651?

Any pointers on where to start looking for webi documents at the Oracle level?

Regards,

Imran


IMY (BOB member since 2005-07-20)

Hi,

I never upgraded (just from 6.5 to Xi, allthough that’s actually a migration), but I was always under the impression that indeed you can copy it over and do an upgrade. I think there should be something in the docs or on BOB about it. Just remember about the bomain.key etc, since they change when migrating to another server.

The documents themselves (as are the universes) are stored as binaries, documents in the table OBJ_X_DOCUMENTS.
I don’t have unix, so don’t know if the file/folder structure is the same, but webi documents can be found when searching on extension .wid.
They generally have an name like 00000004.wid

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Hey Gerard,

Just a suggestion, would like your thoughts on…

If i was to replace the OBJ_X_DOCUMENTS table in BO 651 with the one from our current BO 61b install…

What are you thoughts on this approach?

Sorry, we are migrating all documents to our 651 upgrade from 61b. We are running on UNIX Solaris with an Oracle DW.

Imran


IMY (BOB member since 2005-07-20)

nope, it doesn’t work that way. And messing with the repository means bye bye to suport from BO…you can’t merge the two systems.
I suppose you want it because some of it is already in 6.5 and you don’t want to lose it?

If it’s just universes and documents and it’s a large amount, I would go for a script to pull al the info out of the old repo and push it back into the new environment. You just have to watch out for duplicate names etc…

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Cheers… from what I can gather, there doesnt seem to be an intuitive way to migrate documents :(… Seems we will continue chugging away and opening each document manually, saving it, then exporting it to the new environment!

Oh jolly!

Many thanks for your input tho :)…

Kind Regards,

Imran


IMY (BOB member since 2005-07-20)

Hi,

how many documents are we talking about ?
I can post you the script to save them all in on go, the only thing to do then is saving them in the new environment for the correct groups and categories.

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Hmm approx 700+…

We’ve done most of them now, but would be handy to have a look at the script just to gain more knowledge and understanding of how BO actually handles corp documents. This would be most appreciated and highly regarded.

We are using a naming convention in the personal documents area to make sure we maintain the categories (ie. Category 1, Category 1 - Subcategory1, Category1 - Subcategory2 etc). Again rather tedious…

Thanks again,

Imran


IMY (BOB member since 2005-07-20)

Hi,

I think the code should be like this, but I could have forgotten something since it’s copied from multiple scripts into one…but you’ll get the point


<%
	Function GetVirtualDirectory()

		Dim strVirtualPath, iPosition, iLength

		strVirtualPath = Request.ServerVariables("PATH_INFO")
		iPosition = 1 + InStr(strVirtualPath, "/")
		iLength = InStr(iPosition, strVirtualPath, "/") - iPosition

		GetVirtualDirectory = Mid(strVirtualPath, iPosition, iLength)
	End Function
	Const C_STR_PATH_TO_HSAL = "/bin/iswi.dll"
Dim WIServer
Set WIServer = Server.CreateObject("WebI.Server")
response.write "server<BR>"
response.flush
Dim cdzReportEngine 
Set cdzReportEngine = Server.CreateObject("BusinessObjects.ReportEngine")
response.write "reportengine<BR>"
response.flush
'**********************************
'constants, replace when needed
'**********************************
strRepoType = "corporate"
strCategory = ""
C_STR_DOC_FILTER = "WQY"
strDocType = "wid"
'**********************************************************
'only documents to which the user has access are saved!!!
'**********************************************************
strUserName = "username"
strUserPass = "password"
'*********************************
'get all documents
'*********************************
Set WISession = WIServer.OpenSession(strUserName, strUserPass)
response.write "session<BR>"
response.flush
WISession.Value("DELTA_UTC") = 0
WISession.HSALPath = "/" + GetVirtualDirectory() + C_STR_PATH_TO_HSAL

' Initialize WebIntelligence report engine
cdzReportEngine.Init WISession.SessionID, WISession.Locale
response.write "engine init<BR>"
response.flush

Dim WIDocuments
Set WIDocuments = WISession.OpenAllDocuments(strRepoType) ' , strCategory, C_STR_DOC_FILTER)
response.write "doclist init " &amp; WIDocuments.RepositoryType &amp; "<BR>"
response.flush
Dim WIRecordSetDocuments 
Set WIRecordSetDocuments = WIDocuments.GetRecordset(True)
WIRecordSetDocuments.MoveLast
WIRecordSetDocuments.MoveFirst
' count the documents
iDocumentCount = WIRecordSetDocuments.RecordCount
' loop through documents
response.write iDocumentCount &amp; "<BR>"
response.flush
For iDocument = 0 To (iDocumentCount - 1)
	response.write WIRecordSetDocuments("Name") &amp; "<BR>"
	response.flush
	Set cdzDocument = cdzReportEngine.OpenDocument(WIRecordSetDocuments("Name"), WIRecordSetDocuments("DocId"), strRepoType, strDocType)	
	strEntry = cdzDocument.GetStorageToken()
	Set WIDocument = WISession.GetDocumentFromStorageToken(strEntry)
	WIDocument.SaveAs WIRecordSetDocuments("Name"), True
next
%>
finish

It will open all documents the user has access to, and save them all to his/her personal folder. I think you could take it from there ?

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Hello,

Ahhh many thanks for this Gerard… where on a jsp install tho :(… but suppose we can take the code and reverse engineer into JSP, because I think I see what you are trying to do here.

You’ve written a script which utilises the BO scripting functions and are passing your own parameters to them. Use the login of the user, grab all corp docs save them somewhere. I see the logic… its a custom asp page which does all the hard work!

A differe… sorry its a more intelligent approach to what we are doing :).

Fabolous! Many thanks for this…

Kindest Regards,

Imran


IMY (BOB member since 2005-07-20)

If the documents are in the repository, then you don’t have to do anything. You should make a copy of the repository and then let Supervisor upgrade it.

All other docs (Personal and read Inbox) are stored in the Storage directory of the server. Just copy the whole thing from 1 system to the other. The first time a user uses his Personal Docs directory, it will be “converted” to the 6.5 format.

To be honest, you’re making this way too hard.

To migrate to XI, you don’t have to do much at all except wait. You tell the migration wizard what system to migrate from and it gives you the choice to copy Inbox, Personal and Corporate docs.


Steve Krandel :us: (BOB member since 2002-06-25)

Hi highandstoned,

Great piece of code but are you sure everybody can use it (NT platform i suppose) or you must have WebIntelligence SDK licence ??


bernard timbal :fr: (BOB member since 2003-05-26)

@bernard: sure, anyone can use it. To me knowledge you don’t need a SDK license to create code, but I like to stay away from licensing…
The code itself is in ASP, but anyone with some knowledge converts this to JSP anytime within a snap (could do it for you, but that would be to easy… :lol: )

@steve: copying the repo was already given as solution… :o …don’t know why IMY did it his way. Like I said, we use this kind of code to migrate from test → acceptance → production, where you can’t just copy the repo…

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

hello highandstoned,
you mentioned that
“To copy files from one environment to the other, you can write a script.
Wo do it that way here from test-> acceptance -> production”

Is this a UNIX script that you have done. We have been doing this manual copying over of reports from one environment to the next and its ridiculous.
I am thinking about creating a UNIX script to do this but want to know if there is one out there that someone created already.

Thanks.


di652 (BOB member since 2005-02-24)

sorry to say but it’s in ASP, so a windows environment. Never worked with unix, but I expect it wouldn’t be much different since ASP or JSP isn’t that much different, just don’t know about the file handling in unix.
What we have is an asp page, in which a user can select the documents to transfer. This then saves these documents to the users personal folder (which is an actual file / folder on the webi server). I then rename the file from 0000000.wid to the actual name, reading it from index.
The last step is copying the file from one environment to the other.

We then manually run the document in the other environment to check it, and then save it with the correct category and groups. These last steps could be automated too, but we want the control.

It’s just that don’t know how personal documents are stored on unix, and if a script on the web server (I suppose you use JSP) can copy files over the network.

Regards,

Gerard


highandstoned :netherlands: (BOB member since 2005-08-01)

Hi Guys,

Many thanks Gerard and many thanks Steve!

Steve, after your advice we upgraded the repo, moved over the storage folder, updated the ORBS and hey presto…

All user and corp docs update and migrated into 65!

This is in DEV tho… but thanks to u guys… Bring on PROD baby!

Many thanks for all your input with this guys!

Kindest possible Regards,

Imran


IMY (BOB member since 2005-07-20)