Migrate Biztalk ports to new server - biztalk

I am working on a Biztalk application that has been migrated from 2006 to 2010. What hasn't been recreated are the send and receive ports. Recreating the ports is proving to be tedious. Is there a way to migrate them?

Right-click the application and choose Export -> Bindings.
This will create an XML file with all of the configuration (minus passwords!) on your disk.
Move it to the new server and then right click your application again and choose Import -> Bindings.
This XML file also includes orchestration bindings, schema tracking and so on.
If you just want send/receive ports, delete everything from the XML file that you do not need.
Important: be sure to have the correct adapters/hosts configured before importing the bindings, or you WILL get errors!

Related

Working with IIS on DMZ

Scenario
I have an application that I have been developing for two years. I use the framework .NET to develop it in a language called Oxygene that comes from Pascal.
When I have something new in my code, I publish my application in File System method. I have a couple servers working on Amazon EC2, so I transfer this files to a folder in my IIS Server. In this IIS Server I already have a website that corresponds to my application, so I just replace the old files for the newest files.
I have another server that works as an SQL server.
Last detail is that in my application the user is able to attach files, import pictures, export PDF and Excel files. Attachments and pictures are stored in the same folder the application is located.
Issue
Here is my problem. I have got a new client that is kind of a big client. It seems like this company has a strong IT security, so the application must be located in their servers.
The big problem is that they required my application to be set in the following architecture:
I am used to only use an app server (works for external access) and a SQL server. They want the third server in DMZ net so they can let external access happen. The reason the application can't be placed in the DMZ is because there are the files I mentioned bellow that the user stores in the application. The database stores all the data, but not those files mentioned.
Solutions I have offered, but won't be accepted:
Publishing the application in a IIS server located in the DMZ: That won't be accepted since my application stores user attachments in the same folder the application is located. There are also images stored there.
Publishing the application in the app server, but also publishing a empty application in the DMZ server redirecting to the IIS server inside the LAN: That's the best solution I have come up.
Using a reverse proxy to protect the LAN Net: This is off the table, since reverse proxy is not safe at all.
I am kind of confused because I can't see a way to separate my application in two to make it work in that suggested architecture.
Can anybody give me a hint or ideas of how this would work?
-
You can't "redirect" to inside the LAN, a redirect is a client-side operation, so if the internal server isn't already exposed, you can't redirect someone to it.
A reverse proxy is likely your best bet. Why do you believe it is not safe? This is a tried-and-true solution, it allows you to leave additional ports/services open to internal requests (like a file server, which it sounds like you are trying to expose).
How are these files getting uploaded? Are you using FTP? SMB? HTTP? This solution will not expose those other protocols to the outside world (please don't expose SMB to the outside, it will result in tragedy). Do the external users need to upload these files?

Manage Configuration file access setting from one place

We have single lower environment server where we publish all our applications for Developer testing, pre-business testing etc. Problem we are facing here is all the developers changing settings in the config file for their convenience.
For example, development application should point development SQL db, but they are changing it to QA. and in some cases instead of publishing the application to staging they are changing QA connection strings to staging because publishing to staging requires extra effort (Merging the code to Main branch etc). No matter how many times we send email to development group they keep doing the same thing.
Is there a way to control web.config/app.config edit permissions and limit it to one person based on the application?
If SQL Server Connection String is the problem, you can use cliconfg.exe to set a specific ALIAS, in this case you must configure the alias on each server in your environment (development, test and production), with this, the connection string will always be "Data Source = SRVDBAPP" on the web. config / app.config.
Internally each client SQL Server will redirect to the corresponding database.

What is the ModuleRefCollection for in a BizTalk bindings file?

What is the ModuleRefCollection, and child ModuleRef, Services and TrackedSchema for in a BizTalk binding file?
ModuleRefCollection is the container for the Schemas (TrackedSchemas) and Orchestrations (Services) associated with the Application. A Module being an Assembly for Orchestrations and the special Application ModuleRef for TrackedSchemas.
Note, TrackedSchemas is a slight misnomer. It contains the configuration for all Deployed Schemas, not just tracked Schemas.
Each element contains all the binding information, what you configure in BizTalk Administrator, for it's respective artifact.
So, a Schema element will list all the Properties you have checked on it's Tracking Tab.
A Service element will have all of the Port and Host Bindings for that Orchestration.
It's pretty easy to interpret yourself. Take any Application you have that has one or more Orchestrations and export the Bindings. You'll see everything you've configured in BT Admin reflected there.

do i need to restart biztalk application or just host instance when changing resource?

i'm a newbie in biztalk.
i have data service access dll which are linked to the wcf.
i've just added a new column so i've updated my wcf.
so the next thing would be to update the dll which are already in the GAC.
just wondering if there's any msdn documentation about this?
or what's the best practice here?
and what exactly goes on when you restart host instance vs restarting the application?
thanks
Stopping/starting a BizTalk application simply stops and restarts the associated Receive and Send ports, and prevents the Orchestrations from acting on any pending subscription items. If you go one step further and un-enlist the Orchestration/Send Port, this removes the relevant subscription from the BizTalk Message Box database.
By compiling and deploying a new definition of your WCF datatype, you have changed the assembly within the GAC (all schemas are compiled and represented as .Net datatypes under the hood). To have this change reflected inside the running Host Instance, you would effectively need to alter the existing DLL that is in the .Net AppDomain. The .Net runtime does not support the removal of assembly types from an AppDomain, so you need to stop, and restart the Host Instance to effect this.
Short answer: Restart your Host Instance for any changes in data definition.

Copy table from one data connection and paste into database in another data connection in visual studio

This may be super obvious, but I can't see it. I have a table I created in SQL Server Management Studio. I had to create it there because I needed to use a function for an alpha-numeric ID column that increments itself. I then exported the table, but had to use my local server. Now, in visual studio, I have the local server connection that contains the table I want to copy to a connection for a remote server. I can right-click and select 'Copy', but I can't right-click and 'Paste' into the database I need.
I'm fairly new at this and if anyone has a better way to make an auto incrementing alpha-numeric column in Visual Studio, I would love to hear about it.
Thanks
I would go back into SQL Server Management Studio, connect to the remote server, and create the table there. This would also show you any possible permissions issues that you may have on the remote server.
You will need to update your app.config file in your VB Project.
You can right click on the project and click properties
Under 'Settings' you will find a 'Connection' with a 'Name' and a 'Value'
You need to change the value for 'Connection Properties' for:
Server Name: from LOCALHOST to your remote server url
Also be sure to update username/password credentials
Click 'Test Connection' to confirm you can connect
You can also manually edit these settings in the app.config file
You can also manually edit the MyApp.exe.config file where your app is deployed (where MyApp is the executable name)

Resources